ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터프리터...8
    일지 2020. 10. 27. 20:43

    구문 분석

    인터프리터는 소스 프로그램을 읽은 뒤 의미가 있는 최소 단위로 분할한다. 이때 의미가 있는 최소 단위를 토큰이라고 한다. 토큰의 종류는 다음과 같다.

    • 키워드
    • 식별자
    • 상수
    • 문자열 리터럴
    • 연산자
    • 분리자

     

    의미가 있는 최소 단위를 토큰과 단어로 구분해 부르기도 하며 각각의 의미는 다음과 같다.

    • 토큰 생성된 종류별 정보 전체
    • 단어 규칙과 일치하는 문자열 값

     

    어휘 분석 루틴의 역할

    일반적으로 어휘 분석 루틴은 구문 분석 루틴에서 호출되며 다음의 기능을 담당한다.

    • 주석 제거
    • 라인 넘버 관리
    • 구분 문자 제거
    • 토큰 추출 및 정보 설정

     

    문을 실행할 때마다 소스 프로그램을 어휘 분석하는 것은 효율적이지 않으므로 다음과 같이 구성한다.

    1. 소스 프로그램을 읽는다.
    2. 어휘 분석을 하고 단축 기호화한 내부 코드로 변환한다.
    3. 내부 코드에서 토큰을 추출하면서 구문 분석 및 실행한다.

     

    ※ 2와 3은 토큰을 추출한다는 의미에서 같은 작업이지만 2에서 처리에 필요한 정보를 심어두어 3에서 토큰 추출이 빨라지게 된다.

     

     

    - BBI 인터프리터에서의 예제

    • convert() 선두에 출현하는 토큰(for 등)을 분석한다
    • convert_rest() 나머지 토큰을 분석한다
    • nextTkn 소스 프로그램에서 타음 토큰을 추출한다
    • statement() '문'을 분석한다
    • expression() '식'을 분석한다
    • nextCode() 내부 코드에서 다음 토큰을 추출한다

     

    소스 프로그램에서 토큰 추출

    구문 분석
    {
        convert()
            token = nextTkn();
        convert_rest()
            token = nextTkn();
    }
    어휘 분석
    {
        nextTkn()
            다음 토큰을 반환한다
            ...
    }

     

    내부 코드에서 토큰 추출

    구문 분석
    {
        statement()
            code = nextCode();
        expression()
            code = nextCode();
    }
    어휘 분석
    {
        nextCode()
            다음 토큰을 반환한다
            ...
    }

     

    댓글

Designed by Tistory.