-
모델 인터프리터 처리계 개발 목표
- 인터프리터의 기본 기능을 직접 구현한다.
- 어휘 분석 루틴
- 구문 분석 루틴
- 프로그래밍 언어에 필요한 기능을 구현한다.
- 변수 처리
- 배열 처리
- 제어문 처리
- 함수 처리
- 코드의 가독성을 최우선으로 한다.
BBI 인터프리터의 언어 사양
책에서는 Basic과 Ruby를 닮은 Interpreter라는 의미를 담은 BBI 인터프리터를 개발한다.
- 변수 선언하지 않고 이용할 수 있으며 최초 대입 시 형과 초기값이 결정된다.
- 초기화되지 않은 변수 사용 시 에러가 발생한다.
- 글로벌 변수를 설정할 수 있다.
- 1차원 배열을 지원한다.
- 변수를 선언 후 사용하도록 옵션을 지원한다.
- 함수 함수를 생성해 사용할 수 있도록 한다.
- return 문을 사용해 값을 반환한다.
- return 문이 없는 경우 기본 값을 반환한다.
- 연산자 변수의 연산을 위한 연산자들을 지원한다.
- 단항 연산자
+ (양수) - (음수) ! (부정) - 이항 연산자
+ (덧셈) - (뺄셈) * (곱셈) / (나눗셈) \ (정수 나눗셈) % (정수 나머지) < (왼쪽이 작다) <= (왼쪽이 작거나 같다) > (왼쪽이 크다) >= (왼쪽이 크거나 같다) == (같다) != (같지 않다) && (AND) || (OR)
- 단항 연산자
- 내장 함수 구현하지 않고 사용할 수 있는 함수가 존재한다.
- print 함수
- println 함수
- input 함수
- toint 함수
- 제어문 조건 제어문과 반복 제어문을 구현한다.
- if 문
- while 문
- for 문
- 분기문 분기를 태울 수 있는 구문을 구현한다.
- break 문 반복 처리를 종료한다.
- return 문 함수를 종료한다.
- exit 문 프로그램을 종료한다.
- 주석 // 를 이용해 행 끝까지 주석으로 처리한다.
- 실행 방법 main 함수가 존재하면 main함수를 실행하고 없으면 처음부터 실행한다.
- 실행 중 함수 정의가 나오면 함수 정의는 건너뛰고 실행한다.
- 프로그램 끝에 도달하면 종료한다.
- exit 문을 만나면 즉시 종료한다.
BBI 인터프리터 프로그램 예제
덧셈 프로그램
sum = 0 println "수치를 입력해 주세요. 0을 입력하면 종료합니다." n = input() while n != 0 sum = sum + n println " >", sum n = input() end
소수를 구하는 프로그램
func is_prime(n) // n이 소수라면 참을 반환한다. return 0 ? n < 2 return 1 ? n == 2 return 0 ? n % 2 == 0 i = 3 while i * i <= n if n % i == 0 return 0 end i = i + 2 end return 1 end // main 함수 func main() for n = 1 to 1000 if is_prime(n) print n, " " end end println "" end
퀵 소트 프로그램
var $d[9] func main() $d[0] = 60 $d[1] = 20 $d[2] = 10 $d[3] = 90 $d[4] = 50 $d[5] = 30 $d[6] = 0 $d[7] = 40 $d[8] = 80 $d[9] = 70 quick_sort(0, 9) for i = 0 to 9 print $d[i], " " end println "" end func quick_sort(top, last) key = $d[(top + last) \ 2] i = top - 1 j = last + 1 while 1 i = i + 1 while $d[i] < key i = i + 1 end j = j - 1 while $d[i] > key j = j - 1 end break ? i >= j wk = $d[i] $d[i] = $d[j] $d[j] = wk end if top < i - 1 quick_sort(top, i - 1) end if j + 1 < last quick_sort(j + 1, last) end end
더보기참고문헌
- 인터프리터의 기본 기능을 직접 구현한다.