那么,有没有办法在我的 parser.y 中外部标记表并将其放入我的 main.c 中?我问的原因是因为我需要我的 token 值来创建一个结构来保存有关它正在解析的代码中的函数的一些信息,以查看它们是否有效。我正在看这个here我不知道该怎么做
最佳答案
我认为所有答案(针对您引用的问题)都很好地涵盖了解决方案的不同方面,并且全部来自了解其所写内容的人。不过,我会尝试简化对您尝试执行的操作的解释。
通常人们会以这种方式构建解析器:
flex lexer.l
bison parser.y
gcc -o parser.exe parser.tab.c main.c
由于 parser.tab.c
中需要与 main.c
共享的变量范围,这种安排会导致问题。
您的解析器文件通常会像这样终止:
#include "lex.yy.c"
最简单的解决方案是像这样附加 main.c
:
#include "lex.yy.c"
#include "main.c"
现在像这样构建:
flex lexer.l
bison parser.y
gcc -o parser.exe parser.tab.c
这就是我能解释的最简单的了。希望这有助于使其更清楚......
关于c - token 表;从 main.c 中的表获取信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22868655/