📄 scanner.h
字号:
#pragma once
#include<string>
#include<queue>
#define MYSPC_BEGIN namespace my_space{
#define MYSPC_END }
MYSPC_BEGIN
enum DSTATE{
// trap state
DERROR=false,
// start state
START,
// non-accepting state
BNAT, // could be a natural number
MFLOAT, // maybe a float point number
BFLOAT, // could be a float point number
// accepting state:
MINUS,PLUS,MUL,DIV,
NAT,FLOAT,
POSI,NEG,
LP,RP, // left&right parentheses
EOI, // end of input
};
class Parser;
class Scanner{
friend class Parser;
public:
Scanner(std::string &in):_inPtr(&in),_pos(0),_slen(in.length()){}
// void Rebind(std::string &in){ _inPtr=∈ _pos=0; _slen=in.length(); _ts.c.clear(); _vs.c.clear(); }
bool Scan();
private:
void _PreScan();
DSTATE _NextTok();
int _pos;
int _slen;
std::string *_inPtr;
std::queue<DSTATE> _ts; // tokens' sequence
std::queue<double> _vs; // values' sequence
};
MYSPC_END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -