[구현 과제] 재귀하강 파서 구현

2024. 5. 4. 14:13Programing Language

프로그 개요

l    프로그램은 EBNF 문법이 정의되는 언어를 위한 Recursive-Descent Parser C/C++, Java, Python으로 각각 구현한 프로그램임, 프로그램은 아래의 EBNF문법을 모두 구현함

https://github.com/Lee-min-gue/study/tree/2cdd07996137c7e6db9bca71875fd754e658a05f/programming_language/my%20recursive%20descent%20parser

프로그램 주요 로직

  1. 사용자 입력 처리:
    • 프로그램 실행 시 사용자의 입력을 한 줄씩 받습니다.
    • 사용자가 'exit'을 입력할 때까지 계속해서 입력을 받습니다.
  2. 전역 변수 및 함수:
    • 전역 변수로는 pos (커서의 위치)와 token (토큰)이 있습니다.
    • getNextToken() 함수를 사용하여 다음 토큰을 읽고 커서의 위치를 관리합니다.
  3. 프로그램 실행 흐름:
    • program() 함수:
      • 입력이 끝날 때까지 각 statement를 읽습니다.
    • statement() 함수:
      • 첫 토큰에 따라 할당문 또는 출력문을 실행합니다.
  4. 수식 처리:
    • expr() 함수:
      • 토큰을 미리 보고 산술 표현식 또는 불 표현식으로 분기합니다.
    • bexpr() 함수:
      • compare()를 사용하여 true 또는 false를 반환합니다.
    • aexpr() 함수:
      • term(), factor(), number(), dec() 함수를 사용하여 숫자의 사칙 연산을 수행합니다.

 

 

실행결과