소개글
lex를 이용한 pl/0 Compiler 를 구현한 리포트입니다.
목차
1. 구현 범위와 문법 및 설명
2. 실행화면
3. getsym() 함수 lex 프로그램
4. lex 생성 프로그램
5. pl/0 Compiler 코드
본문내용
◎ PL/0 Compiler 구현
◎ 목적
컴파일러를 직접 만들어 봄으로써, 컴파일러의 동작 원리와 구조를 이해한다.
◎ 컴파일러란?
source language로 쓰여진 프로그램을 입력으로 받아들여서, 대등한 target language의 프로그램으로 바꾸어주는 프로그램이다.
◎ PL/0 Tokens
- keyword
begin, call, const, do, end, if, odd, procedure, then, var, while. do, repeat, until, else, for, to, step, write, function, return
- identifier
Any other string of letters and digits beginning with a letter.
- number
A string of (decimal) digits.
- operators, relations, and punctuation marks
+, -, *, /, =, #, <, >, <=, >=, (, ), ,, ;, ., :=, &
◎ 구현 범위와 문법 및 설명
- 구현 범위
1. WRITE statement
2. WHILE
3. FOR
4. REPEAT
5. IF
6. IF ~ ELSE
7. DO ~ WHILE
8. PROCEDURE (parameter - call by value, call by reference)
9. FUNCTION (return)
- 문법 및 설명
No. 1
WRITE statement
문법
WRITE expr;
기능
expr의 결과값을 출력한다.
구현 방법
stack top의 값을 출력한다.
No. 2
WHILE
문법
WHILE 비교식 DO BEGIN
statement;
END;
기능
비교식이 참이면, loop를 반복한다.
구현 방법
cx1 <- cx
condition
cx2 <- cx
gen(JPC, 0, 0)
statement
gen(JPC, 0, cx1)
code[cx2].a <- cx
참고 자료
없음