语法、词法分析结合.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
语法、词法分析结合

语法、词法分析结合 一、实验目的与要求 通过设计、编制、调试一个典型的语法分析程序(任选有代表性的语法分析方法,如算符优先法、递归下降法、LL(1)、SLR(1)、LR(1)等,作为编制语法分析程序的依据),对扫描器所提供的单词序列进行语法检查和结构分析,实现并进一步掌握常用的语法分析方法。 二、实验内容 选择对各种常见高级程序设计语言都较为通用的语法结构作为分析对象,给出其文法描述(注意应与所采用的语法分析方法比较贴近),设计并实现一个完整的语法分析程序(分析过程暂不嵌入任何的语义动作)。 输入:由实验一输出的单词串,例如:UCON,PL,UCON ······ 输出:对于输入的符号串,若是给定文法定义的合法句子,则输出“RIGHT”,并且给出每一步分析过程;若不是句子,即输入串有错误,则输出“ERROR”,并且显示分析至此所得的中间结果,如分析栈、符号栈中的信息等,以及必要的出错说明信息。 三、一般实现方法说明 例如,以如下文法G2所定义的算术表达式的赋值语句作为分析对象,编写并调试一个语法分析程序。 G2[复合语句]: 复合语句 →语句end 语句 → 语句语句语句 语句 → 赋值语句赋值语句 → 变量:=算术表达式算术表达式 → 项算术表达式项算术表达式项项 → 因式 项因式 项因式因式 → 变量常数算术表达式变量 → 标识符标识符 → 标识符 字母 标识符 数字字母常数 → 整数 浮点数整数 → 数字 数字 整数浮点数 → ? 整数整数 ? 整数字母 → AB|C|…|X|Y|Z|a|b|c|…|x|y|z 数字 → 01|2|…|9 说明:1)可将以上文法G2[复合语句]中的语法范畴常数算术表达式 → 项算术表达式项算术表达式项项 → 因式 项因式 项因式因式 → | (算术表达式算术表达式项因式→T|E+T|E-T T→F|T*F|T/F F→i|(E) 本部分用SLR(1)分析器的开发。 可以根据文法G3[算术表达式]构造识别其全部活前缀的DFA,再据此构造SLR(1)分析表,然后编程实现SLR(1)分析表的驱动程序,即LR分析器的总控程序,完成对算术表达式的识别。主要是用三维字符数组构造一个slr(1)的状态转移表,然后主控程序控制查询三维数组,调用一次词法分析再调用一次语法分析。 源程序 说明:因为后面两个程序都是在第一个基础上改进的,所以工程的名字始终是“词法分析” **********************词法分析.h # include stdio.h # include ctype.h # include string.h # include math.h # include stdlib.h # define LB 0//左括号 # define RB 1//右括号 # define PL 2 # define MI 3 # define MU 4 # define DI 5 # define UCON 6 //Suppose the class number of unsigned constant is 7 # define OVER 7 //# define INT 7 # define LT 8 # define LE 9 # define EQ 10 # define NE 11 # define GT 12 # define GE 13 # define IS 19//14至18被五个关键字占用 # define ID 20 #define MAX_KEY_NUMBER 20 /*关键字的数量*/ #define KEY_WORD_END waiting for your expanding /*关键字结束标记*/ char *KeyWordTable[MAX_KEY_NUMBER]={begin,end, if, then, else, KEY_WORD_END}; char TOKEN[20]=; char ch= ;//用于存储带判断的字符 int row=1;//row标识错误在第几行 //无符号数部分 #define DIGIT 1 #define POINT 2 #define OTHER 3 #define POWER 4 #define PLUS 5 #define MINUS 6 #define ClassOther 200 #define EndState -1 int index=0;//保存已读的字符串的索引 //char JudgeStr[256];//存储已读的字符串 int w,n,p,e,d; int Class; //Used to indicate class of the wor

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档