Date 用于解析日期的Antlr4语义谓词

Date 用于解析日期的Antlr4语义谓词,date,antlr4,semantics,predicate,Date,Antlr4,Semantics,Predicate,我开始并提出以下开始,但我得到了错误:“调用org.antlr.v4.gui.TestRig.main(args)时出现问题”。如果有人能告诉我我把事情搞砸了,我会很感激的 要分析的表单:dd/mm/yyyy dd必须介于01和31之间 mm必须介于01和12之间 lexer grammar dates; fragment DIGIT: [0123456789]; DATE : DAY ('/'MONTH+) ('/'YEAR+) {System.out.println(getTe

我开始并提出以下开始,但我得到了错误:“调用org.antlr.v4.gui.TestRig.main(args)时出现问题”。如果有人能告诉我我把事情搞砸了,我会很感激的

要分析的表单:dd/mm/yyyy

  • dd必须介于01和31之间
  • mm必须介于01和12之间

    lexer grammar dates;
    
    fragment DIGIT: [0123456789];
    
    DATE : DAY ('/'MONTH+) ('/'YEAR+)
        {System.out.println(getText() + " is a valid Date");};
    
    DAY : TWODIGIT
        {Integer.parseInt(getText()) >= 1 && Integer.parseInt(getText()) <= 31}?;
    MONTH : TWODIGIT
        {Integer.parseInt(getText()) >= 1 && Integer.parseInt(getText()) <= 12}?;
    YEAR : FOURDIGIT
        {Integer.parseInt(getText()) >= 2000 && Integer.parseInt(getText()) <= 2100}?;
    
    TWODIGIT : DIGIT DIGIT;
    FOURDIGIT : DIGIT DIGIT DIGIT DIGIT;
    WS: [\r\n\t]+{skip();};
    
    lexer语法日期;
    碎片数字:[0123456789];
    日期:日('/'月+)('/'年+)
    {System.out.println(getText()+“是有效日期”);};
    日期:两位数
    
    {Integer.parseInt(getText())>=1&&Integer.parseInt(getText())=1&&Integer.parseInt(getText())=2000&&Integer.parseInt(getText())你知道张贴的语法不完整吗?很抱歉,我对Antlr完全陌生,你能解释一下吗?语法声明不见了。你真的需要阅读文档,或者更好的是TDAR,才能正确地学习Antlr。