谁能给我一些ANTLR中失败谓词异常的例子?
和一些示例将清楚地解释:输入不匹配VS失败谓词VS没有可行的alt异常ANTLR。提前谢谢。
异常的名称很好地解释了它们何时会出现。只有失败的谓词异常有点特殊。
NoViableAlt
:
当您尝试用多个备选项匹配块而没有匹配时抛出。例子:
r: 'a' | 'b';
输入:"c"。
InputMismatch
:
当输入部分匹配时抛出。例子:
r: 'a' 'b' 'c' EOF;
输入:'a' 'b'或'a' 'c' EOF
FailedPredicateException
:
在某些情况下抛出,如果路径由谓词保护,并且该路径是唯一可能的匹配(或必需的匹配),但谓词阻止匹配它。例如:
... | a ({condition}? b)
但是,如果带有谓词的块是可选的(因此不是必需的),则不会抛出谓词异常,例如:
... | a ({condition}? b)?
有关这些异常的更高级使用,以生成更好的错误消息,请参阅此错误侦听器。