- 1 - 计算机科学与工程系 编译原理课程设计实验报告 姓名:__ ******__ 学号_ *******__ 年级专业及班级___08 计算机科学与技术 成绩 实验名称 词法分析程序设计与实现 完成日期 2011/4/12 指导教师 ******* 实验目的:能够采用C 编程语言实现简单的词法分析程序;设计、编制并调试一个词法分析程序,加深对词法分析原理的理解 实验要求: 1. 对单词的构词规则有明确的定义; 2. 编写的分析程序能够正确识别源程序中的单词符号; 3. 识别出的单词以<单词符号,种别码>的形式保存在符号表中(链表); 4. 词法分析中源程序的输入以.c 格式,分析后的符号表,将二元组保存在.txt 文件中。 实验内容:选择高级语言(C 语言),编制它的词法分析程序。词法分析程序的实现可以采用任何一种编程工具 实验原理:1、算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号; 2、其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 实验分析:(1)关键字:if else while do case int break 等所有的关键字都是小写。 (2)运算符和界符: = + - * / < <= <> > >= = ; ( ) 等 (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义: ID = _ | letter (letter | digit)* NUM = digit digit* (4)空格有空白、制表符和换 行 符组成。空格一般 用来 分隔 ID、SUM、运算符、界符和关键字,词法分析阶 段 通常被 忽 略 。 (5)注 释 被 忽 略 (6)各 种单词符号对应的种别码(如 下): 单词符号 种别码 单词符号 种别码 au to 1 dou ble 2 int 3 stru ct 4 break 5 else 6 - 2 - long 7 switch 8 case 9 enum 10 register 11 typedef 12 char 13 extern 14 return 15 union 16 const 17 float 18 short 19 unsigned 20 continue 21 for 22 signed 23 void 24 default 25 goto 26 sizeof 27 volatile 28 do 29 while 30 static 31 if 32 \a 33 \b 34 \f 35 \n 36 \t 37 \v 38 \\ 39 \? 40 \’ 41 \” 42 \0 43 \ddd 44 \ xhh 45 数字 46 标识符 47 # 48 ( 49 ) 50 - 3 - [ 51 ] 52 { 53 } 54 ‘ 55 * 56 : 57 ~ 58 % 59 ^ 60 + 61 ? 62 = 63 | 64 & 65 !...