내 사용자 정의 편집기에서 추가 오류 파서 규칙에서 감지 된 오류를 수정하고 싶습니다.
예를 들어 내 파서에 다음 오류 규칙이 있습니다.
| 'if' '(' expr ')' ')' expr
불필요한 괄호를 감지합니다.
청취자에서 시작 및 중지 토큰을 얻고 위치를 계산할 수 있습니다.
그러나 내 수정을 위해 내 사용자 정의 언어 편집기에서 위치를 계산하기 위해 추가 괄호 토큰 (인덱스 5)이 필요합니다. 그러면 문자를 삭제할 수 있습니다.
파서 규칙에 따라 지정된 인덱스에서 토큰을 얻는 올바른 방법은 무엇입니까?
도움을 주시면 감사하겠습니다.
가장 쉬운 방법은 다음 과 같이 추가 레이블을 지정 하는 것입니다 )
.
| 'if' '(' expr ')' extra=')' expr
리스너에서 다음을 수행하여의 색인을 가져올 수 있습니다 )
.
int index = ctx.extra.getStartIndex();
과 다른 경우 extra
레이블 구문 분석되지 않은, 당신은 여러 대안이되도록하면 NPE를 얻을 수 있는지 확인 ctx.extra
하지 않습니다 null
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다