소개글
컴파일러 강의 레포트 입니다.
C++ 을 이용해서 Tiger Language 의 Lexical Analyzer 를 제작했습니다.
input.txt 파일(문서에 포함)을 분석해 글자 단위로 파싱합니다.
A+ 레포트
자료정보의 내용은 CC숙제#2.doc의 내용입니다.
포함된 파일들은 아래와 같습니다.
CharQueue.h -CharQueue.cpp header file
Lex.h -Lex.cpp header file
StringList.h -StringList.cpp header file
Token.h -State, keyword token define header
CharQueue.cpp -char 단위 입력큐 클래스 정의
Lex.cpp -char 단위 Lexical analyzer 클래스 정의
Parser.cpp -Lex 객체를 생성해 사용하는 main 모듈
StringList.cpp -Keyword Table 용 List 클래스 정의
목차
1. 문제정의
2. 분제분석/알고리즘
3. 소스코드
4. 결과
본문내용
1. 문제정의
Tiger programming language 의 lexical analyzer를 제작하시오.
2. 문제분석/알고리즘
다음과 같은 DFA를 만족하는 입력을 받도록 클래스를 정의한다.
- 모든 종단점은 다음 token의 시작점이 된다.
- 예외상황은 Syntax Error로 분류한다.
이 기호는 Lex 클래스에서 사용하는 상태를 나타낸다.
% 작업환경
다음과 같은 환경에서 작업하였다.
Windows 2000 Advanced Server, Microsoft Visual C++ 6.0
3. Source
//CharQueue.h ========================================================
#include <iostream>
#include <string>
using namespace std;
//Linked List 로 구현
struct ListNode {
char data;
ListNode* nextNode;
};
class Queue {
private:
ListNode* startNode; //Start
ListNode* endNode; //End
int qSize;
public:
Queue();
~Queue();
참고 자료
없음
압축파일 내 파일목록
CharQueue.h
lex.h
stringList.h
token.h
CharQueue.cpp
lex.cpp
parser.cpp
stringList.cpp
tiger_parser.plg
tiger_parser.opt
tiger_parser.dsp
tiger_parser.dsw
tiger_parser.ncb
CC숙제#2.doc