📄 scanner.h
字号:
#ifndef SCANNER_H_INCLUDED
#define SCANNER_H_INCLUDED
#include "mylist.h"
#define MaxReserved 21
typedef enum
{
//簿记单词符号
ENDFILE,ERROR,
//reservedWord
PROGRAM,PROCEDURE,TYPE,VAR,
IF,THEN,ELSE,FI,WHILE,DO,
ENDWH,BEGIN,END,READ,WRITE,
ARRAY,OF,RECORD,RETURN,
//类型
INTEGER, CHAR,
ID, INTC, CHARC,
//特殊符号
ASSIGN,EQ,LT,PLUS,MINUS,TIMES,
OVER,LPAREN,RPAREN,DOT,COLON,
SEMI,COMMA,LMIDPAREN,RMIDPAREN,
UNDERANGE
} LexType;
typedef enum
{
s0,s1,s2,s3,s4,s5,s6,send
}StateType;
static struct
{
char *str;
LexType tok;
}ReservedWord[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",CHAR}
};
struct CToken
{
int lineShow;
LexType lex;
string sem;
};
int getNextChar(FILE *f,char buffer[ ]);
void ungetNextChar(char buffer[]);
int reservedLookup(string & rs);
CToken getToken(FILE *f,char buffer[]);
CMyList<CToken> getTokenList(FILE *f,char buffer[]);
CToken GetOneToken(FILE* f,char buffer[],int k);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -