你的位置:首页 > 软件开发 > Java > atitit.词法分析原理词法分析器 (Lexer)

atitit.词法分析原理词法分析器 (Lexer)

发布时间:2016-04-23 02:00:15
atitit.词法分析原理 词法分析器 (Lexer) 1. 词法分析(英语:lexical analysis)12. ;实现词法分析程序的常用途径:自动生成,手工生成.[1] 22.1. 词法分析程序的功能22.2. 如何描述词素32.3. 单词token32.4. ...

atitit.词法分析原理 词法分析器 (Lexer)

 

1. 词法分析(英语:lexical analysis)1

2. ;实现词法分析程序的常用途径:自动生成,手工生成.[1] 2

2.1. 词法分析程序的功能2

2.2. 如何描述词素3

2.3. 单词token3

2.4. Token的类型,根据程序设计语言的特点,单词可以分为五类:关键字、标识符、常量、运算符、界符。以4

2.5. 词法分析的第一阶段即扫描器4

2.6. 词法分析的第二阶段评估器(Evaluator)5

2.7. 例如C语言程序段的词法分析结果5

2.8. 最长原则6

2.9. 词法单元的识别6

2.10. 不确定”(Nondeterministic Finite Automata ,NFA 8

2.11.  转换图(transition graph)的表示9

2.12. 词法分析(3)---DFA10

2.13. 为什么要NFA转DFA12

2.14. 则表达式转NFA13

2.15. 正则表达式如何转换为NFA呢?有几个公式(MLS2007[1]):13

2.16. 构造词法分析器了。大致的流程如下:19

2.17. 常用的token scanner19

2.18. 词法分析器也能检测到源代码里边的一些错误20

2.19. 参考21

 

1. 词法分析(英语:lexical analysis

是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称Lexer),也叫扫描器(Scanner

 

词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用Lex等工具自动生成。

词法分析是编译程序的第一个阶段且是必要阶段;词法分析的核心任务是扫描、识别单词且对识别出的单词给出定性、定长的处理

atitit.词法分析原理词法分析器 (Lexer) 

 

一段对计算机来说豪无意义的字符串,经过语法分析后就得到了略微有意义的 Token 流。digit 就表示这个词法单元对应的是数字,operator 则表示操作符,后面相应的数字和符号(粉色背景)就是词素。同时,程序中一些不必要的空白、注释也可以由词法分析器来过滤掉,这样,之后的语法分析等步骤处理起来就会容易得多

 

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

 

2. ;实现词法分析程序的常用途径:自动生成,手工生成.[1] 

尽管在某些情况下需要手工编写词法分析器,使用状态模式,,一般情况下词法分析器都用自动化工具生成。

 

2.1. 词法分析程序的功能

完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。[1] 

从左至右地对源程序进行扫描,按照语言的词法规则识别各类单词,并产生相应单词的属性字。[1] 

 

词法分析器通常不会关心单词之间的关系(属于语法分析的范畴),举例来说:词法分析器能够将括号识别为单词,但并不保证括号是否匹配。

 

。语法分析器读取输入字符流、从中识别出语素、最后生成不同类型的单词。其间一旦发现无效单词,便会报错。

 

词法分析器可以做诸如这就是一个不确定的无限自动机,在symbol a输入的时候,无法确定状态应该转向0,还是1不论是确定的finite automaton还是非确定的finite automaton,它们都可以精确的描述正规集(regular sets)可以说使用表格是最简单的表示方式,但是我们可以注意到在这个图中状态1和input symbol a,是没有下一个状态的(空集合),也就是,对于一个大的状态图,我们可能花费大量的空间,而其中空集合会消耗不少空间,但是这种消耗又不是必须的,所以,作为最简单的一种实现方式,却不是最优的语言(language)被NFA定义成为一个input string的集合,而这个集合中的元素则是被NFA受接受的所有的字符串(那些可以从开始状态到某接受状态的input string)至于存储的方式,可以试试邻接表。注意,使用什么样的数据结构来保存NFA按情况不同而不同,在一些特殊情况下,某些数据结构会变得很方便使用,而换入其他情况,则不可以使用了。

 

 

2.12. 词法分析(3)---DFA

1. DFA(Deterministic Finite automaton)2. DFA的行为

原标题:atitit.词法分析原理词法分析器 (Lexer)

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录