- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
词法分析;主要内容:词法分析的任务,手工实现词法分析程序,正规式与有穷自动机,词法分析程序的自动生成
重点掌握:词法分析器的功能和接口,用状态转换图设计和实现词法分析程序,正规文法、正规式和有穷自动机的概念及相互转换;词法分析程序所处的位置:;3.1词法分析的任务和功能;单词的类型;单词的种别码;表3.1Sample语言单词的编码;单词的值:
可用多种方式给出:
对于“一字(一符)一种”单词:单词值可不给出(因单词的种别码唯一代表该单词)
一个类别有多个单词(标识符、常数):必须给出每个单词值,单词值可为单词符号串本身,也可为一个指针值(在符号表和常数表中的入口位置),常数的单词值也可以是自身常数的二进制数。
;;词法分析输出举例;;3.2词法分析程序的设计;3.2.1词法分析程序的接口;3.2.2词法分析程序的总体设计;;;详解“图3.4详细数据流图”
读入一行(加工1.1):从源程序文件读入一行,存入缓冲区(字符型数组),行计数器加1。
读一非空字符(加工1.2):从缓冲区读一个字符,列计数器加1,直到读取一个非空字符为止.若缓冲区已空,则再读一行到缓冲区,此时列计数器置0、行计数器加1.
字符分类(加工1.3):据单词首字符。
输出token串(加工1.4):对所有识别出的单词按二元形式输出(种别码,单词值)
识别标识符/关键字(加工1.5):当读入的单词首字符是字母时,开始识别标识符或关键字。形成单词后查关键字表。;识别数值型常数(加工1.6):当读入的单词首字符是数字时,开始识别整数或实数。
处理注释和除号(加工1.7):当读入的单词首字符是“/”时,开始识别注释和除号。
识别文字常数(加工1.8):当读入的单词首字符是单引号时,忽略单引号,开始拼写字符常数,直到下一个单引号结束,最后返回种别码
识别其他界符和运算符(加工1.9):
查填符号表(加工2):对标识符和常数识别后,要查填符号表(若表中没有,则加入表并填写属性等信息)。符号表的格式见3.2.5节的表3.2。;;;识别单词;3.2.4使用状态转换图来识别单词;识别过程是:从初始状态0开始,读取一个字符,若是字母,读??它,转入状态1,否则(不是字母)识别失败。在状态1,读取下一个字符,若为字母或数字,则读入它,仍处于状态1;在状态1读入的字符不是字母或数字,则转向状态2,结束一个标识符的识别过程。状态上的*表示多读入一个符号,指针应回退一个字符。;写成C语言的函数形式:
recog_id(charch)
{
charstate=0;
while(state!=2){
switch(state){
case0:ch=get_nextchar();
if(isletter(ch))state=1
elseerror();
break;
case1:ch=get_nextchar();
if(isletter(ch)||isdigit(ch))state=1
elsestate=2;
break;
}
}
return(gettoken());//返回识别的单词的token值(查表3.1)
};;;对图3.6(c)—无符号实数状态转换图改进:
使用不同的终态来表示不同单词的识别,不仅可靠性高,而且可据此来确定该数的属性,便于填入符号表
终态7:识别出错处理的终态
终态8:识别带指数的实数的终态
终态9:识别带小数的实数的终态
终态10:识别整数的终态;练习1;练习2;词法分析程序实现方法总结
首先对程序语言的单词按类构造出相应的状态转换图。
对各类状态转换图合并(如左图)。
根据状态转画图编写识别该类单词的函数(使用一个switchcase语句:每条分支对应一个case语句段),最终输出单词的token表(单词种别码,单词值)。
;1.符号表
符号表是一种数据结构,用于保存源程序中出现的名字及其相关的属性信息(种属、数据类型、值、地址)
符号表要在编译的多个阶段中操作,词法分析阶段只有一小部分可填写(单词名字及长度、类型等)
符号表的结构:如表3.2
如:字符串if(ab2)test=3;;2.符号表的实现方法;;3.2.6词法分析阶段的错误处理;单词
您可能关注的文档
最近下载
- 职业技能竞赛数控车工、数控铣工、加工中心实操训练试题-1.doc VIP
- 低压并网柜技术规范书.doc VIP
- 2025年法官入额考试真题及答案.docx VIP
- 《工程勘察设计收费管理规定》计价格【2002】10号.doc VIP
- 2025年法官入额考试真题及答案.docx VIP
- 《GJ B798-1990-伪装涂料漆膜颜色》.pdf VIP
- 美国纽约摄影学院摄影教材【上下册无密码全版】PDF版.docx VIP
- 职业生涯规划书.docx VIP
- 截屏-节能与新能源汽车技术路线图3.0-2025-10-新能源.pptx
- 2022年二级造价师《建设工程计量与计价实务》(水利)考试题库.pdf VIP
 原创力文档
原创力文档 
                        

文档评论(0)