编译原理课程设计-词法分析器的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四 、模块设计
下面是程序的流程图
五 、 程序介绍
在程序当前目录里建立一个文本文档,取名为infile.txt,所有需要分析的 程序都写在此文本文档里,程序的结尾必须以“@”标志符结束。程序结 果输出在同一个目录下,文件名为outfile.txt,此文件为自动生成。本程 序所输出的单词符号采用以下二元式表示:(单词种别,单词自身的 值)如程序输出结果 (57,"#")(33,"include")(52,"<")(33,"iostream") 等。 程序的功能:(1) 能识别C语言中所有关键字(共32个)(单词种别
三 、程序分析
词法分析是编译的第一个阶段,它的主要任务是从左到右逐个字 符地对源程序进行
扫描,产生一个个单词序列,用以语法分析。词法分析工作可以 是独立的一遍,把字符流的源程序变为单词序列,输出在一个中
间文件上,这个文件做为语法分析程序的输入而继续编译过程。 然而,更一般的情况,常将词法分析程序设计成一个子程序,每 当语法分析程序需要一个单词时,则调用该子程序。词法分析程 序每得到一次调用,便从源程序文件中读入一些字符,直到识别 出一个单词,或说直到下一个单词的第一个字符为止。
58
return 18 break 48 << 59
union 19
static
49 >> 60
const 20

61
分别为1 — 32 ,详情见程序代码相关部分,下同) (2) 能识别C语言中自定义的标示符 (单词种别为 33)
(3) 能识别C语言中的常数 (单词种别为0) (4) 能识别C语言中几乎所有运算符(单词种别分别为41 —
54) (5) 能识别C语言中绝大多数界符 (单词种别分别为 55 — 66)
29 (
52 % 40
case 12 sizeof 30 )
53 标识 1 符
enum 13 volatile 43 ;
54 常数 2
register 14 auto
44 [
55
typedef 15 double 45 ]
56
char 16 int
46 {
57
extern 17 struct 47 }
5
unsigned 23 *
33 ,
64
while 6
continue 24 /
34 :
65
do
7
for
25 <
35 >= 39
begin 8
signed 26 >
36 <= 38
end
9
void
27 =
37 == 41
long 10 default 28 :=
51 != 42
switch 11 goto
二. 设计中相关关键字说明
1. 基本字:也称关键字,如C语言中的 if , else , while , do ,for,case,break, return 等。
2. 标志符:用来表示各种名字,如常量名、变量名和过程名等。 3. 常数:各种类型的常数,如12,6.88,和“ABC”等。 4. 运算符:如 + ,- , * , / ,%, < , > ,<= , >= 等。 5. 界符,如逗点,冒号,分号,括号,# ,〈〈 , 〉〉等。
六 、运行结果 输入文件infile.txt 运行结果(输出文件 outfile.txt) 七 、 设计体会 八、附录部分(程序代码)
单词符 类别编 单词符号 类别编 单词符 类别 单词 类别


码号
编码 符号 编码
if
3
float
21 +
31 #
62
then 4
来自百度文库
short
22 -
32 .
63
else
词法分析器的设计
1. 设计说明及设计要求
一般来说,整个过程可以划分为五个阶段:词法分析、语法分析、 中间代码生成、优化和目标代码生成。本课程设计即为词法分析阶段。 词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一 个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分 解,从而识别出一个个单词(也称单词符号或符号)。如保留字(关键 字或基本字)、标志符、常数、算符和界符等等。
相关文档
最新文档