我需要编写一个Java程序,使用ANTLR4
,给定一个带有单个方法的源文件,可以计算变量,运算符,标点符号和保留字的数量。
如何根据类型使用ANTLR4
来计算令牌?
答案 0 :(得分:0)
您可以使用这样的hashmap来跟踪所有单词类型
@header {
import java.util.HashMap;
}
@members {
// Map variable name to Integer object holding value
HashMap memory = new HashMap();
}
Identifier
: IdentifierNondigit( IdentifierNondigit | Digit )* {
if(memory.containsKey(getText())){
memory.put(getText(),(((Integer)memory.get(getText()))+1));
}
else {
memory.put(getText(),1);
}
System.out.println(getText()+" : "+memory.get(getText()));
}
// { getText().length()<=3}?{ String str=getText(); while(str.length()<=3){ str=str+str;} setText(str);}
| IdentifierNondigit ( IdentifierNondigit | Digit)*
;
像这样,代替getToken(),你可以直接说“保留”键并在每次增量后存储计数