深入浅出编译原理:基于C语言的简单语法分析器设计与实现
发布时间
阅读量:
阅读量
引言
在之前的章节中已经阐述了编译器的前期处理步骤,在这一节详细讲解了编译器的核心功能——词法分析的过程。随后系统地介绍了开发团队如何实现高效的词法分析器方案,并且在这一部分还讨论了语法解析的目标及其工作流程。
语法分析的输入是由一系列词法单元组成的序列。接着基于语言文法的扩展表示方法,并运用有限状态机理论构建抽象语法树结构。随后遍历生成中间代码即三地址码的形式。本节通过实验的方式深入探讨语法分析器的核心实现机制。
5.1实验描述
构建一个基于递归下降的解析器,并完成对词法分词器输出的词汇序列进行语法验证及句法解析的任务。
利用C语言编制递归下降分析程序,并对简单语言进行语法分析。
5.1.1 待分析的简单语言的语法
用扩充的BNF表示如下:
⑴<程序>::=begin<语句串>end
⑵<语句串>::=<语句>{;<语句>}
⑶<语句>::=<赋值语句>
⑷<赋值语句>::=ID:=<表达式>
⑸<表达式>::=<项>{+<项> | -<项>}
⑹<项>::=<因子>{*<因子> | /<因子>
⑺<因子>::=ID | NUM | (<表达式>)
5.1..2 实验要求说明
输入一串单词,并以符号#结束
例如:
输入 begin a:=9; x:=2*3; b:=a+x end #
输出 success!
输入 x:=a+b*c end
全部评论 (0)
还没有任何评论哟~
