用C语言采用模拟DFA算法编写一个扫描器(词法分析器)
用C语言采用模拟DFA算法编写一个扫描器(词法分析器),用来识别:由任意个a或b开始后接aa再自加或自减1的字符串,即正规式r=(a|b)*aa(+|-)1描述的语言L(r)。 哪个高手帮我把下面那段语言改用C来写啊,谢谢啦#include<iostream>
#include<string>
using namespace std;
bool scan(string &s);
//-------------------------------
void main()
{
cout<<"请输入一串字符"<<endl;
string s;
cin>>s;
bool tag;
tag=scan(s);
{
if(tag==true)
cout<<s<<"为可识别字符串"<<endl;
else if(tag==false)
cout<<s<<"为不可识别字符串"<<endl;
cout<<end1<<"DFA如下"<<endl;
outputfa(len,h,t);<<输出DFA
cout<<"其中终态:"<<endnode<<endl;
//DFA最小化
}
//-------------------------------
bool scan(string &s)
{
bool flag=true;
int i=1;
char c=s[0];
if(c!='a'&&c!='b') return false;
c=s[1];
while(c!=NULL&&flag)
{
if(c=='a'||c=='b')
i++;
else if(c=='-'||c=='+')
{
if(s[i+1]=='1'&&s[i+2]==NULL&&s[i-1]=='a'&&s[i-2]=='a')
return true;
else
return false;
}
else
flag=false;
c=s[i];
}
return flag;
}