mini - Pascal 언어 정의
- 최초 등록일
- 2008.10.27
- 최종 저작일
- 2008.06
- 10페이지/
한컴오피스
- 가격 2,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
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