⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scanner.h

📁 使用实际的编译算法的计算器 包括词法、文法分析过程
💻 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=&in; _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 + -