解析解释型编程语言的过程是什么?
我想知道如何创建语法树的最佳方法。
I would like to know how is the best way to create the syntax tree.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想知道如何创建语法树的最佳方法。
I would like to know how is the best way to create the syntax tree.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
用于学习编写编译器和解释器的标准 Stack Overflow 资源是学习编写编译器
The standard Stack Overflow resource for learning to write compilers and interpreters is Learning to write a compiler
以下是 LLVM 项目中关于抽象语法树 (AST) 的一些解释。
预告片:
Here is some explanation about abstract syntax trees (AST) from the LLVM project.
Teaser:
真的,与任何其他语言没有什么不同。解释型语言和编译型语言之间的区别主要在于后端,而不是前端。特定的语言可能有特定的解析要求,但是您无法对两类语言的解析技术进行有意义的比较。
No different from any other language, really. The difference between interpreted and compiled languages is primarily in the backend, not the frontend. Specific languages may have specific parsing requirements, but you can't make a meaningful comparison in parsing technologies between the two classes of languages.
您没有列出解析器的语言要求,因此如果可以使用 C 或 C++,您应该首先查看 yacc: http://en.wikipedia.org/wiki/Yacc
Yacc 为您的特定语法生成一个 C 解析器。开始使用这可能需要一些额外的工作,但是一旦你开始使用它,它应该更容易维护。
免责声明:我只在一个项目中使用过 yacc,而且那是 10 多年前的事了,所以你的情况可能会有所不同。
You don't list a language requirement for your parser, so if C or C++ is a possibility, you should start by looking at yacc: http://en.wikipedia.org/wiki/Yacc
Yacc generates a C parser for your specific syntax. Getting started with that might be a little extra work, but once you get the thing up and rolling, it should be easier to maintain.
Disclaimer: I have only used yacc in one project and it was 10+ years ago, so your milage may vary.