【发布时间】:2017-10-01 14:03:40
【问题描述】:
有什么理由在词法分析阶段开始构建符号表吗?
在flex & bison: Text Processing Tools 一书中,作者给出了一个词法分析器的例子,试图构建一个简单的符号表。以下代码中有一个解决方法,可以将符号定义与其引用区分开来:
/* declaration keywords */
auto |
char |
int |
/* ... skip ... */
volatile { defining = 1; }
/* ... skip ... */
/* punctuators */
"{"|"<%"|";"
{ defining = 0; }
此解决方案不适用于更复杂的情况,例如int a = b, c = d;(符号c 不会被标记为定义)。除此之外,无法在词法分析器阶段处理嵌套范围。
在问题lex and yacc (symbol table generation) 中注意到从词法分析器访问符号表是常规的,但我仍然看不到优点以及为什么在词法分析器中内置的表可能在以后有用。
【问题讨论】:
标签: compiler-construction flex-lexer