B.5 识别规则的二义性
有时LEX的程序中可能有多于一条规则与同一个字符串匹配,这就是规则的二义性,在这种情况下,LEX有两个处理原则:
1) 能匹配最多字符的规则优先
2) 在能匹配相同数目的字符的规则中,先给出的规则优先
例 设有两规则按下面次序给出:
integerkeyword action…
[a-z]+identifier action…
如果输入是integers,则它将被当成标识符处理,因为规则integer只能匹配7个字符,而[a-z]+能匹配8个字符;如果输入串是integer,那么它将被当作关键字处理,因为两条规则都能与之匹配,但规则integer先给出。
|