?? scan.h
字號:
// scan.h: interface for the Cscan class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SCAN_H__F0293CE1_81AC_47F0_9918_257702C11C14__INCLUDED_)
#define AFX_SCAN_H__F0293CE1_81AC_47F0_9918_257702C11C14__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "global.h"
/*****************詞法分析器確定性有限自動機DFA的狀態類型*************/
/* START 開始狀態; INASSIGN 賦值狀態; INRANGE 下標范圍狀態; */
/* INNUM 數字狀態; INID 標識符狀態; DONE 完成狀態; */
/* INCHAR 字符狀態;INCOMMENT 注釋狀態; */
typedef enum
{ START,INASSIGN,INRANGE,INCOMMENT,INNUM,INID,INCHAR,DONE }
StateType;
//保留字查找表:
typedef struct
{ char* str;
LexType tok;
} ReservedTable;
//初始化保留字查找表:
static const ReservedTable reservedWords[MAXRESERVED]
= {
{"program",PROGRAM},
{"type",TYPE},
{"var",VAR},
{"procedure",PROCEDURE},
{"begin",BEGIN},
{"end",END},
{"array",ARRAY},
{"of",OF},
{"record",RECORD},
{"if",IF},
{"then",THEN},
{"else",ELSE},
{"fi",FI},
{"while",WHILE},
{"do",DO},
{"endwh",ENDWH},
{"read",READ},
{"write",WRITE},
{"return",RETURN},
{"integer",INTEGER},
{"char",CHAR1}
};
class Cscan : public Cglobal
{
public:
/************* 變量聲明 ***************************/
/* 源代碼文本文件指針source */
FILE *source;
/*詞法分析結果Token序列的存儲文件指針fp*/
FILE* fp;
/* tokenString用于保存標識符和保留字單詞的詞元,長度41 */
char tokenString[MAXTOKENLEN+1];
/* BUFLEN源代碼行的輸入緩沖區長度為256 */
#define BUFLEN 256
/* lineBuf為當前輸入代碼行緩沖區 */
char lineBuf[BUFLEN];
/* linepos為在代碼緩沖區LineBuf中的當前字符位置,初始為0 */
int linepos ;
/* bufsize為當前緩沖器中所存字串大小 */
int bufsize ;
/* EOF_flag當為文件尾時,改變函數ungetNextChar功能 */
int EOF_flag ;
public:
Cscan();
virtual ~Cscan();
void getTokenList(CString pgm);
void printTokenlist( );
protected:
/*詞法分析用到的功能函數*/
int getNextChar(void);
void ungetNextChar(void);
void ChainToFile (ChainNodeType *p);
void printToken(TokenType token);
LexType reservedLookup (char * s);
};
#endif // !defined(AFX_SCAN_H__F0293CE1_81AC_47F0_9918_257702C11C14__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -