编译原理课设
已有的文法 G(L):
主程序结构
L->main {DL; SL; PL;}
变量声明语句序列
DL->DD’
D’->;DD’|ε
D->T id
T->int | float | chars
赋值语句序列
SL->SS’
S’->;SS’|ε
S->id=E
计算表达式语句序列
E->TE’
E’->+TE’|-TE’|ε
T->FT’
T’->*FT’|/FT’|ε
F->变量 | 整常量 | 带小数点的常量 | ’字符’
输出语句序列
PL->PP’
P’->;PP’|ε
P->print id
词法分析(30 分)
一:要求能识别如下成分
1. 要求能识别的关键字
定义数据类型的:int, chars ,float
定义主程序的:main
定义输出的:print
2. 要求能识别整常量、带小数点的常量、字符常量,变量
3. 要求能识别+ - * / = ; {} ’ 这些运算符号和界符
二:要求能根据上面说明的所有词法成分显示编译程序会使用的种别编码表
三:要求能对输入的一段文本程序依次输出其词法成分的各种别编码和属性值:
1. 对关键字、运算符和界符,输出其种别编码,属性值为空;
2. 对常量,输出其种别编码和常量的值;
3. 对变量,输出其种别编码和变量名;
4. 如果不在规定的词法成分中则报错。
语法分析(50 分)
1. 使用词法分析种别编码表中各个运算符、变量和常量的种别编码替换掉文法 G(L)中的
各个运算符、变量和常量(如果有必要,其他的符号也可以用你认为方便的形式替换)