编译原理第二章一个简单的编译器重点.ppt

带有符号表功能的词法分析器 int lexan() { char lexbuf[100]; char c; while (1) { 从输入字符序列读取一个字符,保存到c; if (c == ‘ ‘ || c == ‘\t’) ; else if (c == ‘\n’) lineno++; else if (isdigit(c)) { tokenval = c及后续数字组成的数值; return NUM; } 带有符号表功能的词法分析器 else if (isalpha(c)) { 将c及后续字母、数字放入lexbuf; p = lookup(lexbuf); if (p = 0) p = insert(lexbuf, ID); tokenval = p; return 符号表项p的token值; } else { tokenval = NONE; return 字符c对应的整数; } } } Lcc的符号表 字符串的管理 //string.c static struct string { char *str; int len; struct string *link; } *buckets[1024]; char *stringn(const char *str, int

文档评论(0)

1亿VIP精品文档

相关文档