要使用ANTLR生成语言的词法分析器(Lexer)跟语法分析器(Parser),我们需要告诉ANTLR我们的语言的文法(Grammar)。ANTLR采用的是上下文无关文法(Context Free Grammar),使用类似BNF的符号集来描述。使用上下文无关文法的语言比较常用的Parser有两种,LL Parser和LR Parser,而ANTLR帮我们生成的是前者。...
分类:
其他好文 时间:
2015-04-09 08:53:29
阅读次数:
644
转自:项目总结之词法分析器无论是词法分析,还是语法分析,给我的第一感觉就是逻辑要严谨。由于项目有自己一套完整的语言和语法,设计好其对应的词法分析器和语法分析器显得尤为重要。 我们采用flex进行词法分析。flex是一个用来生成扫描器(scanners)的工具,其中扫描器就是可以识别文本中词法模式的程...
分类:
其他好文 时间:
2015-04-03 10:43:43
阅读次数:
174
Webkit中,有个词法分析器HTMLTokenizer,她是怎么工作的呢,网页字节流是她的输入,她的输出是一个个的词语Token,比如div,input,img,script等等HTML文件中的标准元素(Element)。...
分类:
其他好文 时间:
2015-03-20 14:30:26
阅读次数:
236
一:实验指导书对下述单词表定义的语言设计编制一个词法分析器。单词符号及种别表和词法分析器功能及基本要求如下:(1)单词符号及种别表单词符号种别编码单词值main1int2float3double4char5if6else7do8while9l(l|d)*10内部字符串( +|-|ε ) dd*(.d...
分类:
其他好文 时间:
2015-03-16 20:58:17
阅读次数:
173
从今天这一篇起,我们就来正式揭开编译器的奥秘。首先我们接触到的模块是词法分析器,也叫词法扫描器,代码里我常常叫它Scanner。昨天我稍微解释了一下为什么需要将词法分析单独分离出来,今天来回顾一下这个问题。请看下面这段C#代码: string str = "Hello World";即使没有语法高亮...
分类:
编程语言 时间:
2015-03-01 11:54:30
阅读次数:
132
稍微说明一点,整型常量和上面的标识符的词法,在调用lex.DefineToken时都多传了一个参数。这个参数是可选的描述信息,如果不传会直接使用正则表达式的字符串形式。而标识符的正则表达式有4万多个字符那么长而且没有可读性,所以加一个额外字符串描述一下。它将来会被用于生成编译错误信息。最后我们来写空...
分类:
编程语言 时间:
2015-03-01 11:48:54
阅读次数:
223
自动生成的词法分析器跟之前讲的图转移算法是类似的,因为是自动生成,为了把整个流程形式化,需要用另外一个数学工具--有限状态自动机。 从数学上讲,有限状态自动机是什么概念呢? 输入一个字符串,如果字符串能够接受,则输出Yes,否则输出No。有限状态自动机是一个五元组,M=(S, Σ, ...
分类:
其他好文 时间:
2015-02-01 14:48:50
阅读次数:
213
第一章:词法陷阱编译器中负责将程序分解为一个一个符号的部分,一般称为“词法分析器”。例如,对于语句:if ( x == big ) big = x ;它的第一个符号是C语言关键字if,紧接着下一个符号是左括号,在下一个符号是标识符x,在下一个是大于号,在下一个是标识符big,以此类推。在C语言中,符...
分类:
其他好文 时间:
2015-01-14 14:02:37
阅读次数:
110
题目:
在这部分中,你将使用图转移算法手工实现一个小型的词法分析器。
* 分析器的输入:存储在文本文件中的字符序列,字符取自ASCII字符集。文件中可能包括四种记号:关键字if、符合C语言标准的标识符、空格符、回车符\n。
* 分析器的输出:打印出所识别的标识符的种类、及行号、列号信息。
根据题目的要求,定义如下的Token类:
enum TokenType{
TT_ID,
TT...
分类:
其他好文 时间:
2014-12-17 00:18:57
阅读次数:
171