更改 Java.g4 语法文件
Change Java.g4 grammar file
我需要获取 java 文件方法声明的参数。
我正在使用 JavaBaseListener 接口和那些方法:
@Override
public Object visitMethodDeclaration(JavaParser.MethodDeclarationContext ctx) {
TokenStream tokens = parser.getTokenStream();
String type = "void";
if(ctx.type() != null) {
type = tokens.getText(ctx.type().getSourceInterval());
}
String args = tokens.getText(ctx.formalParameters());
System.out.println("\t" + type + " " + ctx.Identifier() + args + ";");
return super.visitMethodDeclaration(ctx);
}
问题是,方法名和方法类名之间没有空格。
输入:private void addLoan(Loan loan)
输出:void addLoan(Loanloan);
我尝试更改 java.g4 语法文件,并在其中添加了空格
正式参数
: variableModifier* 类型 " " variableDeclaratorId
;
但现在我有很多错误,例如:
行1:6输入没有可行的选择'public '
行 1:12 外来输入 ' ' 期待标识符
行 1:20 无关输入 ' ' 期待 {'extends', 'implements', '{', '<'}
第 2:5 行在输入 'List ' 处没有可行的替代方案
...
我的问题的最佳解决方案是什么?我该如何处理?
感谢转发
在java8
语法中发现in this repository,WS
规则
WS : [ \t\r\n\u000C]+ -> skip
将白色 space 扔掉 (-> skip
)。
使用小文法in this answer,可以看出-> skip
和-> channel(HIDDEN)
的区别。
使用 WS : [ \t] -> channel(HIDDEN) ;
输出是
Expression found : 3 + 4
使用 WS : [ \t] -> skip ;
输出是
Expression found : 3+4
使用命令
$ grun Question question -tokens -diagnostics input.txt
你可以看到,在第一种情况下,WS
个标记出现在标记列表中,而在第二种情况下,它们消失了。
清楚地表明 getText()
依赖于它:paydeltaco98
与 pay delta co 98
.
我需要获取 java 文件方法声明的参数。 我正在使用 JavaBaseListener 接口和那些方法:
@Override
public Object visitMethodDeclaration(JavaParser.MethodDeclarationContext ctx) {
TokenStream tokens = parser.getTokenStream();
String type = "void";
if(ctx.type() != null) {
type = tokens.getText(ctx.type().getSourceInterval());
}
String args = tokens.getText(ctx.formalParameters());
System.out.println("\t" + type + " " + ctx.Identifier() + args + ";");
return super.visitMethodDeclaration(ctx);
}
问题是,方法名和方法类名之间没有空格。 输入:private void addLoan(Loan loan)
输出:void addLoan(Loanloan);
我尝试更改 java.g4 语法文件,并在其中添加了空格
正式参数 : variableModifier* 类型 " " variableDeclaratorId ;
但现在我有很多错误,例如:
行1:6输入没有可行的选择'public ' 行 1:12 外来输入 ' ' 期待标识符 行 1:20 无关输入 ' ' 期待 {'extends', 'implements', '{', '<'} 第 2:5 行在输入 'List ' 处没有可行的替代方案 ...
我的问题的最佳解决方案是什么?我该如何处理? 感谢转发
在java8
语法中发现in this repository,WS
规则
WS : [ \t\r\n\u000C]+ -> skip
将白色 space 扔掉 (-> skip
)。
使用小文法in this answer,可以看出-> skip
和-> channel(HIDDEN)
的区别。
使用 WS : [ \t] -> channel(HIDDEN) ;
输出是
Expression found : 3 + 4
使用 WS : [ \t] -> skip ;
输出是
Expression found : 3+4
使用命令
$ grun Question question -tokens -diagnostics input.txt
你可以看到,在第一种情况下,WS
个标记出现在标记列表中,而在第二种情况下,它们消失了。
getText()
依赖于它:paydeltaco98
与 pay delta co 98
.