如何在一个特定规则中不允许空格 - 否则语法会正确跳过空格

  • 本文关键字:空格 语法 不允许 规则 一个 antlr4
  • 更新时间 :
  • 英文 :


我们的语法允许用户通过ID(友好名称(或通过编辑器指定INDEX来指定标签。语法片段如下所示:

tagindex
: DOLLARDOLLAR 'TAGINDEX' ASSIGN tagid=INT DOLLARDOLLAR
;
// A tag is either an ID or an INDEX
tag
: ID                            
| tagindex                          
;

我们使用"tagindex"规则,因为它允许我们轻松访问侦听器(EnterTagindex(和访问者(VisitTagindex(中的tagid(或是INT(令牌,但这也意味着用户可以在每个标记之间输入空格,因为我们的语法跳过空格。

我们需要的是"tagindex"不接受任何空格,以便用户被迫输入,例如:

$$TAGINDEX=123$$

实现这一目标的最佳方法是什么?

由于tagindex不是递归的,也不使用任何非终端规则,因此您可以将其设置为终端规则。假设它不与任何其他规则重叠,这应该不会导致任何问题。

相关内容

  • 没有找到相关文章

最新更新