编译原理实验内容
实验一(4学时)
1、实验名称 :简易C语言词法分析器的设计与实现 2、实验目的
(1)掌握C语言单词符号的划分、正规式、状态转换图及词法分析器的实现。 (2)掌握词法分析程序的作用。 3、实验要求
(1)对任给的一个C语言源程序,能够滤掉空格、回车换行符、tab键及注释。 (2)识别各类单词符号,如关键字、标识符、运算符、常数、界符,结果以二元式形式输出,并构造符号表。
(3)输出有词法错误的单词及所在行号。(在此阶段只能识别有限的词法错误) 4、实验原理
根据扫描到的单词符号的第一个字符的种类,分别转到相应的程序进行处理。这些程序的功能就是识别以相应字符开头的各类单词符号。 5、实验步骤
(1)根据C语言各类单词的正规式,构造能识别各类单词的状态转换图。 (2)根据状态转换图,构造识别各类单词的词法分析器。
实验二(4学时)
1、实验名称 :简易C语言语法分析器的设计与实现 2、实验目的
(1)掌握语法分析程序的任务
(2)掌握自上而下语法分析程序的思想和工作过程。 3、实验内容
设计及实现能够识别表达式的预测分析程序。
文法如下:
G[E]:E->E+T|T T->T*F|F F->(E)|i
4、实验要求
(1)对已给的一个二元式形式的表达式,能够检查有无语法错误,并指出出错位置。
(2)将表达式的语法树输出(或将语法分析过程输出)。 5、实验原理
预测分析程序框图
6、实验步骤
(1)根据文法构造语法分析表。 (2)编写总控程序实现语法分析。
实验三(6学时)
1、实验名称 :算符优先文法分析和语义分析 2、实验目的
(1)掌握自下而上语法分析程序的思想和工作过程。 (2)掌握语义分析程序的工作过程和方法 3、实验内容
设计及实现能够识别表达式的算符优先分析程序。
文法如下: G[E]:E->E+T|T T->T*F|F F->(E)|i 4、实验要求
(1)对已给的一个二元式形式的表达式,能够检查有无语法错误,并指出出错位置。
(2)将表达式的语法树输出(或将语法分析过程输出)。 (3)对表达式进行语义分析 5、实验原理
算法优先分析程序框图
6、实验步骤
(1)根据文法构造算符优先关系表。 (2)编写总控程序实现语法分析。
(3)构造文法的属性文法,编写程序实现语义分析