编译原理课程设计--语法分析器.docxVIP

  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文档。上传文档
查看更多
编译原理课程设计--语法分析器

中国海洋大学课程设计课程名称:编译原理课程设计任课教师:葛林学生姓名:甘言海学生学号:020332010027专业班级:计算机信息保密2010级学院名称:信息科学与工程学院2012年12月23日概要设计使用Lex和Yacc设计一个语法分析器,并在语法分析的同时生成分析树。给产生式加上动作,动作为生成一棵语法分析树,输入为实验1所给语言写的源程序文件;输出为一个C语言源程序文件(即输入是所给语言的源程序文件,输出为语义相同的C语言源程序文件)。详细设计基本思路为所给语言写出无二义性的文法,用正规式定义语言的一些基本元素,如变量名、关键字和常数。将基本元素的识别放在词法分析里,语言的语句单元、程序结构等放在语法分析里完成。基本原理词法分析和语法分析合作完成对源语言程序的分析,词法分析返回语法分析所需要的词法单元,包括变量名、关键字、整数和浮点数。语法分析负责源程序语法结构的检查和语法树的构造。语法树的构造通过计算文法符号的综合属性自下而上一步步获得。数据基础为语法树定义数据结构,包括各文法符号属性值的数据结构定义,并为它们实现各自的构造函数。工作流程根据语法树打印出语义相同的C语言源程序需要众多函数的支持,它们分别负责各个语法结构(即文法符号的属性)的打印输出。这些函数单独放在一个文件里,其中打印源程序的函数由主函数调用,然后由打印源程序的函数负责调用其它函数完成整个源程序的打印。提示信息对于能够正确通过词法分析和语法分析的源程序输出分析成功的提示信息,否则提示源程序存在语法错误。实现方法文法符号的定义(为各文法符号指定属性值类型)文法符号类型%union {int ival;double fval;string sval;a_id id;a_op op;a_bop bop;ttype typ;a_exp calexp;a_bexp relexp;a_stm sten;a_stm_list stens;a_prog prog;a_dec decl;a_dec_list decltable;a_var_list vartable;a_vardec vardeclare;a_extension exten;}终结符定义并指定属性值类型%token sval ID%token ival INT%token fval FLOAT%token typ INTEGER REAL%token SEMICOLON END VAR PERIOD COLON COMMA ASSIGN IF WHILE LPAREN RPAREN PROGRAM BEGINER ELSE DO THEN %token bop EQ NEQ LT GT LE GE%left op MINUS PLUS%left op TIMES DIVIDED为非终结符指定属性值类型%type prog progr%type exten EXTENSION%type decl DECLARE%type decltable DECLARETABLE%type sten SENTENCE GIVESENTENCE IFSENTENCE WHILESENTENCE%type stens SENTENCETABLE GROUPSENTENCE%type calexp CALCULATEEXPRESS TERM FACTOR%type relexp RELATIONEXPRESS%type vartable VARIETYTABLE%type vardeclare VARIETYDECLARE%type id VARIETY%type typ TYPE类型定义程序数据结构定义struct a_prog_ { string name; a_pos pos; a_extension exten;};分程序数据结构定义struct a_extension_ {a_pos pos;a_vardec vardeclare;a_stm_list stmlist;};变量声明部分数据结构定义struct a_vardec_ { a_pos pos; a_dec_list dectable;};变量声明表数据结构定义struct a_dec_list_ { a_dec head; a_dec_list tail;};变量声明数据结构定义struct a_dec_ { ttype type; a_pos pos; a_var_list varlist;};变量表数据结构定义struct a_var_list_ { a_id head; a_var_list tail;};语句表数据结构定义struct a_stm_list_ { a_stm head; a_stm_list tail;};语句数据结构定义stru

文档评论(0)

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

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

1亿VIP精品文档

相关文档