ll

    0

    1답변

    ANTLR을 사용하여 영어와 같은 도메인 특정 언어를 구성 중입니다. 키워드는 문맥에 따라 다릅니다. (나는 소리가 더러운 것처럼 느껴지지만 프로그래머가 아닌 사용자에게는 많은 의미가 있습니다.) 예를 들어 or과 not과 같은 일반적인 논리 연산자는 대괄호로 묶을 때 식별자로 처리해야합니다 이]. 나의 현재의 접근 방식은 다음과 같습니다 AND: 'and

    0

    1답변

    : <A> ::= <B> <-> <A> | <B> <B> ::= <C> -> <B> | <C> <C> ::= <D> \/ <C> | <D> <D> ::= <E> /\ <D> | <E> <E> ::= <F> | -<F> <F> ::= <G> | <H> <G> ::= (<A>) <H> ::= p | q | r | ... | z 우선 순위 con

    2

    2답변

    A -> Ca B -> Cb C -> e|f 에 의해 정의되는 (1)? 나는 이것을 한 줄로 압축 할 수 있다는 것을 알고 있지만,이 질문의 요지는 아니다. 주로 LL (1) 문법은 동일한 비 터미널로 시작하는 여러 규칙을 가질 수 있습니까? 후속 질문으로, 위의 문법에 대한 구문 분석 테이블을 어떻게 구성합니까? 나는 다음 밖으로 일했다 : 나는

    1

    1답변

    ANTLR 4 문법이 LL (1)인지 확인하고 싶습니다. There is an option to do just that in older versions of ANTLR. ANTLR 4에서 비슷한 것이 있습니까? 나는 the documentation 통해 보았지만 아무것도 찾지 못했습니다. 특히 the page on options이 부족한 것 같지만 모든 가

    2

    1답변

    이 문제를 해결하기 위해이 CFG를 LL (1) 구문 분석 테이블에 작성하려고합니다. 그러나 문제는 L/A 사이에 반복적 인 순환이 반복되어이를 수행하는 방법을 설명하는 리소스를 찾을 수 없다는 것입니다. 여기에 문제의 CFG는 다음과 같습니다 L -> Aa | Bb A -> La | aa B -> bBb | ba 사람이 문법에서이주기를 제거하는 방

    0

    1답변

    내가 알고 언어는 LL이라고합니다 (1)은 LL (1) 문법에 의해 생성 될 수있는 경우. LL (1) 문법 not ambiguous and not left-recursive. 을임을 나타낼 수 있지만 문제에 부딪쳤다. 왜 문법 S-> aBDb B -> 람다 D-> dD를 | 람다 왜이 문법은 LL (1)도 SLR도 LALR하지? 누구든지 나를 묘사

    0

    2답변

    런타임에 파서의 문법 규칙을 변경해야하며 규칙이 바뀔 때마다 구문 분석기를 다시 생성하지 않아야합니다. 코드 생성을 사용하지 않는 파서가 있습니까? 당신이 사용할 수있는

    4

    2답변

    저는 현재 손으로 파서를 만들고 있습니다. LL (1) 파서입니다. 현재로서는 위대한 인식 자입니다. 함수 구문 분석 (목록 토큰)은 토큰이 언어의 구성원인지 여부를 결정합니다. 이제 해당 입력에 해당하는 AST를 작성하려고합니다. 그러나, 나는 그것을 재귀 하강 방식으로 구현하는 방법을 이미 알고있다. 즉, 도전, 나는 고전적인 알고리즘을 사용하여 스택을

    0

    1답변

    시험에 대한 수정을 위해 시험 문제를하고 있습니다. 질문 중 하나는 이전 질문에서 계산 된 첫 번째 및 후행 집합에서 LL (1) 구문 분석 표를 생성하는 것입니다. 이제 처음 세트를 만들고 올바르게 세트를 작성했으며 테이블에 셀에 중복 항목이 없으므로 문법이 유효한 LL (1) 문법이라고 가정했습니다. 유효한지, 왜 내가 테이블을 만들 필요가 있는지를 결

    0

    1답변

    드래곤 북의 부록에서 LL (1) 프런트 엔드가 예제로 제공되었습니다. 나는 그것이 매우 도움이된다고 생각한다. 그러나 아래의 문맥 자유 문법에 대해서는 적어도 LL (2) 파서가 필요하다는 것을 알게되었습니다. statement : variable ':=' expression | functionCall functionCall : ID'('