Mazi 프로그램 해석기(Interpreter) – (1)

Copyright (c) 2015-, All Rights Reserved by Kwanghoon Choi
(아래 자바 프로그래밍 강의 교재의 내용을 자유롭게 이용하되 다른 웹 사이트 등을 통한 배포를 금합니다.)

Mazi 프로그램 해석기

Java 프로그래밍언어의 연산자, 식, 문장, 제어문을 이용하여 간단한 프로그래밍언어 Mazi로 작성한 프로그램을 해석해서 실행하는 해석기(interpreter)를 작성한다.

 

1. Mazi의 구문

프로그래밍언어 Mazi는 식과 문장으로 구성되어 있다. Mazi의 구문은 BNF(Backus-Naur Form)으로 다음과 같이 정의할 수 있다.

Expr ::= number
      |  variable
      |  Expr + Expr 
      |  Expr - Expr
      |  Expr * Expr
      |  Expr / Expr
         
Stmt ::= variable = Expr
      |  READ variable
      |  PRINT Expr

식 Expr은 숫자나 변수가 될 수 있고 덧셈, 뺄셈, 곱셈, 나눗셈 연산자로 구성할 수 있다. 예를 들어,

  • 123이나 4는 숫자로 이뤄진 Mazi 언어의 식이고,
  • x나 z123은 Mazi 언어의 변수이다. Mazi 언어의 변수는 첫 문자가 알파벳이다.
  • x + 123이나 y + z * w와 같이 한개 이상의 연산자로 식을 구성할 수 있다.

문장은 할당문, 입력문, 출력문 세 가지를 우선 도입한다. 프로그램의 각 라인에 하나의 문장만을 작성한다.

  • radius = 123
  • z = 2 * radius
  • PRINT z
  • READ w
  • PRINT w

이 외에도 IF 문, FOR 문, WHILE 문 등 필요한 제어문을 추가할 수 있다.

Stmt ::= ...
      | IF Expr
      | ENDIF
      | FOR variable = Expr TO Expr DO
      | ENDFOR
      | WHILE Expr
      | ENDWHILE

 

IF 문, FOR 문, WHILE 문을 추가하려면 x == y나 x < 123 등과 같은 조건식을 표현할 수 있도록 Expr을 확장해야 한다. 이 점에 관해서 나중에 논의한다.

Leave a Reply

Your email address will not be published. Required fields are marked *