?? scan.h
字號(hào):
// 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"
/*****************詞法分析器確定性有限自動(dòng)機(jī)DFA的狀態(tài)類型*************/
/* START 開始狀態(tài); INASSIGN 賦值狀態(tài); INRANGE 下標(biāo)范圍狀態(tài); */
/* INNUM 數(shù)字狀態(tài); INID 標(biāo)識(shí)符狀態(tài); DONE 完成狀態(tài); */
/* INCHAR 字符狀態(tài);INCOMMENT 注釋狀態(tài); */
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;
/*詞法分析結(jié)果Token序列的存儲(chǔ)文件指針fp*/
FILE* fp;
/* tokenString用于保存標(biāo)識(shí)符和保留字單詞的詞元,長度41 */
char tokenString[MAXTOKENLEN+1];
/* BUFLEN源代碼行的輸入緩沖區(qū)長度為256 */
#define BUFLEN 256
/* lineBuf為當(dāng)前輸入代碼行緩沖區(qū) */
char lineBuf[BUFLEN];
/* linepos為在代碼緩沖區(qū)LineBuf中的當(dāng)前字符位置,初始為0 */
int linepos ;
/* bufsize為當(dāng)前緩沖器中所存字串大小 */
int bufsize ;
/* EOF_flag當(dāng)為文件尾時(shí),改變函數(shù)ungetNextChar功能 */
int EOF_flag ;
public:
Cscan();
virtual ~Cscan();
void getTokenList(CString pgm);
void printTokenlist( );
protected:
/*詞法分析用到的功能函數(shù)*/
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_)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -