java - ANTLR 标签异质替代品?

标签 java parsing antlr4

我想创建一个语法来定义
事件的替代品。


    time:
             type='at ' date
         | type='before ' date 
         | type='vor ' date
    ;


    date:
        SIMPLEDATE
    ;

    DAY: ('0'[1-9]|[12][0-9]|'3'[01]);
    MONTH: ('0' [1-9]|'1'[012]);
    YEAR: [0-2] [890] NUMBER NUMBER;
    SIMPLEDATE: DAY  [- /.] MONTH [- /.] YEAR;

似乎工作正常。

但我想减少第一个
像这样的替代方案:
    time:
             type='' date
         | type='before' date
         | type='after' date  
    ;

我尝试了空字符串,因为
no type 不被接受。

有了这个修改一个简单的日期
不再被识别。

有没有办法将(异质的)标签更一致?

最佳答案

是的。只是不要在不合格的替代品中提供标签。 Antlr 将生成 type time 中的 token 变量语境;对于不合格的替代方案,Token type 的值将为空。

或更好:

time: type=('before'|'after')? date  ;

关于java - ANTLR 标签异质替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35323173/

相关文章:

javascript - Javascript:将未关闭的标签拆分为字符串?

c++ - 指向使用 vector 地址的临时指针

java - Java-从ANTLR 4访问者实现生成JVM ByteCode

java - Maven对源项目的依赖关系(爆炸)

java - 为什么执行代码后,bike1、3的值是多少?

Java:如何启动同一个对象的另一个线程?

java - 如何从应用程序中的每个文件中删除特定的导入?

java - java-处理xml并对其进行修改以创建新的xml

java - ANTLR 4 $channel = HIDDEN 和选项

python - 导入后ANTLR4语法标记识别错误