- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
syntaxanalyzer设计报告
SyntaxAnalyzer设计报告 范成 040648 2004级计算机4班 一、课题问题描述 1. 根据算符优先分析算法,编写一个语法分析程序,可以选择以下三项之一作为分析算法中的输入: (1)直接输入根据已知文法人工构造的算法优先关系矩阵; (2)输入已知文法和FIRSTVT、LASTVT集合,由程序自动生成该文法的算法优先关系矩阵; (3)输入已知文法,由程序自动生成该文法的算法优先关系矩阵。 2. 程序具有通用性,即所编制的语法分析程序能够适用于不同文法以及各种输入单词串,并能判断该文法是否为算符文法和算符优先文法。 3. 对输入的一个文法和一个单词串,程序能正确判断此单词串是否为该文法的句子,并要求输出分析过程。 二、基本思想描述 语法分析前首先要对输入的文法和句子进行词法分析,去除多余的字符(空格、回车符等),并将产生式和终结符、非终结符填入有关数组,为语法分析做前期准备。 算符优先分析法的核心算法教材上已给出,因此所要做的事只是将其编程实现。 三、系统总体设计 该语法分析器可分为以下几个主要模块: 1. 词法分析模块 用于分析输入的文法和句子,并检验该文法是否为算符文法,如果是,将分析结果填入存放产生式和句子的字符数组中,否则报错并停止接下来的任何步骤。 其中,与产生式有关的字符数组有:存放每条产生式左边非终结符的数组,存放每条产生式右边符号的数组,存放所有非终结符的数组,存放所有终结符的数组。 2. FIRSTVT和LASTVT构建模块 用于构建输入文法的FIRSTVT集和LASTVT集。 3. 算符优先表构建模块 用于构建输入文法的算符优先表,并在构建过程中检查该文法是否为算符优先文法,如果在构建过程中对同一对终结符计算出两次不一样的优先关系,则报错并停止接下来的任何步骤。 4. 规约模块 用于对输入的句子按照输入的算符优先文法进行规约,并给出符号栈的变化情况。 5. 程序功能模块 包括从TXT文件读入文法和句子的模块以及保存分析结果的模块等。 每个模块内包括一些完成该模块所用的方法,列表如下: 词法分析模块 private bool pickSymbols() //对输入文法作词法分析,提取终结符和非终结符,并存入有关符号表 private bool isUpperLetter(char c) //判断字符是否为大写 private int instMidSymbol(char c) //将字符插入非终结符表 private int instEndSymbol(char c) //将字符插入到终结符表 private void instFormulaLeft(char leftChar) //将字符插入到产生式左边符号表 private void instFormulaRight(char rightChar) //将字符插入到产生式右部符号表 FIRSTVT和LASTVT构建模块 private void createFirstVT() //构建FIRSTVT集 private void insertFirstvtStack(char P, char a) //INSERT(P, a) private void createLastVT() //构建LASTVT集 private void insertLastvtStack(char P, char a) //INSERT(P, a) 算符优先表构建模块 private bool createPriorityTab() //构建优先关系表 private bool findInFirstvt(char midSymbol, char endSymbol) //查找某终结符是否在某非终结符的FIRSTVT集里 private bool findInLastvt(char midSymbol, char endSymbol) //查找某终结符是否在某非终结符的LASTVT集里 规约模块 private void reduce() //归约 private char priorityCompare(char a, char b) //比较两个终结符的优先权 private char findN(char[] s) //找出应该把所找到的最左素短语归约到哪一个非终结符N 程序功能模块 private void error(string errorMsg) //出错提示 private void reset() //复位 private void btnAnalyze_Click(object sender, EventArgs e) //按了ANALYZE按钮后该做的事
您可能关注的文档
最近下载
- 幼年特发性关节炎护理新进展题库答案-2025年华医网继续教育.docx VIP
- 艾里逊系列变速箱应用与安装.pptx VIP
- 2019疏浚工程预算定额.docx VIP
- 肥厚型梗阻性心肌病护理查房【50页】.pptx VIP
- 固定二氧化碳系统.doc VIP
- 第三单元1~6的表内除法第4课时除法(2)课件2025人教版数学二年级上册.ppt
- 第三单元1~6的表内除法第3课时除法(1)课件2025人教版数学二年级上册.pptx
- 工业厂房及管理楼水电安装施工方案.docx VIP
- 装配式农村住房建筑构造(五)(低层现浇混凝土聚苯模块墙体).pdf VIP
- 吉J2022-184现浇混凝土内置保温复合墙体建筑构造.pdf VIP
文档评论(0)