写antlr语法期间,调试期间,遇到最多的,可能就属不匹配的问题了。
对于不匹配的问题,其原因有各种各样,而导致不匹配的。
目前已经遇到的,大致有这几类:
- 后面所要匹配的内容,被前面已经匹配掉了,所以后面会报错,无法匹配
比如:
【已解决】antlr中支持EDDL的多国语言字符串其中用的是rule而非token
【已解决】antlr中匹配OPERATOR出错:mismatched input ‘&’ expecting set null
【已解决】antlr解析出错:MismatchedSetException(0!=null)
【已解决】antlr解析双引号出错:MismatchedTokenException(0!=0)
【未解决】antlr中不识别双引号(double quote)
【基本解决】antlr v3,用包含{$channel=HIDDEN;}语法,结果解析出错:MissingTokenException
- 自己语法写错了,的确不匹配
如果是自己语法不小心写错了,自己仔细调试后,还是可以发现。
然后改为正确的所要匹配的内容,即可。
ANTLR v4中,由于一些语法的变化,导致语法检查更严格,有时候也会导致此类mismatch的问题:
【已解决】antlr v4的语法出错:line 1:0 mismatched input ‘a’ expecting A