现在在学编译原理,做了个简单的词法分析器。可以自定义关键字、界符以及运算符。
效果如下:
有一点不满意的地方是必须输入两次ctrl+z,原来打算的是按下回车就结束输入的
还有一点想法是不输入这些设置,而是读取一个配置文件,识别关键字,界符以及运算符
代码如下:
#include<iostream>
#include<vector>
#include <map>
#include<iterator>
#include<sstream>
#include<string>
#include<fstream>
using namespace std;
vector <string> keywords;
vector <pair<string,string> > symble;
vector <pair<string,string> > bound;
char ch;
int isKeyWord(const string& s,int& n)
{
if(keywords.empty())
{
return 0;
}
for(vector<string>::iterator it = keywords.begin();
it != keywords.end();it++,n++)
{
if(s == *it)
{
return 1;
}
}
return -1;
}
int isSymble(const string& s, string& result)
{
for(vector<pair