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)$을 파싱하는 과정
사용자 삽입 이미지

스폰서
글타래

  • 2주간 인기 글
  • 2주간 인기글이 없습니다.
Trackback Address :: http://jiniya.net/tt/trackback/517
  • 현금섯다

    Tracked from 현금섯다 | 2020/05/21 10:55 | DEL

    괴짜 프로그래머의 일상사~@@ - LR 파싱 테이블을 사용해서 직접 S/R 파서 만들기

Name
Password
Homepage
Secret