编译原理词法分析器
直接上代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <string> 4 #include <iostream> 5 #include <map> 6 #include <algorithm> 7 using namespace std; 8 9 map<string,int>mp_res; 10 map<string,int>mp_oper; 11 map<char,int>mp_dili; 12 string pre=""; 13 14 int flag1=false,flag2=1;//flag1用作判断/*或*/是否在引号内,flag2判断内容是否处于注释状态 15 string mstr,flagstr,ansstr=""; 16 17 string double_slash(string s)//双斜杠注释处理 18 { 19 string ans=""; 20 bool flag=false;//判断//是否在双引号内作为字符串 21 for(int i=0;i<s.length();i++) 22 { 23 if(s[i]=='/'&&s[i+1]=='/'&&i+1<s.length()&&!flag) 24 break; 25 if(s[i]==34) 26 flag=!flag; 27 ans+