Java ANTLR-分析不同的行类型-输入错误不匹配
我正在使用ANTLR为ZosJCL语言编写语法。 可以有4种类型的线:Java ANTLR-分析不同的行类型-输入错误不匹配,java,antlr,antlr4,Java,Antlr,Antlr4,我正在使用ANTLR为ZosJCL语言编写语法。 可以有4种类型的线: 类型1:所有语句的前2个字符都以“/”开头 线路 类型2:注释以“/*”开头 类型3:以“/*”开头的行 类型4:以除类型1、2和3以外的任何其他图案开头的线条 下面是我的语法文件中的片段: dd4: JCLBEGIN ddname DDWORD '*' inlinerec INLINESTMTEND?; inlinerec: (INLINEDATA)+ ; fragment INLINEDATA: (~[\r
- 类型1:所有语句的前2个字符都以“/”开头 线路
- 类型2:注释以“/*”开头
- 类型3:以“/*”开头的行
- 类型4:以除类型1、2和3以外的任何其他图案开头的线条
dd4: JCLBEGIN ddname DDWORD '*' inlinerec INLINESTMTEND?;
inlinerec: (INLINEDATA)+ ;
fragment INLINEDATA: (~[\r\n])*;
.
.
.
DDWORD: 'DD';
.
.
JCLBEGIN: '//' ;
COMMENTBEGIN: '//*' ;
INLINESTMTEND: '/*' ;
.
.
WS : [\r\n] -> channel(HIDDEN);
使用AntlrWorks运行此语法时,语法分析器规则inlineec
匹配正确,但出现以下错误:
line 24:0 mismatched input 'SORT' expecting INLINEDATA
我的代码中出现错误的部分是:
//SYSIN DD *
SORT FIELDS=COPY
INCLUDE COND
/*
如何解决此错误
inlinerec中的解析器规则已正确匹配
看起来可能是这样,但实际上,它并没有正确匹配
第24行:0不匹配的输入“排序”应为INLINEDATA
片段规则在解析器规则中不可见(因此,INLINEDATA
不能在inlineec
中使用)
简单地从INLINEDATA
中删除片段
关键字也不起作用,因为该规则会贪婪地匹配任何一行。你需要重新考虑你的方法。我不能给出更具体的建议,因为没有什么可谈的。如果您有后续问题,我建议您在此处创建一个新问题,以便使用一个显示问题的示例。祝你好运
另请参见:感谢巴特的回答。为了更好地解释我的问题,我创建了一个独立的示例。问题是