0
AST 및 출력 의미 론적 경고를 다시 쓰려고합니다. 내가 렉서 규칙에 []를 사용하면 파서 규칙을 수락하지만 룰을 따르지 않습니다? 나는 "VAR"라는 파서 규칙이와 나는 이런 식으로 뭔가 수행하여 선언 된 경우 값을 테스트 할 것입니다 :[]로 트리 재 작성
-> ^(DECLARATION TYPE var[Main.symbols.test_declared($var.text)] expression?);
을하지만 난이 얻을 :
unexpected token: Main.symbols.test_declared($var.text)
이 얻을 수있는 방법이있다 이 주변?
대부분의 자습서 저는 LEXER 규칙 만 사용했지만 본인의 문법 (예 : IDENTIFIER는 var의 일부)을 기반으로 할 수 없습니다.
작동
렉서 규칙 "IDENTIFIER"는 있지만 "var"가 아닙니다. 왜 그런지 모르겠다 고요? 제 질문이 맞습니까? – Undisputed007이것은 달성하려는 코드 조각입니다. 그러나 여기에 사용 된 "VAR"은 LEXER 규칙입니다. 이후 나는이 예제를 따르기 때문에, 나는 "var"대신 파서 (parser) 규칙을 사용하므로 오류가 발생합니다. ^ ('='VAR exp) ->^('='VAR [Compile.symbolTable.lookupStaticName ($ VAR.text)] exp) – Undisputed007