编译原理课程设计求助

 程序实现要求
(1)设计符号表
确定符号表的组织方式,一般应包括名字栏和信息栏,其中名字栏作为关键字。要考虑能够存储有关名字的信息,并可以高效地完成如下操作:
a.查找:根据给定的名字,在符号表中查找其信息。如果该名字在符号表中不存在,则将其加入到符号表中,否则返回指向该名字的指针;
b.删除:从符号表中删除给定名字的表项。
(2)设计词法分析器(也可以使用FLEX生成词法分析器)
设计各单词的状态转换图,并为不同的单词设计种别码。将词法分析器设计成供语法分析器调用的子程序。功能包括:
a. a. 具备预处理功能。将不翻译的注释等符号先滤掉,只保留要翻译的符号串,即要求设计一个供词法分析调用的预处理子程序;
b. b. 能够拼出语言中的各个单词;
c. c. 将拼出的标识符填入符号表;
d. d. 返回(种别码, 属性值)。
(3)语法分析与中间代码产生器(也可以使用BISON生成语法分析程序)
要求用预测分析法、算符优先分析法、SLR分析法,实现对表达式、各种说明语句、控制语句进行语法分析。
若语法正确,则用语法制导翻译法进行语义翻译:对说明语句,要求将说明的各符号记录到相应符号表中;对可执行语句,应产生出四元式中间代码并填写到三地址码表中;
若语法错误,要求指出出错性质和出错位置(行号)。出错处理应设计成一个出错处理子程序。
(5)中间代码生成
可生成基本的四元式表示的中间代码,也可以生成虚拟机规定的汇编语言代码
附录
C-语言编译器的设计
C-Minus (或简称为C-),是一种适合编译器设计方案的语言,包括函数和数组。本质上它是C的一个子集,但省去了一些重要的部分。本部分内容包括,首先,列出了语言惯用的词法,包括语言标记的描述。其次,给出了每个语言构造的BNF描述,同时还有相关语义的描述。最后,给出了C-的示例程序,可以用这两个程序做为输入,检查自己的编译系统的有效性。
1 C-惯用的词法
1. 下面是语言的关键字:
else if int return void while
所有的关键字都是保留字,并且必须是小写。
2. 下面是专用符号:
+ - * / < <= > >= == != = ; , ( ) [ ] { } /* */
3. 其他标记是ID和NUM,通过下列正则表达式定义:
ID = letter letter*
NUM = digit digit*
letter = a|..|z|A|..|Z
digit = 0|..|9
小写和大写字母是有区别的。
4. 空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。
5. 注释用通常的C语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套。

第1个回答  2008-11-16
OMG....
好像我们马上要交了。。
相似回答