간단한 왼쪽 재귀 문법을 설명하기 위해 grako를 사용하려고하는데, 그렇게하기가 어렵습니다. 마우스 오른쪽 재귀 아무 문제없이 작동합니까 : symbol = /[a-z]/ ;
condition = condition "AND" symbol | symbol ;
start = condition $ ;
그러나, 그것은 작동하지 않습니다 : 내가 찾은 모든
저는 ANTLR의 문법 파서를 연구하고 있습니다. 현재()가 우선 순위가 가장 높은 단항 마이너스 등의 표현식에 대해 작업하고 있습니다. 줄을 추가하면 ANTLR이 오류를 발생시킵니다. 다음 규칙 집합은 상호 왼쪽 재귀 적입니다 [add, mul , unary, not, expr, paren, accessMem, relation, or, assign, eq
약간 다른 문법의 문제가 있습니다. 하나의 규칙 (거대한 문법)이있는 문법이며 여러 번의 호출이 있습니다. Xtext를 사용하여이 문법을 나타내는 법을 알지 못합니다.이 문법은 요구 사항을 지정하는 언어 인 학업입니다. 내 좌절 시도는 다음과 같습니다 : 기사에서 얻어진 발생하는 문법이다 Relax:
root+=General+;
//nao tinha
언어를 구문 분석하려고합니다. 추적의 ANTLR4 파서 규칙이 직접 언어 사양에서 복사 : physical_value
: raw_value DIV factor MUL factor PLUS offset
;
raw_value
: (physical_value MINUS offset) DIV factor
;
하지만 오류가 ANTLR보고 : 규칙의 다
컴파일러 생성에서 할당을 수행하고 왼쪽 재귀에 문제가 있습니다. JavaCC는 아래에 나와있는 expression()과 condition()에 대해 "Left recursion detected"오류를 표시합니다. 두 번째 줄은 모두 동일하므로 문제가 있다고 가정합니다. → Aα | β → βA ' A'→ ε | αA ' 이 왼쪽 재귀를 제거하는 방법을 보여
ANTLR 4.6, 2011 년 11 월 23 일의 스냅 샷. 두 개의 규칙이 각각 왼쪽 재귀 적입니다. 왼쪽 재귀를 노출하는 여러 가지 대안을 확장했습니다. 왼쪽 재귀가 명시 적이기 때문에 ANTLR4가이를 처리합니다. 그러나 두 규칙은 상호 왼쪽 - 재귀 적입니다. 어떻게하면 상호 왼쪽 재귀를 해결할 수 있습니까? 그렇다면 규칙이 완전히 엉망이 아닙니다
어떻게이 왼쪽 재귀를 해결할 수 있습니까? 나는 해결책을 찾는 데 오랜 시간이 걸렸지 만 나는 그것에 투쟁한다. 문장 : Bob은 Max 자동차를 제공합니다. 여기서 보여주고 싶은 요점은 발생하는 왼쪽 재귀입니다. 어떤 NP -> NP, 어떻게이 문제를 해결할 수 있습니까? 지금 python3에서이 코드를 실행하면 충돌이 발생합니다. import nltk.
왼쪽 재귀의 제거 : 나는 https://en.wikipedia.org/wiki/Left_recursion에 표시되는 왼쪽 재귀 제거 알고리즘을 따르려고 노력 S -> id = E
S -> id [ E ] = E
E -> E [ E ]
E -> id
하지만 E -> E [ E ] 선이 나에게주는 문제, 방법은해야 처리 되니? 나는 이것에 대한 완벽
프롤로그에 DCG (Adjective phrase and prepositional phrase)를 작성했습니다. 실행하려고 시도했을 때 ip([every,boy,loved,some,girl])을 입력하면 로컬 스택이 표시됩니다. nbar에 문제가 있다는 것을 깨달았습니다. 누군가 나를 도울 수 있습니까? 많은 감사합니다. %tree
treeP(Term):
저는 C (더 간단한 문법) 용 컴파일러를 작성하려고합니다. 내가 잠시 머물러있는 것이 있습니다. 필자가 정확하게 말하면, 모든 이진 연산은 연관성을 유지합니다. 그래서 우리가 "x + y + z"를 가지면 x + y가 먼저 발생하고 그 다음에 z가 더해진다. 그러나 왼쪽 결합을 강제하지 않으면 무한 왼쪽 재귀가 발생합니까? 지금까지 확인한 모든 솔루션은