作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 ANTLR 比较陌生。我有一个非常简单的语法:
start :
('A' 'B' 'C' '1'
|'A' 'B' 'C' '2'
|'A' 'B' 'C' '3'
)
;
最佳答案
您的语法适用于 ANTLR v3,无需任何选项。
k 选项将 ANTLR 限制为经典的 LL(k) 解析。回溯意味着 - 如果解析器无法预测要使用哪个规则,它只会尝试、回溯并再次尝试。
当 ANTLR 无法为给定的语法构建前瞻 DFA 时,您应该使用回溯选项。 ANTLR v3 可以很容易地从正则表达式构建 DFA,但它在递归规则方面存在困难。例如,这个语法有效:
start: recursive_rule ';'
| recursive_rule ':'
;
recursive_rule : (ID)* '%'
;
start options {backtrack=true;} : recursive_rule ';'
| recursive_rule ':'
;
recursive_rule : ID recursive_rule
|'%'
;
关于ANTLR:回溯和前瞻的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13414265/
我有一个看起来像这样的字符串: text = "9) 9 的文本\r\n10) 10 的文本\r\n11) 11 的文本\r\n12) ...\r\n123) 123 的文本" 我正在尝试将其拆分如下
下一代的 3D Tiles 前瞻 原文:Introducing 3D Tiles Next, Streaming Geospatial to the Metaverse 原文发布时间:2021年11月
我有一个使用正则表达式回顾的 string.replace() 函数。 myString.replace(/(?
我是一名优秀的程序员,十分优秀!