소개글
컴파일러 입문 책 4장의 Scanner 어휘분석기를 구현해놓은것입니다.
책에 있는 내용에 float형 실수부분도 같이 구현해놨습니다.
Project->settings->debug에 보시면,
working directory: 란에 hw 폴더가 있는 위치를 지정해주시고,
Program arguments: 란에 hw.exe < add.mc 를 쓰신 후,
컴파일 하시면 됩니다.
목차
없음
본문내용
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#define NO_KEYWORDS 7 // 키워드가 아닌 단어 심벌의 개수
#define ID_LENGTH 12 // 토큰의 최대 길이
//char id[ID_LENGTH]; // 해당 토큰을 찍어주기 위한 문자 배열
enum tsymbol { tnull = -1, // 특수심벌과 단어심벌 들의 토큰 번호
tnot, tnotequ, tmod, tmodAssign, tident, tnumber,
/* 0 1 2 3 4 5 */
tand, tlparen, trparen, tmul, tmulAssign, tplus,
/* 6 7 8 9 10 11 */
tinc, taddAssign, tcomma, tminus, tdec, tsubAssign,
/* 12 13 14 15 16 17 */
tdiv, tdivAssign, tsemicolon, tless, tlesse, tassign,
/* 18 19 20 21 22 23 */
tequal, tgreat, tgreate, tlbracket, trbracket, teof,
/* 24 25 26 27 28 29 */
// ...... word symbols ..................................... //
tconst, telse, tif, tint, treturn, tvoid,
/* 30 31 32 33 34 35 */
twhile, tlbrace, tor, trbrace, tfnumber
/* 36 37 38 39 40 */
};
struct tokenType {
int number; //token number
union{
char id[ID_LENGTH];
int num;
float f_num; //float형을 위해, 변수 추가
} value; // token value
};
char *keyword[NO_KEYWORDS] = {
\
참고 자료
없음
압축파일 내 파일목록
add.mc
hw.cpp
hw.dsp
hw.dsw
hw.ncb
hw.plg
Debug/hw.exe
Debug/hw.ilk
Debug/hw.obj
Debug/hw.pch
Debug/hw.pdb
Debug/vc60.idb
Debug/vc60.pdb