编译原理课程设计
一、使用词法分析,语法分析将布尔表达式转换为逆波兰式
二、LL(1)语法分析程序
设计要求
(1)对输入文法,它能判断是否为 LL(1)文法,若是,则转(2);否则报错并终止;
(2)输入已知文法,由程序自动生成它的 LL(1)分析表;
(3)对于给定的输入串,应能判断识别该串是否为给定文法的句型。
三、设计题目:词法自动机
设计要求:
用 C 语言或其它高级语言对 PASCAL 子集编制一个一遍扫描的小型编译程序对词法分析,
完成识别语言单词的任务。对语法分析,若输入串是文法的句子,则输出语法分析成功,否
则,给出错误的行号,错误的性质。
语法描述:
文法: <程序>→begin <语句串> end
<语句串>→<语句> { ;<语句> }
<语句>→<赋值语句> | <条件语句> | <循环语句>
<赋值语句>→<变量> := <表达式>
<条件语句>→if <条件> then <语句>
<循环语句>→while <条件> do <语句>
<条件> →<表达式><关系符><表达式>
<表达式>→<项> { + <项> | — <项> }
<项>→<因子> { * <因子> | / <因子> }
<因子>→<变量> | <无符号整数> | ( <表达式> )
<无符号整数>→<数字> { <数字> }
<变量>→<标识符>
<标识符>→<字母> { <字母> | <数字> }
<关系符>→ < | <= | > | >= | = | < >
<字母>→ a | b | c | ... | x | y | z
<数字>→ 0 | 1 | 2 | ... | 9
<界符>→ , | ; | ( | ) | ......
四、设计题目:有限自动机的运行
设计目的:
1、 理解有限自动机的作用
2、 利用转态图和状态表表示有限自动机