【发布时间】:2021-09-13 19:34:41
【问题描述】:
如何使用具体语法树解析文件并生成抽象语法树?
我在这篇关于 ungrammar 的博文中看到了具体的语法树。但是我不知道如何构建解析器。
【问题讨论】:
-
您要解析什么语言?生锈本身?如果是这样,您是否有某些原因不想使用syn?
-
我正在从头开始构建自己的。 CST 似乎是一个不错的起点。
-
你的问题没有多大意义。语法树(无论是具体的还是抽象的)是您的语言中某些文档的解析表示。如果您已经拥有文档的 CST,那么该文档必须已经被解析(并且获得 AST 只是在转换过程中“降低”CST 的情况)。所以“使用 CST 解析文件”只是一派胡言——不清楚您是在问如何构建解析器以生成 CST/AST,还是如何构建可以将 CST 降低为 AST 的工具?
-
我忘了提...如果您正在寻找 Rust 的语法,并且不关心它是如何精确派生的,或者它是否是最新的,那么您可以使用this,采用 Antlr4 语法,并将其转换为适合其他解析器生成器、组合器或手动实现的形式。
标签: parsing rust abstract-syntax-tree concrete-syntax-tree