词法分析器

设计一个简单的词法分析器,从而进一步加深对词法分析器工作原理的理解。
【要求】
1、该个词法分析器要求至少能够识别以下几类单词:
a. 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写;
b. 标识符:识别与C语言词法规定相一致的标识符,通过下列正则表达式定义:ID = letter (letter | digit)*;
c. 常数:NUM = digit digit*(.digit digit* |ε)(e(+ | - |ε) digit digit* |ε),letter = a|..|z|A|..|Z|,digit = 0|..|9,包括整数,如123等;小数,如123.45等;科学计数法表示的常数,如1.23e3,2.3e-9等;
d. 专用符号:+ - * / < <= > >= == != = ; , ( ) [ ] { } /* */;
2、分析器的输入为由上述几类单词构成的程序,输出为该段程序的机内表示形式,即关键字、运算符、界限符变为其对应的机内符,常数使用二进制形式,标识符使用相应的标识符表指针表示。
3、词法分析器应当能够指出源程序中的词法错误,如不可识别的符号、错误的词法等。
【方法与参考】
首先给出所有单词的正规式(或正规文法)表示,然后将其转化为NFA,再将NFA确定化、最小化,得到最简的DFA,根据DFA编写词法分析器的代码。

http://hi.baidu.com/srlhc/blog
里面我放了一个,希望对你有用。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-21
第2个回答  2019-03-29
哥们,这个不是一句两句说清楚的,我做过基于XML
解释器
的自己分析器,
执行器
。光文档就400多页。
相似回答