public class leftrec {
static int isleft(String[] left,String[] right)
{
int f=0;
for(int i=0;i<left.length;i++)
{
for(int j=0;j<right.length;j++)
{
if
내가 람다 미적분 파서를 작성하는 것을 시도하고있다, 나는 정의 된 문법 LLR에없는 것 같다 E ::= x | \x.E | EE | (E)
내가 왼쪽 재귀 감소 : E ::= xE' | \x.EE' | (E)E'
E'::= EE' | <empty>
를 잘 작성하지 것을, 아무도 도와 드릴 수 있습니까?
왼쪽 재귀를 할 때 뭔가 궁금합니다.이 질문을했습니다. 그리고 재귀를 떠났을 때 나는 F를 모든 것에 추가했습니다. 우리는 항상 왼쪽에 대해 이렇게합니까 재귀 (나의 선생님은 그것을 잘 설명하지 않았다). 1)
S -> aSb | bSb | Sc | bc
left recursion:
S -> aSbF | bsbF | bcF
F -> cF | ε
방금 ANTLR 4.2.2에서 이상한 문제가 발생했습니다. (단순화 된) Java 문법을 고려하십시오. 이 컴파일되지 않습니다 : classOrInterfaceType
: (classOrInterfaceType) '.' Identifier
| Identifier
;
ANTLR 다음과 같은 오류를 출력합니다 error(119
은 G ()와 동일한 언어를 허용하는 LL (1) 문법을 구성합니다 (대체, 인수 분해, 왼쪽 재귀 제거) G over Σ = {0, 1, 2}:
S → Y | 1X
X → 1X | 0
Y → Y0 | 1X1 | 2X2
지금까지 이런 짓을 : X 재귀 그렇게 남아 : X -> 1F | 0F
F -> 1F | e
내가 LL
상호 왼쪽 재귀에 대해 다른 질문을하는 것은 유감 스럽다. 내 상황이 내 상황과 다르거 나 다른 사람의 문법과 관련이 있다고 생각할 수 없다. 나는 comp SCI 세계에 약간 새로운데 (나는 영어로 자기 자신을 가르친다. 이것은 나의 목표 언어이며, 현재는 ANTLR4이다.) 가능하다면, CS 주요 용어가 아닌 평신도 용어로 설명하라. 대수학 및 기호 파
저는 부끄러워합니다. int에서 bool로, 그리고 그 반대로 형식 변환을 사용하여 언어 문법을 작성했습니다. logic_expr : expr NOT? OR | AND expr
| expr '|' expr SMALLER | LARGER
| NUMBER
| NUMBER_SHORT
| IDENT
| LOGI