나는 들소의 사용법을 스스로에게 가르치려고 노력한다. bison (1) 맨 페이지는 bison에 대해 말합니다.
LALR (1), IELR (1) 또는 표준 LR (1) 파서 테이블을 사용하여 결정적 LR 또는 GLR (Generalized LR) 파서를 생성하십시오.
IELR 파서 란 무엇입니까? 월드 와이드 웹에서 찾은 모든 관련 기사는 유료입니다.
나는 들소의 사용법을 스스로에게 가르치려고 노력한다. bison (1) 맨 페이지는 bison에 대해 말합니다.
LALR (1), IELR (1) 또는 표준 LR (1) 파서 테이블을 사용하여 결정적 LR 또는 GLR (Generalized LR) 파서를 생성하십시오.
IELR 파서 란 무엇입니까? 월드 와이드 웹에서 찾은 모든 관련 기사는 유료입니다.
답변:
IELR (1) 파싱 알고리즘은 조엘 E. 데니에 의해 2008 년에 개발되었다 박사 학위의 일환으로 Clemson University의 Brian A. Malloy 감독하에 연구. IELR (1) 알고리즘은 1977 년 David Pager가 개발 한 소위 "최소"LR (1) 알고리즘 의 변형으로, 1965 년 Donald Knuth가 발명 한 LR (k) 구문 분석 알고리즘 의 변형입니다 . IELR (1)의 IE는 부적절한 제거를 나타냅니다 (마지막 섹션 참조).
LR (1) IELR (1)의 부분을 나타내며, L의 오른쪽 송금, R ightmost 도출 1 룩어 토큰. LR (1) 파서는 표준 파서라고도합니다. 이 클래스의 구문 분석 알고리즘은 구문 분석 중에 수행 할 다음 조치를 결정 하는 스택 및 상태 전이 테이블 과 함께 상향식 시프트 감소 구문 분석 전략을 사용합니다 .
역사적으로 LR (1) 알고리즘은 전이 테이블에 대한 큰 메모리 요구 사항으로 인해 단점이있었습니다. Pager의 개선 사항은 전이 테이블이 생성 될 때 전이 상태를 결합하여 테이블 크기를 크게 줄이는 방법을 개발하는 것이 었습니다. 따라서 Pager의 알고리즘은 LR (1) 파서가 공간 및 시간 효율성과 관련하여 다른 파싱 전략과 경쟁 할 수 있도록합니다. "최소 LR (1) 파서"라는 문구는 페이저 알고리즘에 의해 도입 된 전이 테이블의 최소 크기를 지칭한다.
최소 LR (1) 알고리즘은 구문 분석 할 언어에 대한 특정 입력 문법을 기반으로 전이 테이블을 생성합니다. 다른 문법으로 같은 언어를 만들 수 있습니다. 실제로, 비 LR (1) 문법이 LR (1) 구문 분석 가능한 언어를 생성 할 수 있습니다. 실제로, LR (1) 파서 생성기는이 사실을 수용하기 위해 두 가지 가능한 상태 전이 ( "시프트-감소 충돌") 사이의 충돌을 해결하기위한 사양으로 비 LR (1) 문법을 허용합니다. Denny와 Malloy는 비 LR (1) 문법이 LR (1) 언어를 생성하더라도 특정 비 LR (1) 문법이 제공 될 때 Pager의 알고리즘이 LR (1) 언어를 구문 분석 할 수있는 강력한 파서를 생성하지 못한다는 것을 발견했습니다.
Denny와 Malloy는 널리 사용되는 성숙한 소프트웨어 인 Gawk와 Gpic이 잘못된 파서 작업을 수행함을 보여줌으로써 이러한 제한이 단지 학문적 인 것이 아니라는 것을 보여줍니다.
Denny와 Malloy는 Pager의 알고리즘에 의해 생성 된 전이 테이블과 동등한 LR (1) 문법의 전이 테이블을 비교하여 Pager 알고리즘의 결함 원인을 연구하고 Pager의 전이 테이블에 나타나는 불충분 한 항목의 두 소스를 식별 했습니다. 알고리즘이지만 LR (1) 전이 테이블에는 없습니다. Denny와 Malloy의 IELR (1) ( 부적절한 제거 LR (1)) 알고리즘은 페이저 알고리즘과 크기가 거의 동일한 전이 테이블을 생성 할 때 이러한 부적합 을 제거 하도록 설계된 알고리즘입니다.
주장을 소개하는 것을 기사 : IELR (1) : 실용 LR (1) (archive.org를 통해) 갈등 해결과 비 LR (1) 문법에 대한 파서 테이블 조엘 E. 데니와 브라이언 A. 멀로이, 클렘 슨 대학의 , Malloy 사이트에서 무료로 사용할 수 있습니다.
그들이 가치있는 것은 대답 할 수없는 것입니다. (개인적으로 나는 그런 주름진 CFG 파싱의 필요성을 이해하지 못한다-왜 당신이 GLR을 사용할 수있을 때 표현력을 제한 하는가? 나에게 의미가있는 것은 TAG 또는 PEG (자연스럽고 표현력을 추가하는 것) 또는 나무와 같은 것이다. 문법 (XML과 같은 언어의 경우 구문 분석 트리를 인식하는 것은 의도적으로 문제가되지 않습니다.)