📄 main.cpp
字号:
conacat();
getachar();
}
if(!isdigit())
{
conacat();
getachar();
printf("\nerror'%s'",strtoken);
reflesh();
}
continue;
}
retur();
writo();
printf("\n'%s':digit",strtoken);
//getch();
reflesh();
}
else
switch (ch) /*否则,若是下面的符号,就直接把它输出*/
{
case ',':
case ';':
case '(':
case ')':
case '{':
case '}':
case '[':
case ']':
case '~':
case '#':
case ':':
case '^':
//case '"':
case '.':
{
conacat();
writo();
printf("\n'%s':bound",strtoken);
//getch();
reflesh();
break;
}
case '"':
{
//conacat();
getachar();
while(ch!='"')
{
conacat();
getachar();
}
writo();
printf("\n'%s':string",strtoken);
reflesh();
break;
}
default:
{
if (ch==' ') break;
else if (ch=='&' || ch=='|' ) /*如果是这些符号,继续读取下一个*/
{
conacat(); /*判断是否为&&,||的情况*/
getachar();
if (ch==strtoken[0])
conacat();
else
retur();
writo();
printf("\n'%s':op",strtoken);
//getch();
reflesh();
break;
}
else if ( ch=='*' || ch=='%' || ch=='/') /*如果是这些符号,继续读取下一个*/
{
conacat(); /*判断是否为/=,*=,%=的情况*/
getachar();
if (ch=='=')
conacat();
else
retur();
writo();
printf("\n'%s:op2",strtoken);
//getch();
reflesh();
break;
}
else if (ch=='+' ) /*如果是这些符号,继续读取下一个*/
{
conacat(); /*判断是否为+=,++,+的情况*/
getachar();
switch (ch)
{
case '=':
{
conacat();
writo();
printf("\n'%s:op2",strtoken);
//getch();
reflesh();
break;
}
case '+':
{
conacat();
writo();
printf("\n'%s:op2",strtoken);
//getch();
reflesh();
break;
}
default:
{
retur();
writo();
printf("\n'%s':op",strtoken);
//getch();
reflesh();
break;
}
}
break;
}
else if (ch=='-') /*如果是这些符号,继续读取下一个*/
{
conacat();
getachar();
switch (ch) /*判断是否为-=,--,-的情况*/
{
case '=':
{
conacat();
writo();
printf("\n'%s:op2",strtoken);
//getch();
reflesh();
break;
}
case '-':
{
conacat();
writo();
printf("\n'%s:op2",strtoken);
//getch();
reflesh();
break;
}
default:
{
retur();
writo();
printf("\n'%s':op",strtoken);
//getch();
reflesh();
break;
}
}
break;
}
else if (ch=='<') /*如果是这些符号,继续读取下一个*/
{
conacat();
getachar();
switch (ch) /*判断是否为<<,<=,<的情况*/
{
case '=':
{
conacat();
writo();
printf("\n'%s:reop2",strtoken);
//getch();
reflesh();
break;
}
case '<':
{
conacat();
writo();
printf("\n'%s:op2",strtoken);
//getch();
reflesh();
break;
}
default:
{
retur();
writo();
printf("\n'%s':reop",strtoken);
//getch();
reflesh();
break;
}
}
break;
}
else if (ch=='>') /*如果是这些符号,继续读取下一个*/
{
conacat();
getachar();
switch (ch) /*判断是否为>>,>=,>的情况*/
{
case '=':
{
conacat();
writo();
printf("\n'%s':reop",strtoken);
//getch();
reflesh();
break;
}
case '>':
{
conacat();
writo();
printf("\n'%s':op",strtoken);
//getch();
reflesh();
break;
}
default:
{
retur();
writo();
printf("\n'%s:reop2",strtoken);
//getch();
reflesh();
break;
}
}
break;
}
else if (ch=='=' || ch=='!' ) /*如果是这些符号,继续读取下一个*/
{
conacat(); /*判断是否为==,!=的情况*/
getachar();
if (ch==strtoken[0])
conacat();
else
retur();
writo();
printf("\n'%s':op",strtoken);
//getch();
reflesh();
break;
}
else
{
break;
}
}
}
getachar();
getbc();
}
}
main()
{
buildfile();
openfile();
analysis();
printf("\n词法分析完毕 !");
printf("\n词法分析结果已保存在analysis.txt中\n");
//getch();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -