野牛如何"work":如何使用?

How does bison "work": how is it used?

本文关键字:何使用 work      更新时间:2023-10-16

>假设我有这个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实现了一个广义的LR解析器。 有关相当广泛的文档和示例,请参阅 http://www.gnu.org/software/bison/manual/bison.html。 你不会得到一个解析树本身;相反,您编写在每次还原时激活的"操作"。 当然,如果你的操作只是构建一个解析树,如果你想获得一个解析树,那就可以了。 现代野牛还有很多额外的调整,你可以插入。

逐行标记:

#include <stdio.h>

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

int main(void)

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

{

一个令牌:符号{

int monday = 1;

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

。等等

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