编译原理课程设计
一、使用词法分析,语法分析将布尔表达式转换为逆波兰式
二、LL1语法分析程序设计要求(1)对输入文法,它能判断是否为LL1文法,若是,则转(2);否则报错并终止;(2)输入已知文法,由程序自动生成它的LL1分析表;(3)对于给定的输入串,应能判断识别该串是否为给定文法的句型。
三、设计题目:词法自动机设计题目:设计要求:用C语言或其它高级语言对PASCAL子集编制一个一遍扫描的小型编译程序对词法分析,完成识别语言单词的任务。对语法分析,若输入串是文法的句子,则输出语法分析成功,否则,给出错误的行号,错误的性质。语法描述:文法程序→begi
语句串e
d语句串→语句;语句语句→赋值语句条件语句循环语句赋值语句→变量表达式条件语句→if条件the
语句循环语句→while条件do语句条件→表达式关系符表达式表达式→项项项项→因子因子因子因子→变量无符号整数(表达式)无符号整数→数字数字变量→标识符标识符→字母字母数字关系符→字母→abcxyz数字→0129界符→四、设计题目:有限自动机的运行设计题目:设计目的:设计目的:1、理解有限自动机的作用2、利用转态图和状态表表示有限自动机
f3、以程序实现有限自动机的运行过程设计内容:(:(注题目详细要求)设计内容:(注:题目详细要求)利用状态表和有限自动机的运行原理编制程序,使得程序能够识别一个输入串是否为一个有效的符号串,具体可以选择下面之一:无符号定点实数、自然数、整数、十六进制数或其它自己定义的符号串。设计思想:设计思想:本程序实现对无符号定点实数的判断,正确接受,否则不接受。本程序的关键在状态表和缓冲区的运用。首先定义了一个布尔型函数ReadALi
e把输入的字符串送到缓冲区中;然后定义了布尔型函数Ru
和Getchar实现对输入字符串的正确性判断,更改Ru
函数可以改变程序功能:如可将状态表改变成识别“偶数”的有限自动机的状态表。
附录:(完整代码)有限自动机i
cludestdiohi
cludestri
gh状态表相关存储信息:defi
eSTATE_NUMBER4状态数目defi
eCHAR_NUMBER2输入字符的种类d和defi
eDIGIT0输入数字在状态表中位于第0列State为状态表,以整数组形式存放,0123表示状态,1表示没有此状态i
tStateSTATE_NUMBEr