1
나는 JavaCC를 사용하는 간단한 언어에 대한 파서를 연구 중이다. 내 토큰 선언 섹션에서토큰의 "그룹"정의하기
, 나는 인해 주문이
< CONSTANT: <INTEGER> | <FLOAT_NUMBER> | <BOOLEAN> >
< INTEGER: "0" | ("-")? ["1"-"9"](["0"-"9"])* | "0x" (["0"-"9"] | ["a"-"f"] | ["A"-"F"])+ >
< FLOAT_NUMBER: ("-")? (["0"-"9"])+ "." (["0"-"9"])+ ("E" ("-")? (["0"-"9"])+)? ("D")? >
< BOOLEAN: "true" | "false">
CONSTANT
같은 것을 가지고 INTEGER
보다 우선 순위이다. 그러나 내가 특별히 INTEGER
을 필요로하는 문법 부분이 있습니다. 이러한 경우에 INTEGER
이 CONSTANT
으로 구문 분석되었으므로 파서가 예외를 throw합니다.
간단한 해결책은 CONSTANT
토큰을 제거하고 찾아서 (<INTEGER> | <FLOAT_NUMBER> | <BOOLEAN>)
으로 바꾸는 것입니다. 그래도 다소 기이하게 느껴진다.
CONSTANT
을 단순히 다른 토큰의 그룹으로 정의하는 방법이 있습니까? CONSTANT
은 자체적으로 토큰이 아니지만 (<INTEGER> | <FLOAT_NUMBER> | <BOOLEAN>)
의 약어일까요?
감사합니다.
가 동의, 감사 :
같은 생산 규칙이 점을 넣어하는 것이 좋습니다. –