Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查方法是否有antlr注释_Java_Comments_Antlr4 - Fatal编程技术网

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。