검색어 입력폼

mini - Pascal 언어 정의

저작시기 2008.06 | 등록일 2008.10.27 한글파일 한컴오피스 (hwp) | 10페이지 | 가격 2,000원

소개글

mini-Pascal언어 정의
우선 lex와 yacc프로그램은 윈도우용인 Parser Generator를 이용하였다.
여기서 정의하는 언어는 Pascal과 어느 정도 비슷하지만 최대한 간단한 형식으로 나타내기 위해 선언부를 따로 두지 않았고 begin키워드라든가 레코드, procedure, function, 포인터, 문자 입출력, while-do문, case문 등의 기능을 넣지 못했다.
- 변수 타입 : 정수 타입만 이용하고 문자는 식별자에만 사용.
- 제어문 : 선택문 if-then문과 반복문 repeat-until문을 사용.
- 입출력 : 입력 read와 출력 write를 사용.
- 연산자 : 산술연산자 4가지(+, -, *, /)와 비교 연산은 ‘-’와 ‘=’만 사용.
대입 연산자는 ‘:=’로 한다.
- 주석문 : 대괄호로 표현 -> ex) {이것은 주석입니다.}
- 문장 구조 : 세미콜론 ‘;’으로 문장 끝을 알리고, "end"로 프로그램의 끝 표현.

목차

1. mini-Pascal언어 정의

2. mini-Pascal언어의 토큰과 토큰 종류

3. LEX 이용하여 토큰 정의와 토큰 인식

4. BNF 정의

5. 구문 트리 구조 (C언어로 작성)

6. YACC 문법으로 작성한 mini-Pascal의 파스

7. 예제 실행

- 참고문헌

본문내용

LEX 이용하여 토큰 정의와 토큰 인식
typedef enum
{ENDFILE,ERROR,
/* 예약어 */
IF,THEN,ELSE,END,REPEAT,UNTIL,READ,WRITE,
ID,NUM,
/* 특수기호 */
ASSIGN,EQ,LT,PLUS,MINUS,TIMES,OVER,LPAREN,RPAREN,SEMI
} TokenType;

%{
#include "globals.h"
#include "util.h"
#include "scan.h"

char tokenString[MAXTOKENLEN+1];
%}

digit [0-9]
number {digit}+
letter [a-zA-Z]
identifier {letter}+
newline n
whitespace [ t]+

%%

"if" {return IF;}
"then" {return THEN;}
"else" {return ELSE;}
"end" {return END;}
"repeat" {return REPEAT;}
"until" {return UNTIL;}
"read" {return READ;}
"write" {return WRITE;}
":=" {return ASSIGN;}
"=" {return EQ;}
"<" {return LT;}
"+" {return PLUS;}
"-" {return MINUS;}
"*" {return TIMES;}
"/" {return OVER;}
"(" {return LPAREN;}
")" {return RPAREN;}

참고 자료

<컴파일러 제작 원리와 실제> 인터비전 출판. Kenneth C. Louden 저. 2005
<lex와 yacc> 한빛미디어 출판. John R. Levine외 2명 저. 2002
다운로드 맨위로