기본적으로 token.getType()
메서드는 int
을 반환하며 생성 된 *.tokens
파일을로드하고 구문 분석하지 않고 코드를 기반으로 코드를 작성하는 것은 거의 쓸모가 없습니다.Antlr4는 더 의미 있고 일관된 형식 이름을 만듭니다.
ANTLR 사용자는 대개 토큰 유형을 일관되게 사용하려고합니까? 일관성을 유지한다는 것은 문법을 변경하면 토큰 번호가 변경 될 가능성이 높다는 것입니다.
일반적으로 *.tokens
파일을로드하고 구문 분석하는 Utility
클래스를 생성합니까?
Search.tokens
파일
:
LOCATION=8
TIME=5
AGE=3
WS=1
COMPARATIVE=9
GENDER=4
PHRASE=2
샘플 토큰 스트림 :
(token.getType(), token.getText())
9 [MegaBlocks vs Legos], -1 [<EOF>]
현재 내가 뭘 뭔가 같은 :
public class TokenMapper {
private HashMap<Integer, String> tokens;
public TokenMapper(String file) {
tokens = new HashMap<Integer, String>();
parse(file);
}
private void parse(String file) {
// trivial code that maps the Integer typeId to the String name
}
public Integer type(String type) {
for(Map.Entry<Integer, String> entry : tokens.entrySet()) {
if(entry.getValue().equals(type)) {
return entry.getKey();
}
}
return null;
}
public String type(Integer type) {
return tokens.get(type);
}
}
그럼 난 항상 참조 할 수 있습니다 내 LOCATION
또는 GENDER
과 같은 이름으로 토큰을 만들고 h 변경하려는 경향이있는 Integer
값에 대해 걱정할 필요가 없습니다.
와우, 나는 그것을 알아 채지 못했습니다! –