gpt4 book ai didi

java - Antlr - 输入不匹配错误 - token 无法识别

转载 作者:行者123 更新时间:2023-11-30 06:08:26 25 4
gpt4 key购买 nike

我有以下 ANTLR 语法。

grammar DDGrammar;

ddstmt: dd2 EOF;

dd2: splddstart inlinerec;
splddstart: '//' NAME DDWORD '*' NL;
inlinerec: NON_JCL_CARD* END_OF_FILE ;

DDWORD:'DD';
//DUMMYWORD: 'DUMMY';

NAME: [A-Z@#$]+;

NON_JCL_CARD : ~'/' {getCharPositionInLine() == 1}? .*? ( NL | EOF ) ;
END_OF_FILE : '/' {getCharPositionInLine() == 1}? '*' ;

NL : '\r' '\n' ;
WS : [ \t]+ -> skip ;

对于输入:

//SYSIN    DD  *     
SORT FIELDS=COPY
INCLUDE COND
any other program input @ $ ! & %
/*

我收到以下错误。

DDGrammar::ddstmt:1:2:输入“SYSIN DD *\r\n”不匹配,需要 NAME看起来 SYSIN 未被识别为 NAME token 。事实上,类似的语法在某个时候确实起作用了。请参阅mismatched input error 。但现在这似乎对我不起作用。

最佳答案

我的猜测是您没有重新生成解析器/词法分析器类,因为以下代码工作得很好:

String source = "//SYSIN    DD  *     \r\n" +
"SORT FIELDS=COPY\r\n" +
"INCLUDE COND\r\n" +
"any other program input @ $ ! & %\r\n" +
"/*";

DDGrammarLexer lexer = new DDGrammarLexer(CharStreams.fromString(source));
DDGrammarParser parser = new DDGrammarParser(new CommonTokenStream(lexer));

parser.ddstmt();

关于java - Antlr - 输入不匹配错误 - token 无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50774902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com