상호 왼쪽 재귀에 대해 다른 질문을하는 것은 유감 스럽다. 내 상황이 내 상황과 다르거 나 다른 사람의 문법과 관련이 있다고 생각할 수 없다. 나는 comp SCI 세계에 약간 새로운데 (나는 영어로 자기 자신을 가르친다. 이것은 나의 목표 언어이며, 현재는 ANTLR4이다.) 가능하다면, CS 주요 용어가 아닌 평신도 용어로 설명하라.상호 왼쪽 재귀 ANTLR 4
대수학 및 기호 파생물이 필요한 프로그램을 작성하고 있으며 물론 구문 분석이 필요하며 나무가 작동해야하지만 ANTLR4가 직접 지원한다고 생각하여 걱정하지는 않습니다. 왼쪽 재귀,하지만 분명히 그것은 어떻게 든하지 않습니다. 결과물에서, [식]이 서로 반복적으로 남아 있고 분명히 허용되지 않는다는 것을 계속 말하고 있습니다 ...? 내 질문 :
1) 누군가가 왼쪽 재귀/상호 왼쪽 직접 재귀가있을 경우 차이점을 설명 할 수 있습니까?
2) 내 문법에서이 재귀 성가심을 일으키는 원인과 해결 방법을 설명 하시겠습니까? 그리고 이것이 주제가 맞는지 확실하지 않습니다.
3) 사람들은 대안과 라벨링 대안에 대해 말합니다. (나는 그들이 #label 표기법을 의미한다고 생각합니다.) 저건 뭘위한거야?
grammar MathProcessor;
@header {package utils;}
END: ';';
EQUALS: '=';
SIN: 'sin(';
COS: 'cos(';
TAN: 'tan(';
SEC: 'sec(';
CSC: 'csc(';
COT: 'cot(';
LN: 'ln(';
EPOW: 'pow(';
RPAREN: '(';
LPAREN: ')';
EXP: '^';
MULT: '*';
DIV: '/';
ADD: '+';
SUBT: '-';
VAR: ('a'..'z'|'A'..'Z');
INT: ('0'..'9')+;
mathobj: ((equation|expression) END) EOF;
equation: (expression '=' expression);
expression:
((RPAREN|SIN|COS|TAN|SEC|CSC|COT|LN|EPOW) expression (RPAREN)) #parenOps
| (expression EXP expression) #exponent
| (expression (MULT|DIV) expression) #multiplyDivide
| (expression (ADD|SUBT) expression) #addSubtract
| (VAR|INT) #varInt
;
정말 고마워요! 마침내 ANTLRworks에서 구문 트리를 멋지게 보이게하기 위해 약간의 조정 작업을 마쳤습니다! 사용 방법을 알아낼 수 있는지 또는 작동 순서를 유지할지 여부는 알 수 있습니다. 그러나 나중에 설명해 드리겠습니다. – user3326093