java实现的简易lex工具v1.0
此处不涉及语法分析,只是简单的词法分析。
- 自行定义.l文件作为Lex源程序,采用lex工具生成的程序可执行文件后(此版本生成可执行java文件)。
- 输入任意长度字符串,即可得到输出(此版本只支持词法单元序列)。
这里Lex程序的格式与一般的Lex程序格式一样:
声明部分
% %
转换规则
% %
辅助函数
本版本只支持基本的正则表达式: (a*)、(a|b)、(ab)
附:Lex的正则表达式(扩展)
表达式 | 匹配 | 例子 |
---|---|---|
c | 单个非运算符字符c | a |
\c | 字符c的字面值 | \* |
"s" | 串s的字面值 | "**" |
. | 除换行符以外的任何字符 | a.*b |
^ | 一行的开始 | ^abc |
$ | 行的结尾 | abc$ |
[s] | 字符串s中的任何一个字符 | [abc] |
[^s] | 不在串s中的任何一个字符 | [^abc] |
r* | 和r匹配的零个或多个串连接成的串 | a* |
r+ | 和r匹配的一个或多个串连接成的串 | a+ |
r? | 零个或一个r | a? |
r{m,n} | 最少m个,最多n个r的重复出现 | a{1,5} |
r1rr2 | r1后加上r2 | ab |
r1|rr2 | r1或rr2 | a|b |
(r) | 与r相同 | (a|b) |
r1/rr2 | 后面跟有r2时的r1 | abc/123 |