解析解释型编程语言的过程是什么?

发布于 2024-08-15 15:14:12 字数 24 浏览 6 评论 0原文

我想知道如何创建语法树的最佳方法。

I would like to know how is the best way to create the syntax tree.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

你对谁都笑 2024-08-22 15:14:12

用于学习编写编译器和解释器的标准 Stack Overflow 资源是学习编写编译器

The standard Stack Overflow resource for learning to write compilers and interpreters is Learning to write a compiler

只想待在家 2024-08-22 15:14:12

以下是 LLVM 项目中关于抽象语法树 (AST) 的一些解释。

预告片:

程序的 AST 以一种易于编译器后续阶段(例如代码生成)解释的方式捕获其行为。我们基本上希望语言中的每个构造都有一个对象,并且 AST 应该对语言进行紧密建模。

Here is some explanation about abstract syntax trees (AST) from the LLVM project.

Teaser:

The AST for a program captures its behavior in such a way that it is easy for later stages of the compiler (e.g. code generation) to interpret. We basically want one object for each construct in the language, and the AST should closely model the language.

ζ澈沫 2024-08-22 15:14:12

真的,与任何其他语言没有什么不同。解释型语言和编译型语言之间的区别主要在于后端,而不是前端。特定的语言可能有特定的解析要求,但是您无法对两类语言的解析技术进行有意义的比较。

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.

压抑⊿情绪 2024-08-22 15:14:12

您没有列出解析器的语言要求,因此如果可以使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文