antlr4 - 如何在一个特定规则中不允许空格 - 否则语法会正确跳过空格
问题描述
我们的语法允许用户通过 ID(友好名称)或通过编辑器的 INDEX 来指定标签。语法片段如下所示:
tagindex
: DOLLARDOLLAR 'TAGINDEX' ASSIGN tagid=INT DOLLARDOLLAR
;
// A tag is either an ID or an INDEX
tag
: ID
| tagindex
;
我们使用 'tagindex' 规则,因为它允许我们轻松访问 Listener (EnterTagindex) 和 Visitor (VisitTagindex) 中的 tagid(或者是 INT)令牌,但这也意味着用户可以在每个令牌之间输入空格,因为我们的语法跳过空格。
我们需要的是'tagindex'不接受任何空格,以便用户被迫输入,例如:
$$TAGINDEX=123$$
实现这一目标的最佳方法是什么?
解决方案
由于tagindex
不是递归的并且不使用任何非终端规则,您可以将其设为终端规则。假设它不与任何其他规则重叠,那不应该导致任何问题。
推荐阅读
- kotlin - 电话管理器 - RSNR 和 CQI 永远不可用
- amazon-ebs - FSX / EBS - 弹性使用实现
- python - 尝试使用套接字传输数据时 PyQt 崩溃
- c# - C# Gridview 数据源到数据表
- ios - 如何静态或动态链接每个 Cocoapod 库?
- reactjs - Firebase doc.data() 是一个对象而不是字符串
- javascript - Twilio.Device 不是构造函数
- python - 如何将 MLPC 从 SKLearn 转换为 CoreML
- javascript - 如何在 Header 部分中的 JQuery 与 Body 部分中的 Javascript 之间共享数据?
- tensorflow2.0 - Tensorflow损失函数读数发散?