第三章词法分析.pptx

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
会计学;3.1 对于词法分析器的要求;3.1.1 词法分析器的功能和输出形式;3.1.1 词法分析器的功能和输出形式;3.1.1 词法分析器的功能和输出形式;3.1.1 词法分析器的功能和输出形式;3.1.2 词法分析器作为一个独立子程序;3.1.2 词法分析器作为一个独立子程序;3.2 词法分析器的设计;3.2.1 输入、预处理;3.2.2 单词符号的识别:超前搜索;3.2.2 单词符号的识别:超前搜索;3.2.3 状态转换图;3.2.3 状态转换图;状态转换图示例;几点重要限制——不必使用超前搜索 所有关键字都是保留字;用户不能用它们作自己的标识符 关键字作为特殊的标识符来处理;不用特殊的状态图来识别,只要查保留字表。 如果关键字、标识符和常数(或标号)之间没有确定的运算符或界符作间隔,则必须使用一个空白符作间隔。 DO99K=1,10 要写成 DO 99 K=1,10;;思想:每个状态结对应一小段程序。 做法: 1)对不含回路的分叉结,可用一个CASE语句或一组IF-THEN-ELSE语句实现 2)对含回路的状态结,可对应一段由WHILE结构和IF语句构成的程序 3)终态结表示识别出某种单词符号,因此,对应语句为 RETURN (C,VAL) 其中,C为单词种别,VAL为单词自身值;全局变量与过程 1) CHAR 字符变量、存放最新读入的源程序字符 2) TOKEN 字符数组,存放构成单词符号的字符串 3) GETCHAR 子程序过程,把下一个字符读入到CHAR中 4) GETNBC 子程序过程,跳过空白符,直至CHAR中读入一非空白符 5) CONCAT 子程序,把CHAR中的字符连接到TOKEN;全局变量与过程 6) LETTER 布尔函数,判断CHAR中字符是否为字母 7) DIGIT 布尔函数,判断CHAR中字符是否为数字 8) RESERVE 整型函数,对于TOKEN中的字符串查找保留字表,若它是保留字则给出它的编码,否则回送0 9) RETRACT 子程序,把搜索指针回调一个字符位置 10) DTB 函数,把TOKEN中的字符串翻译成二进制码;START: TOKEN:=''; /*置TOKEN为空串*/ GETCHAR; GETNBC; CASE CHAR OF 'A'..'Z': BEGIN WHILE LETTER OR DIGIT DO BEGIN CONCAT;GETCHAR END; RETRACT; C:=RESERVE; IF C=0 THEN RETURN ($ID,TOKEN) ELSE RETURN (C,-) END;;'0'..'9': BEGIN WHILE DIGIT DO BEGIN CONCAT;GETCHAR END; RETRACT; RETURN ($INT,DBT) END; '=': RETURN ($ASSIGN,-); '+': RETURN ($PLUS,-);;’*': BEGIN GETCHAR; IF CHAR='*' THEN RETURN ($POWER,-); RETRACT; RETURN ($STAR,-); END; ',': RETURN ($COMMA,-); '(': RETURN ($LPAR,-); ')': RETURN ($RPAR,-); END OF CASE; ERROR; GOTO START;;3.3 正规表达式与有限自动机;∑*的子集U和V的连接(积)定义为;3.3.1 正规式与正规集;3.3.1 正规式与正规集;3.3.1 正规式与正规集;3.3.1 正规式与正规集;若两个正规式所表示的正规集相同,则称这两个正规式等价。如 b(ab)*=(ba)*b (a*b*)*=(a|b)* 对正规式,下列等价成立: e1|e2 = e2|e1 交换律 e1(|e2|e3) = (e1|e2)|e3 结合律 e1(e2e3) = (e1e2)e3 结合律 e1(e2|e3) = e1e2|e1e3 分配律 (e2|e3)e1 = e2e1|e3 e1 分配律 e? = e? = e 但 e1e2 <> e2 e1 ;有限自动机;有限自动机;3.3.2 确定有限自动机(DFA);3.3.2 确定有限自动机(DFA);3.3.2 确定有限自动机(DFA);3.3.2 确定有限自动机(DFA);对于?*中的任何字?,若存在一条从初态到某一终态的道路,且这条

文档评论(0)

kuailelaifenxian + 关注
官方认证
内容提供者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档