野牛如何“工作”:它是如何使用的?

时间:2012-04-20 05:05:06

标签: c++ bison tokenize

说我有这个C程序。

#include <stdio.h>

int main(void)
{
  int monday = 1;
  int tuesday = 2;

  if(monday == tuesday) { fprintf("I should quit my day job"); }

  return 1;
}

令牌是什么?

作为程序员,bison为我提供了什么?? Certianly,bison只用解析器语法生成机器代码?那么我如何与野牛界面?我不希望在这里得到完整的答案,只是指向好网站和书籍的指针。

2 个答案:

答案 0 :(得分:4)

Bison实现了一个通用的LR解析器。有关示例,请参阅http://www.gnu.org/software/bison/manual/bison.html以获取相当广泛的文档。你本身不会得到一个解析树;相反,你写下每次减少时激活的“动作”。当然,如果您的操作只是构建一个解析树,那么如果您想获得一个解析树,那就可以了。现代野牛也有很多可以插入的额外调整。

答案 1 :(得分:3)

标记,逐行:

#include <stdio.h>

上述行是C语句,但由C preprocessor使用。

int main(void)

五个令牌:关键字int,标识符main,符号(,关键字void和符号)

{

一个标记:符号{

int monday = 1;

五个令牌:关键字int,标识符monday,符号=,整数1和符号;

......等等

还应该注意,===是两个单独的标记,并且该字符串是一个单独的标记。