设计测试方式(将语句必须写在getsym()合适的地方),测试单词是否能被识别(只完成了词法分析部分,代码运行出错不用理会) Form1->printfs (“关键字”); Form1->printfs ("标识符"); Form1->printfs("数字"); Form1->printfs(“双符号"); Form1->printfs("单字符");
时间: 2024-01-24 19:17:00 浏览: 21
在getsym()函数中,可以针对不同的单词类型进行测试:
```
char ch = getch();
if (isalpha(ch)) { // 判断是否为字母
// 识别关键字或标识符
string str = "";
while (isalnum(ch)) {
str += ch;
ch = getch();
}
retract();
if (isKeyword(str)) // 判断是否为关键字
Form1->printfs("关键字");
else
Form1->printfs("标识符");
} else if (isdigit(ch)) { // 判断是否为数字
// 识别数字
while (isdigit(ch)) {
ch = getch();
}
retract();
Form1->printfs("数字");
} else if (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '>' || ch == '<' || ch == '=' || ch == ':') { // 判断是否为双符号或单字符
// 识别双符号或单字符
char next_ch = getch();
if ((ch == '+' && next_ch == '+') || (ch == '-' && next_ch == '-') || (ch == '>' && next_ch == '=') || (ch == '<' && next_ch == '=') || (ch == ':' && next_ch == '=')) {
Form1->printfs("双符号");
} else {
retract();
Form1->printfs("单字符");
}
} else {
// 其他情况暂不处理
}
```