【问题标题】:Match at least one element in sequence of optional elements (ANTLR)匹配可选元素序列中的至少一个元素 (ANTLR)
【发布时间】:2022-01-21 05:38:14
【问题描述】:

让我们考虑以下 ANTLR4 语法(最小示例):

grammar Foo;

expr
   : a? b? c?
   ;

我如何指定abc 中的至少一个 必须出现在expr 中?

基本上我正在寻找以下内容的较短版本:

grammar Foo;

expr
   : a
   | b
   | c
   | a b
   | a b c
   | b c
   | c
   ;

有没有更简单的方法可以直接在语法中实现,还是解析后需要检查AST?

【问题讨论】:

    标签: antlr antlr4 grammar boolean-logic


    【解决方案1】:

    不像假设的“至少一个”运算符那么简单,但比您提出的解决方案更简单:

    expr
       : a b? c?
       | b c?
       | c
       ;
    

    至少,它是n 事物的n 产品,而不是2<sup>n</sup>−1 产品。

    【讨论】:

      猜你喜欢
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2023-04-03
      • 1970-01-01
      • 2018-04-07
      相关资源
      最近更新 更多