动作和语义谓词

词法分析器动作是由 {} 包围的目标语言中的任意代码块,在匹配期间执行:

IDENTIFIER: [A-Z]+ { log("matched rule"); };

语义谓词是由 {}? 包围的目标语言中的任意代码块,其评估为布尔值。如果返回的值为 false,则跳过词法分析器规则。

IDENTIFIER: [A-Z]+ { identifierIsValid() }?;

出于性能原因,应尽可能在规则末尾定义语义谓词。