手把手教学:用Tauri给你的博客/官网做个专属桌面客户端(支持Windows/macOS)
2026/5/16 19:22:59
在许多flex或bison程序中,符号表是一个关键组件,用于跟踪输入中使用的名称。我们将从一个简单的索引生成程序开始,该程序会列出输入中每个单词出现的行号,随后将其修改为一个C语言交叉引用程序。
索引生成器的符号表主要用于跟踪每个单词及其所在的文件和行号。以下是索引生成器的声明部分示例:
/* fb2-4 text concordance */ %option noyywrap nodefault yylineno case-insensitive /* the symbol table */ %{ struct symbol { /* a word */ char *name; struct ref *reflist; }; struct ref { struct ref *next; char *filename; int flags; int lineno; }; /* simple symtab of fixed size */ #define NHASH 9997 struct symbol symtab[NHASH]; struct symbol *lookup(char*); void addref(int, char*, char*,int); char *curfilename; /* name of current input file */