현재 프로그래밍 언어 용 (아주) 작은 인터프리터/컴파일러를 작성하려고합니다. 언어에 대한 구문을 설정 했으므로 언어의 문법을 적어 둘 필요가 있습니다. 나는 약간의 연구 끝에 LL (1) 파서를 사용하는 것이 가장 쉬운 방법이라고 생각하기 때문에 LL (1) 파서를 사용하려고합니다.올바른 LL (1) 문법 작성?
본인은이 도메인에 익숙하지 않지만 수집 한 내용에서 BNF 또는 EBNF를 사용하여 구문을 형식화하는 것이 좋습니다. 그러나 모든 문법이 LL (1) 파서를 사용하는 구현에 적합하지는 않습니다. 따라서 LL (1) 형식으로 문법을 작성하는 올바른 방법 (또는 권장)이 무엇인지 궁금합니다.
도움 주셔서 감사합니다. Charlie.
추신 : 저는 하스켈의 파섹 (Parsec) 라이브러리를 사용하여 파서를 작성하려고합니다.
EDIT : 또한 SK-logic에 따르면 Parsec은 무한한 미리보기 (LL (k)?)를 처리 할 수 있지만 질문은 여전히 그 문법 유형을 나타냅니다.
파섹은 무한한 선견자가 될 수 있습니다. 실적 이외의 이유로 LL (1)로 제한 할 필요는 없습니다. –
그리고 반드시 LL (k) 일 필요는 없습니다. 상황에 민감 할 수 있습니다. 따라서 걱정해야 할 것은 왼쪽 재귀를 피하는 것뿐입니다. –