考研 408 × 求职面试
知识点 · 编译原理 · 基础
每日一题 · 编译原理
解析
面试小贴士 · 编译原理
代码实现 · C
#include <stdio.h>
#include <ctype.h>
int main() {
char src[] = "sum = a + 10;"; // 源程序
printf("源程序: %s\n", src);
printf("阶段1 词法分析: "); // 只演示第一阶段
for (int i = 0; src[i]; ) {
if (isspace((unsigned char)src[i])) { i++; continue; }
if (isalpha((unsigned char)src[i])) { // 标识符
while (isalnum((unsigned char)src[i])) putchar(src[i++]);
printf("(标识符) ");
} else if (isdigit((unsigned char)src[i])) { // 整数
while (isdigit((unsigned char)src[i])) putchar(src[i++]);
printf("(整数) ");
} else { // 运算符或界符
printf("%c(符号) ", src[i++]);
}
}
printf("\n阶段2-6: 语法分析、语义分析、中间代码、优化、目标代码\n");
return 0;
}