LR 파싱 테이블을 사용해서 직접 S/R 파서 만들기 :: 2007/06/13 16:30
아래 문법에 대한 파싱 테이블을 구조체 배열에 저장한 후, 현재 토큰과 상태에 따라 shift/reduce 과정을 반복하는 파서입니다. 스택은 모두 stl의 벡터를 사용해서 구현되었으며, 구현을 단순화 하기 위해서 파서 과정의 오류 처리는 모두 생략하였습니다.
문법
1. E -> E + T | T
2. T -> T * F | F
3. F -> (E) | id
get_tok함수가 입력받은 문자열을 스캐닝하는 함수이며, do_reduce함수가 reduce를 수행하는 함수입니다. 그리고 main 함수의 가장 큰 while문이 전체 파서 알고리즘을 표현하고 있습니다.
컴파일에 사용된 g++ 버전과 컴파일 과정
id+id+id$을 파싱하는 과정
id*(id+id)$을 파싱하는 과정
Trackback Address :: http://www.jiniya.net/tt/trackback/517






















