📄 wordcompile.h
字号:
1: 正常结束,且有了输出结果
-1:非正常结束,错误信息已经记录
*/
{
if((int(chin)>64)&&(int(chin)<91)) chin=chin+32; //将所有字符变成小写
if(chin=='{') //注释部分,是所有状态通用的
{
//if(State==2000)
{State=9999;NowChar='!';return 1;}
}
if(chin=='}')
{
if(State==9999)
{
NowChar='!';
State=2000;
return 0;
}
else
{
/*
报告错误信息:'{' expected
*/
CatchErrors(1);
return -1;
}
}
switch(State)
{
case 9999: //注释中的状态
switch(chin)
{
case '}': //终止注释
NowChar='!';
State=2000;
break;
default:
NowChar='!'; //而其他信息一概忽略掉
break;
}
break;
case 2000: //自由状态
//cout<<int(chin)<<endl;
switch(chin)
{
//case '}': //显示出错误信息: '{'expected
// break;
case 'a':State=2052;break; //array,and
case 'b':State=2012;break; //begin,boolean
case 'd':State=2049;break; //do,div
case 'e':State=2021;break; //end,else
case 'f':State=2032;break; //function,false
case 'i':State=2023;break; //integer,if
case 'm':State=2061;break; //mod
case 'n':State=2066;break; //not
case 'o':State=2056;break; //or,of
case 'p':State=2001;break; //program,procedure
case 'r':State=2029;break; //real,read,record
case 't':State=2040;break; //then,true
case 'v':State=2064;break; //var
case 'w':State=2045;break; //while,write
case '0': //数字
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':State=3000;break;
case '<':
case '>':
case '='://TempWord[++wordLength]='=';
case ':':
case '.':
case ',':
case ';': //直接返回正确信息
case '\'':
case '(':
case ')':
case '[':
case ']':
case '+':
case '-':
case '*':
case '/':
case ' ': //空格
case '\n':break; //回车
default:if(((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
if(wordLength>=0) return 1; //返回1,将栈内字符串输出
break;
case 2001: switch(chin)
{
case 'r':State=2002;break;
default:
if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2002: switch(chin)
{
case 'o':State=2003;break;
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2003: switch(chin)
{
case 'g':State=2004;break;
case 'c':State=2007;break;
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2004: switch(chin)
{
case 'r':State=2005;break;
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2005: switch(chin)
{
case 'a':State=2006;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2006: switch(chin)
{
case 'm':State=8881;break; //"program"
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2007: switch(chin)
{
case 'e':State=2008;break;
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2008: switch(chin)
{
case 'd':State=2009;break;
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2009: switch(chin)
{
case 'u':State=2010;break;
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2010: switch(chin)
{
case 'r':State=2011;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2011: switch(chin)
{
case 'e':State=8882;break; //"procedure"
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2012: switch(chin)
{
case 'e':State=2013;break;
case 'o':State=2016;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2013: switch(chin)
{
case 'g':State=2014;break;
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2014: switch(chin)
{
case 'i':State=2015;break;
default:if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2015: switch(chin)
{
case 'n':State=8888;break; //"begin"
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2016: switch(chin)
{
case 'o':State=2017;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2017: switch(chin)
{
case 'l':State=2018;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2018: switch(chin)
{
case 'e':State=2019;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2019: switch(chin)
{
case 'a':State=2020;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2020: switch(chin)
{
case 'n':State=8888;break; //"boolean"
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2021: switch(chin)
{
case 'n':State=2022;break;
case 'l':State=2043;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2022: switch(chin)
{
case 'd':State=8888;break; //"end"
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2023: switch(chin)
{
case 'n':State=2024;break;
case 'f':State=8888;break; //"if"
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2024: switch(chin)
{
case 't':State=2025;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2025: switch(chin)
{
case 'e':State=2026;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2026: switch(chin)
{
case 'g':State=2027;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2027: switch(chin)
{
case 'e':State=2028;break;
default: if(((chin>='0')&&(chin<='9')&&(wordLength>=0))or((chin>='a')&&(chin<='z'))or(chin=='_')) State=5000;
else State=5500; break;
}
break;
case 2028: switch(chin)
{
case 'r':State=8888;break; //"integer"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -