词法分析实验报告 实验目的:用c 语言对一个简单语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术
1 词法分析 c
1 实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解
2 实验要求 c
1 待分析的简单语言的词法 (1) 关键字: begin if then while do end 所有关键字都是小写
(2)运算符和界符: : = + - * / < > = ; ( ) # (3):其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义: ID=letter(letter | digit)* NUM=digit digit* (4)空格由空白、制表符和换行符组成
空格一般用来分隔 ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略
2 各种单词符号对应的种别码 单词符号 种别码 单词符号 种别码 Begin 1 : 17 If 2 := 18 Then 3 < 20 While 4 21 Do 5 23 Letter(letter+digit)* 10 >= 24 Digit digit* 11 = 25 + 13 : 26 - 14 ( 27 * 15 ) 28 / 16 # 0 C
3 词法分析程序的功能 输入:所给文法的源程序字符串
输出:二元组(syn,token 或 num)构成的序列
其中:syn 为单词种别码; token 为存放的单词自身字符串; sum 为整型常数
例如:对源程序 begin x:=9; if x>0 then x:=2*x+1/3;end # 的源文件,经词法分析后输出如下序列: (1,begin)(10,’x’)(18,:=)(11,9)(29,;)(2,if)… C 1
3 词法分析程序的算法思