编译原理实验指导编译原理实验指导高丽淮阴工学院计算机工程系1.doc

编译原理实验指导编译原理实验指导高丽淮阴工学院计算机工程系1.doc

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

编译原理实验指导 高丽 淮阴工学院计算机工程系 内容简介 编译原理是计算机专业中的一门专业必修课程,在理论上它要求学生掌握有关形式语言和自动机的抽象概念,在技术上要求学生能够熟练地利用各种数据结构进行编程,很具有挑战性。我们希望学生在学习完本课之后,能够对形式语言和其内部结构有一个较深刻的认识。 本书包含三个实验:词法分析器,递归下降分析、语义与代码生成。这三个实验构成了编译器的主要组成部分,全部在VC++6.0环境下完成。 目 录 实验一 词法分析实验 1 实验二 递归下降分析 4 实验一 词法分析实验 1、实验目的 加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。 2、实验内容 对源程序进行词法分析:要求识别出关键字、标识符、数字和符号,并以(单词类别,单词值)二元组的形式显示。如int a;经过词法分析程序后得到的二元组为: int int ID a ; ; 以下为词法分析程序的测试数据 main() { int a,b; a = 10; b = a + 20; } 请对以上代码利用词法分析程序分析并得到相应的二元组。 3、实验分析 在本次实验中是对一个简化的c语言程序进行分析,它的单词符号有: ● 标识符:字母打头,后接字母数字,识别出的标识符用ID标记。 ● 保留字(它是标识符的子集): if,else,for,while,do,int,write,read,识别出的保留字直接用该保 留字标记。 ● 无符号整数:由数字组成,用NUM标记。 ● 分界符:+、-、*、/、(、)、;、,、、{、}、!等单分界符,直接用单分界符标记。=、=、!=、==等双字符分界符,直接用双分界符标记。 ● 注释符:用/*….*/括起 为了从源程序字符流中正确识别出各类单词符号,相邻的标识符、整数或保留字之间至少要用一个空格分开。 此语言的各类单词符号的正则文法规则如下: identifier∷=letter|IDletter|IDdigit number∷=digit|number digit letter∷= a|b|…|z|A|B|…|Z digit∷=1|2|…|9|0 singleword∷=+|-|*|/|=|(|)|{|}|:|,|;|<|>|! doubleword∷=>=|<=|!=|== commend_first∷=/* commend_last∷=*/ 图1 单词符号的状态图 根据状态图,分析相应动作就可以构造出词法分析程序的算法流程图,如下图所示,在程序开始时,首先读入一个字符,若为空字符,则继续读,直到读进一个非空字符,读进的字符有如下6种情况,要进行不同的处理。 (1) 字母。继续读,直到遇见空格、分界符、文件尾或非字母数字字符。组合标记符,查保留字表。若为保留字,输出相应单词记号;若不是,输出标记符的单词记号及单词值(标识符)。 (2) 数字。继续读,直到遇见空格、或非数字字符出现或文件尾。输出无符号整数的单词记号及数字串。 (3) =、、、!。读入下一个字符,判断是否为双字符分界符,若是,组成双字符分界符,输出相应单词记号及双分界符;若不是,输出单分界符记号。 (4) 非=、、、/等与双分界符首字符不同的单分界字符。输出相应单词记号及单分界符。 (5) /。读入下一个字符。若不是“*”,输出/的单词记号;若是“*”,进行注释处理。词法分析不输出“/*”,并要跳过整个注释内容直到遇到“*/”为止,然后返回开始状态,继续识别下一个单词符号。 (6) 非法字符。如果读进的字符不属于上面任意情况,则说明词法分析程序从源程序读入了一个不合法的字符,即该字符不属于程序语言所定义的所有单词符号首字符集合。词法分析程序在遇到不合法字符时要进行错误处理,报告错误信息,跳过这个字符,然后转入开始状态,继续识别下一个单词符号。 图2 词法分析程序流程图 4、实验步骤 (1)启动Visual C++系统,新建一个工程; (2)新建一个源程序文件; (3)编译,调试该程序; (4)运行该程序,输入测试数据,观察输出数据; (5)分析实验结果。 实验二 递归下降分析 1、实验目的 详细了解递归子程序方法对源程序的具体分析处理 2、实验内容 类C语言的语法规则如下: 1)program::={declaration_liststatement_list} 2)declaration_list::=declaration_listdeclaration_stat|declaration_stat 3)declaration_stat:

文档评论(0)

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

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

1亿VIP精品文档

相关文档