c - token 表;从 main.c 中的表获取信息?

标签 c parsing bison

那么,有没有办法在我的 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/

相关文章:

c++ - 使用条件变量超时的读写器锁

Java Date.parse 或新的 Date(String) 替代品?

python - 使用python解析或读取cpp文件并通过忽略cpp文件注释添加数据

parsing - Lex/Flex 中的开始状态

解析 Bison/YACC .y 文件而不解析所有 C 语言

c - 将目标文件链接到二进制文件

c - 使用 3D 动态数组的函数中出现段错误

c++ - Boost Spirit 解析器在输入时崩溃

bison - 弯曲 : input rules are too complicated (>= 32000 NFA states) (while compiling HLA on 62bit)

c# - 适用于 C/C++/C# 的免费静态代码扫描器