📄 词法分析器状态图转换.txt
字号:
算法如下:
struct code_val scanner(char *buf);
{
static int i=0;
struct code_val t={'\0',"NUL"};
char token[WORDLEN]="";
while(buf[i]= =' ') i++;
if(buf[i] >= 'a' && buf[i] <= 'Z')
{
while(buf[i]>='a' && buf[i]<='Z' || buf[i]>='0' && buf[i]='9')
concat(token,buf[i++]);
t.code=reserve(token);
if(t.code= ='i') strcpy(t.val,token);
return t;
if(buf[i]>='0' && buf[i]='9')
{
while(buf[i]>='0' && buf[i]='9')
concat(token,buf[i++]);
if(buf[i]= ='.')
{
concat(token,buf[i++]);
while(buf[i]>='0' && buf[i]='9')
concat(token,buf[i++]);
t.code='y';
}
}
else
t.code='x';
strcpy(t.val,token);
return t;
}
if(buf[i]= ='.')
{
concat(token,buf[i++]);
if(buf[i]>='0' && buf[i]='9')
{
while(buf[i]>='0' && buf[i]='9')
concat(token,buf[i++]);
t.code='y';
strcpy(t.val,token);
return t;
}
else {
cout<<"error word>"<<token<<endl;
exit(0);
}
}
switch(buf[i]) {
case ',':
t.code=',';break;
case ';':
t.code=';';break;
case '(':
t.code='(';break;
case ')':
t.code=')';break;
case '=':
t.code='=';break;
case '+':
if(buf[++i]= ='+')
t.code='$';
else
{
t.code='+';i--;
}
break;
case '*':
t.code='*';break;
case '#':
t.code='#';break;
default:
cout<<"error char>"<<buf[i]<<endl;
exit(0);
}
i++;
return t;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -