2

假设我有这个 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 不会使用解析器语法生成机器代码?那么如何野牛交互呢?我不希望在这里得到完整的答案,只是指向好的网站和书籍的指针。

4

2 回答 2

4

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

于 2012-04-20T05:23:29.460 回答
3

令牌,逐行:

#include <stdio.h>

上一行不是C 语句,而是由C 预处理器使用。

int main(void)

五个标记:关键字int、标识符main、符号(、关键字void和符号)

{

一个标记:符号{

int monday = 1;

五个标记:关键字int、标识符monday、符号=、整数1和符号;

... 等等

还应注意,=and==是两个单独的标记,而字符串是一个单独的标记。

于 2012-04-20T05:19:13.977 回答