我正在寻找“分词器”、“解析器”和“词法分析器”的明确定义以及它们如何相互关联(例如,解析器是否使用分词器,反之亦然)?我需要创建一个程序将通过 c/h 源文件来提取数据声明和定义。
我一直在寻找示例并且可以找到一些信息,但我真的很难掌握语法规则、解析树和抽象语法树等基本概念以及它们如何相互关联。最终这些概念需要存储在实际的程序中,但是 1)它们是什么样的,2)是否有常见的实现。
我一直在查看有关这些主题和程序(例如 Lex 和 Yacc)的维基百科,但从未上过编译器课程(EE 主修),我发现很难完全理解正在发生的事情。
分词器通常通过查找空白(制表符、空格、换行符)将文本流分解为标记。
词法分析器基本上是一个标记生成器,但它通常会为标记附加额外的上下文——这个标记是一个数字,那个标记是一个字符串文字,另一个标记是一个相等运算符。
解析器从词法分析器获取标记流,并将其转换为代表由原始文本表示的(通常)程序的抽象语法树。
上次我查了一下,关于这个主题的最好的书是《编译器:原理、技术和工具》通常简称为“龙书”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)