令牌表;从main.c中的表中获取信息?

时间:2014-04-04 16:54:38

标签: c parsing bison

那么,有没有办法在我的parser.y中将令牌表extern并将其放入我的main.c中?我问的原因是因为我需要我的标记值来创建一个结构来保存一些有关它正在解析的代码中的函数的信息,以查看它们是否有效。我正在看这个here而且我不确定如何完全解决这个问题

1 个答案:

答案 0 :(得分:1)

我认为所有答案(对于你引用的问题)都很好地涵盖了解决方案的不同方面,而且所有人都知道他们所写的内容。但是,我会尝试简化您要做的事情的解释。

通常会以这种方式构建解析器:

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

这就像我能解释一样简单。希望有助于使其更清晰......