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

Parsing 解析解释编程语言的过程是什么?,parsing,interpreted-language,Parsing,Interpreted Language,我想知道创建语法树的最佳方法是什么。与任何其他语言都没有区别,真的。解释语言和编译语言的区别主要在于后端,而不是前端。特定语言可能有特定的解析要求,但是在两类语言之间无法进行解析技术的有意义的比较。 < p>您没有列出语法分析器的语言要求,因此如果C或C++是可能的,则应该从YACC:开始。 Yacc为您的特定语法生成一个C解析器。开始这项工作可能会有一点额外的工作,但一旦你把事情做好,它应该会更容易维护 免责声明:我只在一个项目中使用过yacc,这是10多年前的事了,因此您的理解可能会有所不同

我想知道创建语法树的最佳方法是什么。

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

< p>您没有列出语法分析器的语言要求,因此如果C或C++是可能的,则应该从YACC:

开始。 Yacc为您的特定语法生成一个C解析器。开始这项工作可能会有一点额外的工作,但一旦你把事情做好,它应该会更容易维护


免责声明:我只在一个项目中使用过yacc,这是10多年前的事了,因此您的理解可能会有所不同。

以下是关于LLVM项目中(AST)的一些解释

挑逗者:

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


学习编写编译器和解释器的标准堆栈溢出资源是

当你在谷歌上搜索“解析”时,你发现了什么?大多数解释语言解析都是开源的。你可以简单地下载它们。你需要知道什么?你在说什么语言?O'Reilly刚刚出版了一本关于flex和bison的书,这是lex和yacc的GNU等价物(ISBN 978-0596155971)。Flex和bison比lex和yacc更容易处理。