《编译原理》上机实验报告
计算机科学与技术班---上机一
成员: 00713009—商梦德 00713024—赵斌
00713029—吕亮亮 00713036—张国栋 00713058--张衍
一、 题目
编写编译程序实现多行表达式的<表达式序列>的文法语言的编
译执行
二、 设计和主要结构
1 词法分析
(1) 识别一般标识符,此标识符值(字符序列)赋给全局量 id,而全局
量 sym 赋值为 SYM_IDENTIFIER。
(2) 识 别 数 字 序 列 , 当 前 值 赋 给 全 局 量 NUM , sym 则 置 为
SYM_NUMBER;
(3) 识 别 = , 回车之类 的 特 殊 符 号 , 全 局 量 sym 则分 别 被 赋 值 为
SYM_BECOMES,SYM_CONTINUE 等。
(4) 在该程序的实现中,我们将标准函数作为保留字使用,即创建四个保留
字,分别是 sin,cos,tan,exp
相关过程(函数)有 getsym(),getch(),其中 getch()为获取单个字符
的过程,除此之外,它还完成:
(1) 识别且跳过行结束符;
(2) 产生一份程序列表,输出相应行号或指令计数器的值。
2 语法分析
我们采用递归下降的方法来设计编译器。以下我们给出该语言的 FIRST 和
FOLLOW 集合。
非终结符(S)
FIRST(S) FOLLOW(S)
表达式
+ - ( ident number
) 回车