目前做了数字、字符和标识符的DFA
Token的数据结构:
typedef union
{
char* str;
int i;
double real;
}Attribute;
typedef struct
{
std::string name;
Attribute attributes;
}Token;
二进制 八进制 十六进制 十进制数 以及字符 的有穷自动机:
bool WordReader::NumberDFA_10(std::istringstream &is,bool acc,int& number)
{
char c;
bool accepted=acc;
is.get(c);
int num=number;
while(!is.eof())
{
switch(c)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
num=num*10+c-'0';
accepted=true;
break;
default:
return false;
}
is.get(c);
}
number=num;
return accepted;
}
bool WordReader::NumberDFA_2(std::istringstream &is,int& number)
{
char c;
is.get(c);
int num=number;
whil