모든 언어의 문맥 - 자유 문법 (CFG)을 찾아 단어의 각 터미널이 짝수 개가되도록 개의 단어를 찾습니다. | S ⟶ ε : 가능성이 큰 알파벳 Σ 배 내 긴 aproach가 (유일한 비 터미널은 S입니다) SS X ∈ Σ : S ⟶ xSx X, Y ∈ Σ : S ⟶ xxSyy | yySxx | xySxy | xySyx | yxSyx | yxSyx 이 내
다음 규칙에서 왼쪽 재귀를 제거하려면 어떻게합니까? S -> aSAbb | aA 나는 그것을 S -> SA에서 수행하는 방법을 알고있다. A 이것은 S -> A |가된다. 같이'; S '-> A | AS '라고 말하지만,이 질문에서 터미널은 나를 버린다. 편집 : 재귀가 왼쪽 무엇 죄송합니다, 분명히 나는에 혼동되었다. 나는 왼손 기호를 오른쪽에서 제거하는
나는이 언어를 생성하기 위해 문맥 자유 문법을 설계 해요 : { w in {a,b}* | w is of the form uvu^R, where u and v are any strings in {a,b}* }
내가 같이 처음 두 문자열을 정의합니다 : U -> aU | bU | _
V -> aV | bV | _
그리고 그 결합을 : S -> UV
현재 "컴파일러 원리 기술 및 도구"("용 서적"이라고도 함)에 설명 된대로 LALR 파서 생성기를 구현하려고합니다. 이미 많은 부분이 작동합니다. 파서 생성기는 현재 전체 고토 그래프를 생성 할 수 있습니다. Example Grammar:
S' --> S
S --> C C
C --> c C
좋아 설정하고, 나는 한 가지를 제외하고 그것을 가지고 생각 : X -> a X
X -> b X
X -> epsilon
this page의 규칙에 따라,해야이 포함 (X)를 따르 $, 파일 문자의 끝 (규칙 1). 그런 다음, 규칙 3에 따라, FOLLOW (X)는 내 뇌를 녹이게하는 모든 것을 포함합니다 (X). 나에게 직관적으로 FOLLOW (X
Java로 구현 된 CFG 파서를 찾고 있습니다. 것은 자연 언어를 파싱하려고합니다. 그리고 가능한 모든 구문 분석 트리 (모호성)가 필요합니다. 필자는 이미 스탠포드 파서와 같은 많은 NLP 파서를 연구했습니다. 그러나 그들은 주로 통계 데이터 (내가 가지고 있지 않은 treebank)를 필요로하며 새로운 언어로 적응시키기가 어렵고 문서화가 잘되어 있지
저는 Flex와 Lemon을 사용하여 제약 조건을 파싱하는 작은 파서를 작성하고 있습니다. 레몬은 파싱 할 수없는 갈등을 몇 번보고합니다. 문맥 자유 문법에서 파싱 충돌을 제거하기위한 특별한 트릭이 있습니까? 문법은 다음과 같습니다. 다음과 같이 // Reprint of input file "Constraint_grammar.y".
// Symbols: