Java 检查方法是否有antlr注释
更改为 文件开头Java 检查方法是否有antlr注释,java,comments,antlr4,Java,Comments,Antlr4,更改为 文件开头 grammar Java; @lexer::members { public static final int WHITESPACE = 1; public static final int COMMENTS = 2; } 文件结束 // // Whitespace and comments // WS : [ \t\r\n\u000C]+ -> channel(WHITESPACE) ; // channel(1) COMMENT
grammar Java;
@lexer::members {
public static final int WHITESPACE = 1;
public static final int COMMENTS = 2;
}
文件结束
//
// Whitespace and comments
//
WS : [ \t\r\n\u000C]+ -> channel(WHITESPACE) ; // channel(1)
COMMENT : '/*' .*? '*/' -> channel(COMMENTS) ; // channel(2)
LINE_COMMENT : '//' ~[\r\n]* -> channel(COMMENTS) ; // channel(2)
尝试将注释和空白发送到不同的频道,如《权威的ANTLR 4》一书中所述
参考“第12.1章不同频道上的广播令牌
在执行antlr4 Java.g4时,将显示以下错误
java org.antlr.v4.Tool Java.g4
warning(155): Java.g4:1017:35: rule WS contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
warning(155): Java.g4:1019:40: rule COMMENT contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
warning(155): Java.g4:1021:45: rule LINE_COMMENT contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
我看不出有什么问题?您应该替换以下片段:
@lexer::members {
public static final int WHITESPACE = 1;
public static final int COMMENTS = 2;
}
带字符串:
channels { WHITESPACE, COMMENTS }
您应该替换以下片段:
@lexer::members {
public static final int WHITESPACE = 1;
public static final int COMMENTS = 2;
}
带字符串:
channels { WHITESPACE, COMMENTS }
解决方案是拆分lexer和parser文件。 至于在lexer文件中使用
通道{WHITESPACE,COMMENTS}
完整文件将上载到我的存储库分支。解决方案是拆分lexer和parser文件。 至于在lexer文件中使用
通道{WHITESPACE,COMMENTS}
完整文件将上载到我的存储库。添加了一个新错误[错误(164):Java.g4:42:0:组合语法中不支持自定义通道]在这种情况下,您应该将Lexer和解析器分离到不同的文件:JavaLexer和JavaParser。添加了一个新错误[错误(164):Java.g4:42:0:组合语法中不支持自定义通道]在这种情况下,您应该将Lexer和Parser分离到不同的文件:JavaLexer和JavaParser。