编译原理课程设计LL文法的判定.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课程设计LL文法的判定

课程设计报告 课程: 编译原理课程设计 学号: 姓名: 班级: 教师: 时间: 2015.05.20-2015.07.02 计算机学院 设计名称: LL(1)文法的判定(假设文法符合的First和Follow集已/未知) 设计内容、目的与要求: 设计内容 LL(1)文法的判定(假设文法符合的First和Follow集已/未知)根据LL(1) 分析法编写一个语法分析程序,可根据自己实际情况,选择以下一项作为分 析算法的输入: a.直接输入根据已知文法构造的分析表M; b.输入文法的FIRST(α)和FOLLOW(U)集合,由程序自动生成文法的分析表M; c.输入已知文法,由程序自动构造文法的分析表M。 所开发的程序可适用于不同的文法和任意输入串,且能判断该文法是否为 LL(1)文法。 (3)如完成前两项,可增加运行实例,对于输入的文法和符号串,所编制的 语法分析程序应能正确判断此串是否为文法的句子,并要求输出分析过程。 要求: 输入文法,输出判定该文法是否是LL(1)的。 计划与进度安排: 5月20日—5月23日:查阅资料,进一步掌握LL(1)文法的定义,掌握LL(1)分析法及其原理; 5月24日—5月26日:分析题目,画出系统的流程图; 5月27日—5月29日:根据流程图,将系统功能划分成各个不同的模块; 5月30日—5月31日:根据不同的模块,设计与其相对应的函数,并依据分析函数的功能设置函数的参数和返回值; 6月1日—6月2日:根据上一步的各个函数,编写对应的代码; 6月3日—6月4日:对各个函数进行编译和检查; 6月5日—6月6日:编写程序执行的入口函数main()函数,通过调用各个函数,实现整个程序的基本功能; 6月7日—6月8日:编写程序执行的入口函数main()函数,通过调用各个函数,实现整个程序的基本功能; 6月9日—6月10日:编译整个程序,并根据调试信息进行相应的修改,同时 设计相关的文法进行测试,检查程序是否满足设计要求; 6月11日—6月12日:使用不同的实例进行测试,同时修改并完善设计; 6月13日—7月2日:完成设计并答辩。 设计过程、步骤(可加页): 数据结构设计 数据结构设计的合理性直接关系着系统功能的实现方便与否。本系统的数据结构包含全局变量的定义和一位数组以及二维数组的定义。 int count=0; /*分解的产生式的个数*/ int number; /*所有终结符和非终结符的总数*/ char start; /*开始符号*/ char termin[50]; /*终结符号*/ char non_ter[50]; /*非终结符号*/ char v[50]; /*所有符号*/ char left[50]; /*左部*/ char right[50][50]; /*右部*/ char first[50][50],follow[50][50]; /*各产生式右部的FIRST和左部的FOLLOW集合*/ char first1[50][50]; /*所有单个符号的FIRST集合*/ char select[50][50]; /*各单个产生式的SELECT集合*/ char f[50],F[50]; /*记录各符号的FIRST和FOLLOW是否已求过*/ char empty[20]; /*记录可直接推出^的符号*/ char TEMP[50]; /*求FOLLOW时存放某一符号串的FIRST集合*/ int validity=1; /*表示输入文法是否有效*/ int ll=1; /*表示输入文法是否为LL(1)文法*/ int M[20][20]; /*分析表*/ char choose; /*用户输入时使用*/ char empt[20]; /*求_emp()时使用*/ char fo[20]; /*求FOLLOW集合时使用*/ int dg=0; /*标志输入文法是否是由有递归的文法哈成的LL()*/ 函数设计及其说明 (1)int in(char c,char *p) 功能:判断一个字符是否在指定字符串中 说明:若该字符在指定字符串中,函数返回1;否则返回0。 (2)void MM() 功能

文档评论(0)

beoes + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档