加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Scanner.h 863 Bytes
一键复制 编辑 原始数据 按行查看 历史
873314461 提交于 2016-05-08 02:00 . 修改BUG
#pragma once
#include <iostream>
#include <fstream>
#include "DFA.h"
class Scanner
{
public:
Scanner(std::string srcFileName, std::string grammar);
string getToken();
string getFileName();
string getTokenType();
bool isEnd();
long getLine();
long getColumn();
private:
void getNextChar();
char peekChar();
void preprocess();
vector<tuple<string, string, string> > getGrammar(string grammerFile);
char transform(char ch);
public:
//enum class State
//{
// NONE,
// UNKNOW,
// END_OF_FILE,
// ACCEPT
//};
private:
std::string fileName;
std::string grammarFile;
std::ifstream input;
long line;
long bLine;
long column;
long bColumn;
char currentChar;
std::string buffer;
int state;
bool errorFlag;
int nearestAccept;
int nearestState;
string nextRead;
DFA dfa;
set<string> limiters;
set<string> keywords;
set<string> operat;
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化