c - Yacc问题: Make Data available in next Non Terminal

标签 c parsing yacc generator

我想让我在 b 中生成的一些变量在 c 中可用:

a   :   b c { ...some code...}

一个简单的例子:

b :  X  { int result = 0; } 
  |  Y  { int result = 1; }

这样我就可以稍后用 c 说:

c : D   { printf(result + 1); }
  | E   { printf(result + 2);  }

有机会这样做吗?任何帮助将不胜感激!

最佳答案

result应该是一个全局变量。您可以通过包含来做到这一点

%{
    int result;
%}

位于 YACC 文件的顶部。当然,您还应该替换 int result = 0int result = 1result = 0result = 1分别。

关于c - Yacc问题: Make Data available in next Non Terminal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/393041/

相关文章:

c# - 访问违规异常

c - 如何在传感 if 条件下打破 while 循环

parsing - 我无法创建支持中缀、后缀和前缀函数等的语言有什么原因吗?

javascript - 将字符串解析为数组

yacc:区分整数和 float

python - PLY:C 解析器中的 token 移位问题

c - 在 C 中实现/模拟具有 20Mhz 时钟和 1024 预分频器的 16 位计数器

c - 使用 VS Studio 调试非常大的文件

php - 无法在 PHP 文件中包含/执行 CGI 文件

用于::case 的 OCaml 解析器