西安交大编译原理实验报告(赵银亮老师)word版.docx

西安交大编译原理实验报告(赵银亮老师)word版.docx

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

编译原理课内实验报告计算机11班 2110505018 司默涵2013年11月7日实验一 词法分析器一、实验题目和要求1、题目根据给定的C0语言文法构造词法分析器,采用Lex生成,或者编程实现。2、实验目的(1)强化对系统软件综合工程实现能力的训练;(2)加强对词法分析原理、方法和基本实现技术的理解3、C0文法简介program→ { var-declaration | fun-declaration }var-declaration→ int ID { , ID } fun-declaration→ ( int | void ) ID ( params ) compound-stmtparams → int ID { , int ID } | void | emptycompound-stmt→ { { var-declaration } { statement } }statement→ expression-stmt∣compound-stmt ∣if-stmt ∣while-stmt | return-stmt expression-stmt→ [ expression ] ; if-stmt→ if( expression ) statement [ else statement ]while-stmt→ while( expression ) statement return-stmt→ return [ expression ] ;expression→ ID = expression | simple-expressionsimple-expression→ additive-expression [ relop additive-expression ]relop → | = | | = | == | != additive-expression→ term [( + | - ) term ]term→ factor [ ( * | / ) factor ]factor→ ( expression )| ID | call | NUMcall→ ID( args ) args→ expression { , expression } | emptyID →…;参见C语言标识符定义NUM →… ;参见C语言数的定义二、程序设计思想及设计方案1、词法分析器流程图(设计思想)2、简要设计方案①将待分析程序保存在f盘根目录下的incode.txt文件中,以备词法分析器调用;②词法分析器对待分析程序进行分析后,在f盘根目录下创建outfile.xml文件,输出词法分析结果;③待分析代码以‘#’为结束符。3、程序工作说明程序的输入文件是任何一个目录下的文件格式的C0语言程序段。程序的输出文件是以xml格式表示的词法分析的结果。该输出将作为下个实验语法分析的输入文件。(注意:也可以自定义格式,但需要在报告中给出格式说明)词法分析结果输出成xml文件格式为:rootToken lineno=xx type=’…’ string=’…’ /TokenToken lineno=xx type=’…’ string=’…’/Token…/root4、相关说明词法分析器任务输入源程序;扫描、分解字符串,识别出一个个单词(定义符、标识符、运算符、界符、常数)。单词符号的表示1) 需要对单词分类,每一个识别出来的单词都属于不同的类型public enum TokenType {//关键字IF,ELSE,WHILE,RETURN,VOID,INT, //运算符 + - * / = = = != … PLUS,MINUS,STAR,SLASH, LT,LTEQ,GT,GTEQ,EQ,NEQ,ASSIGN,//界符 ; , ( ) [ ] { } /* */SEMI,COMMA,LPAREN,RPAREN,LSQUAR,RSQUAR,LBRACE,RBRACE,LCOMMENT,RCOMMENT,ID, //标识符NUMBER, //数字常量 ID→letter(letter|didit)* NUMBER→digit digit * letter→a|b|…|z|A|B|…|Z digit→0|…|9 』NONTOKEN,ERROR,ENDFILE // 其它};2) 单词符号的数据结构设计public class Token{string str;//单词字符串TokenType ttype;//单词的类型int line;//所在行号信息}三、源代码#includestdio.h#includestring.h#includectype.h#includestdlib.h#def

文档评论(0)

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

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

1亿VIP精品文档

相关文档