文档不可少的内容:
1. 实现原理。
2. 算法思想以及算法流程图。
3. 程序中主要函数和子函数功能说明以及其调用关系图。
4. 程序**及运行结果。
5. 心得体会。
参考题目一:
1. 题目: 从右线性文法构造与之等价的有限自动机的程序实现。
设计内容及要求:构造一转换程序,实现将用户任意给定的右线性文法,转换为与之等价的有限自动机fa m,输出其状态转换矩阵(显示输出或输出到文件中)。
2. 题目: 从有限自动机构造与之等价的右线性文法的程序实现。
设计内容及要求:构造一转换程序,实现将用户任意给定的有限自动机fa m,转换为与之等价的右线性文法,显示输出或输出到文件中。
3. 题目: 从nfa构造与之等价的正规式r的程序实现。
设计内容及要求:对给定的任意nfa m(其状态转换矩阵及初态、终态信息分别保存在指定文件中)。构造一程序,从nfa构造与之等价的正规式r,并显示输出。
4. 题目: 把nfa确定化为dfa 的算法实现。
设计内容及要求:构造一程序,实现:将给定的nfa m(其状态转换矩阵及初态、终态信息保存在指定文件中),确定化为dfa m’。
(要先实现ε-closure函数和ia函数)。输出dfa m’(其状态转换矩阵及初态、终态信息保存在指定文件中)。
5 ll(1)分析过程模拟。
设计内容及要求:对于任意输入的一个ll(1)文法,构造其**分析表。要求:
首先实现集合first(x)构造算法和集合follow(a)构造算法,再实现教材p.79给出的**分析表构造算法,最后能够对任意的句子进行ll(1)分析,程序显示输出**分析表和ll(1)分析过程或输出到指定文件中。
5. 题目: 识别文法活前缀的dfa构造程序的实现。
设计内容及要求:构造一程序,对任意给定的文法g:①构造并输出g的所有lr(0)项目规范簇;②构造并输出识别文法活前缀的dfa(输出其状态转换矩阵)。
6. 题目: lr(0)分析器自动构造程序的实现。
设计内容及要求:对任意给定的文法g,构造识别文法活前缀的dfa,输出dfa的状态转化矩阵及lr(0)项目集规范族;实现lr(0)分析表构造算法;实现lr分析器总控程序。程序输出一个完整的lr(0)分析器源程序,可输出到指定文件中。
7. 题目: s lr(1)分析器自动构造程序的实现。
设计内容及要求:对任意给定的文法g构造lr(0)项目集规范族(要求实现closure(i)、go(i,x)、first(集合first的构造方法参见教材p.78);然后实现slr(1)分析表构造算法,并输出slr(1)分析表,以及其对某个句子的分析过程。
以下有六个课程设计题目,要求学生从中选择一个题目做本次课程设计。
问题描述】设计一个由正规文法生成first集和follow集并进行简化的算法动态模拟。(算法参见教材)
基本要求】动态模拟算法的基本功能是:
1) 输入一个文法g;
2) 输出由文法g构造first集的算法;
3) 输出first集;
4) 输出由文法g构造follow集的算法;
5) 输出follow集。
测试数据】输入文法:
e->te’
e’->te’|ε
t->ft’
t’->ft’|ε
f->(e)|i
实现提示】用数据库存储多行文法,用list控件显示算法,用grid类依据算法进行作图。并实现算法与生成过程的关联。
问题描述】设计一个给定ll(1)分析表,输入一个句子,能由依据ll(1)分析表输出与句子对应的语法树。能对语法树生成过程进行模拟。(算法参见教材)
基本要求】动态模拟算法的基本功能是:
1) 输入ll(1)分析表和一个句子;
2) 输出ll(1)总控程序;
3) 输出依据句子构成的对应语法树的过程;
测试数据】输入句子:i*i+i
输入ll(1)分析表。
实现提示】用结构体数组存储多行正规式,用list控件显示算法,用cdc类依据进行算法进行作图。并实现算法与生成过程的关联。
【问题描述】
设计一个由正规文法生成firstvt集和lastvt集的算法动态模拟。(算法参见教材)
基本要求】动态模拟算法的基本功能是:
1) 输入一个文法g;
2) 输出由文法g构造firstvt集的算法;
3) 输出firstvt集;
4) 输出由文法g构造lastvt集的算法;
5) 输出lastvt集。
测试数据】输入文法:
e->te’
e’->te’|ε
t->ft’
t’->ft’|ε
f->(e)|i
实现提示】用数据库存储多行文法,用list控件显示算法,用grid类依据算法进行作图。并实现算法与生成过程的关联。
问题描述】设计一个给定文法和对应的firstvt和lastvt集,能依据依据文法和firstvt和lastvt生成算符优先分析表。(算法参见教材)
基本要求】动态模拟算法的基本功能是:
1) 输入一个给定文法,及firstvt和lastvt集;
2) 输出算符优先分析表生成算法;
3) 输出算法优先分析表构造过程的过程;
测试数据】输入文法:
e->te’
e’->te’|ε
t->ft’
t’->ft’|ε
f->(e)|i
实现提示】用结构体数组存储多行正规式,用list控件显示算法,用cdc类依据进行算法进行作图。并实现算法与生成过程的关联。
问题描述】设计一个给定算符优先分析表,输入一个句子,能由依据算符优先分析表输出与句子对应的语法树。能对语法树生成过程进行模拟。(算法参见教材)
基本要求】动态模拟算法的基本功能是:
1) 输入算符优先分析表和一个句子;
2) 输出算符优先分析总控程序;
3) 输出依据句子构对应的语法树的过程;
测试数据】输入句子:i*i+i
输入算符优先分析表。
实现提示】用结构体数组存储多行正规式,用list控件显示算法,用cdc类依据进行算法进行作图。并实现算法与生成过程的关联。
问题描述】设计一个给定lr分析表,输入一个句子,能由依据lr分析表输出与句子对应的语法树。能对语法树生成过程进行模拟。(算法参见教材)
基本要求】动态模拟算法的基本功能是:
1) 输入lr分析表和一个句子;
2) 输出lr总控程序;
3) 输出依据句子构对应的语法树的过程;
测试数据】输入句子:i*i+i
输入lr分析表。
实现提示】用结构体数组存储多行正规式,用list控件显示算法,用cdc类依据进行算法进行作图。并实现算法与生成过程的关联。
也可自己结合感兴趣知识点自行命题,鼓励创新性设计。
级编译课程设计题目
课程设计题目 1 d类 11.符号串的最左推导和最右推导 1 2.基本块的划分 1 3.循环查找 1 4.符号表的线性组织 2 5.符号表的排序组织 2 c类 21.构造语法树 2 2.符号表的散列组织 2 3.pl 0语言的词法分析程序 3 4.非ll 1 文法到ll 1 文法的等价变换 3 5....
编译原理课程设计大纲
编译原理 课程设计指导书。一 课程设计的目的 编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修课。为了让学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识,提高...
编译原理课程设计报告
编译原理课程设计 报告。minic编译器设计与实现。分组序号 13 设计地点 微301 文理楼110 电子邮件 分组成绩 任课教师 李村合。2014 年 12 月19 日。6.2 测试程序2 9 6.3 测试程序3 9 6.5 测试结果2 13 6.6 测试结果3 16 1 课程设计目的。1 根据所...