C# 用c编写解析器的最佳/最快方法#
用c语言构建解析器以解析我自己的语言的最佳方式是什么? 理想情况下,我希望提供语法,并将抽象语法树作为输出。 非常感谢,,C# 用c编写解析器的最佳/最快方法#,c#,parsing,abstract-syntax-tree,C#,Parsing,Abstract Syntax Tree,用c语言构建解析器以解析我自己的语言的最佳方式是什么? 理想情况下,我希望提供语法,并将抽象语法树作为输出。 非常感谢,, Nestor您可以学习的源代码。我在这方面有很好的经验。到目前为止,最大的好处是它可以让您编写具有无限前瞻性的LL(*)解析器,这些语法可以是非常不理想的,但是语法可以以最直接和自然的方式编写,而不需要重构来解决解析器限制,而且解析器性能通常不是什么大问题(我希望您不编写C++编译器),尤其是在学习项目中 它还提供了非常好的方法,无需编写任何代码就可以构造有意义的代码——对
Nestor您可以学习的源代码。我在这方面有很好的经验。到目前为止,最大的好处是它可以让您编写具有无限前瞻性的LL(*)解析器,这些语法可以是非常不理想的,但是语法可以以最直接和自然的方式编写,而不需要重构来解决解析器限制,而且解析器性能通常不是什么大问题(我希望您不编写C++编译器),尤其是在学习项目中 它还提供了非常好的方法,无需编写任何代码就可以构造有意义的代码——对于每一个语法产品,您都会指出“关键”标记或子产品,这将成为一个树节点。或者,您可以编写一个生成树 看看下面的ANTLR语法(这里按复杂性增加的顺序列出),以了解它的外观和感觉
- -与树制作
好的一面是,它无处不在。O'reilly有很多关于它的好书,很多示例代码,很多预制语法,还有很多本地语言库。这里有一篇关于构建LL(1)解析器的短文,当然你也可以使用生成器。谢谢。我不是要为c编写解析器,而是为我自己的语言编写解析器,解析器是用c编写的。谢谢你的建议,是的。我看到了。。我喜欢编辑器(根据语法调整语法突出显示)。但是现在使用它还为时过早。。看起来。@Nestor-我同意现在使用它还为时过早,但我认为值得一提。+1供您评论。这是真的。如果奥斯陆是最终版本的话,我会使用它。讽刺的一个很好的方面(至少我认为)是,你可以用c这样的语言编写语法#