scanner.h
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 84 行
H
84 行
#ifndef _scanner_h
#define _scanner_h
/* $Log: SCANNER.H $
* Revision 1.1 92/08/20 15:53:14 Anthony_Scian
* .
*
Revision 1.1 92/08/20 15:53:12 Anthony_Scian
.
* Revision 1.1 1992/08/20 17:14:07 peter
* Initial revision
*
*/
#include <iostream.h>
#include "useful.h"
class Scanner {
private:
streambuf ∈
uint curLine;
char *buffer, *tokBuf, *cursor, *limit;
uint bufLen;
public:
int token;
uint tokLine;
private:
bool fill();
bool need(uint);
int scan();
public:
Scanner(streambuf&);
void fatal(char*);
int peek();
void copy(ostream&);
void bump();
SubString tokStr();
};
const uint cChunkSize = 256;
enum {
tIdent,
tString,
tCClass,
tCode,
tLParen,
tRParen,
t0orMore,
t1orMore,
tOptional,
tChoice,
tEqual,
tSemi,
tColon,
tBang,
tContext,
tDiff,
tEnd,
tEOF,
tOther
};
inline bool Scanner::need(uint n){
if((limit - cursor) < n)
return fill();
else
return true;
}
inline int Scanner::peek()
{ return token; }
inline void Scanner::bump()
{ token = scan(); }
inline SubString Scanner::tokStr()
{ return SubString(tokBuf, cursor - tokBuf); }
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?