看过很多讲正则表达式优先级的文章 ,总觉得对Lex来说讲的不完全,一直未找到一个完全的优先级文档,索性自己总结了一份,供使用Lex的弟兄参考
Lex中正则表达式优先级表:
优先级 |
运算符 |
说明 |
1 |
\ |
转义符 |
2 |
“ () [] |
双引号、括号和中括号 |
3 |
* + ? {n} {n,} {n,m} {name} |
限定符和预定义的名字 |
4 |
^ $ \000 char <<EOF>> |
定位符号和序列 |
5 |
| / |
或, 上下文 |
特别说明:
1、同优先级全部是左结合的
2、在[]中,只有\仍然保留其转义符的意义,其它特殊符号均失去其特殊性,[]中增加了两个符号“- ^”,这两个符号在[]的优先级大于[],出了[]就变成一般的序列符号
3、在“”对中,只有\保留有特殊含义
4、{name}中的name如果在定义段中定义过,{name}作为预定义的名字使用,如果name未定义过,则{name}仅仅是{name}的一个序列,{不用转义,当然你用了转义符也没问题
以上是我在使用中的总结,请指正,谢谢! 
|