How to write lex (1)
这几天在写编译原理的课程设计,第一部分就是写一个SEU Lex. 难度不小. 现在核心部分已经完成了. 整理一下,写个教程. 希望对一些人有用.
lex 是词法分析器的生成器.
输入为lex定义问题( .l文件 ).
输出为词法分析器的C代码.
lex有POSIX 标准
http://www.opengroup.org/onlinepubs/009695399/utilities/lex.html
一个完整lex的应该有三部分:
- lex定义 文件解析
- 正则表达式到NFA, NFA -> DFA, DFA 最小化算法的实现.
- 输出的词法分析器C代码模板
这里面工作量最大是第二部分,虽然算法都是现成的,自己实现还是要花一些时间和精力的.
未完待续.