저는 스칼라의 파서를 사용하여 계산기를 작성하려고 노력해 왔으며 재미 있었지만 연산자 연관성이 거꾸로 있다는 것을 제외하고는 저의 문법을 왼쪽 재귀 적으로 만들려고 할 때, 완전히 모호하지만 스택 오버플로가 발생합니다. 데프 빼기 : 내가 좋아하는 규칙이있는 경우, 명확하게 파서 [지능] = NUM ~ "-"~ 추가 {X => x._1._1 - x._2
저는 연산자 우선 순위가없는 문법을 만들려고합니다. 그러나 하나의 연산자를 사용하거나 괄호로 묶어야합니다. (단순화를 위해 유효한 연산자 대신 여기에 id|int_literal etc 및 + 대신 test을 사용). 따라서 예 : test + test ///valid!
(test + test) + test ///valid!
(test + test) +
PLY를 사용하여 JavaScript 파일을 구문 분석하는 Python 프로그램을 만들고 싶습니다. PLM을 사용하는 Javascript 규칙 인 ECMAScript를 구현하는 파서의 소스를 발견하지 못했습니다. 내가 찾은 있는 유일한 방법은 자바 스크립트와 ECMAScript를 구문 분석하는 일부 ANTLR 문법 파일이었다 http://www.antlr.
현재 프로그래밍 언어 용 (아주) 작은 인터프리터/컴파일러를 작성하려고합니다. 언어에 대한 구문을 설정 했으므로 언어의 문법을 적어 둘 필요가 있습니다. 나는 약간의 연구 끝에 LL (1) 파서를 사용하는 것이 가장 쉬운 방법이라고 생각하기 때문에 LL (1) 파서를 사용하려고합니다. 본인은이 도메인에 익숙하지 않지만 수집 한 내용에서 BNF 또는 EBNF
저는 최근에 LL (1)이 아닌 많은 문법을 가지고 놀았으며 그 중 많은 문법이 LL (1) 인 문법으로 변형 될 수 있습니다. 그러나 LL (1)이 아닌의 명확한 언어 의 예는 본 적이 없습니다. 다시 말하면, 언어에 대한 모호하지 않은 문법이 LL (1)이 아닌 언어), 우연히 우연히 만났을 때 내가 발견 한 것을 증명할 수있는 방법에 대한 생각이 전혀