首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法通过简单的Bison语法文件语法错误对%define指令

无法通过简单的Bison语法文件语法错误对%define指令
EN

Stack Overflow用户
提问于 2013-10-12 10:20:53
回答 1查看 885关注 0票数 2

我使用Bison2.4.1和Flex 2.5.35创建语言解析器。然而,我被Bison困住了,它给了我3个小时的同样的错误,我不明白原因。

我有这个Bison语法文件mylang.y

代码语言:javascript
复制
%{
#include <stdio.h>
#include <stdlib.h>
#include <glib/gtree.h>
#include <glib/gnode.h>
#include "ast.h"
%}

%code requires {
struct my_value {
  enum {
    is_int, 
    is_str
  } kind;
  union {
    int ival;
    char *sval;
  } u;
};
}
%define api.value.type {struct my_value}

%token KEYWORD
%token <u.sval> ID
%token <y.ival> NUM
...
%%
... 
// Rules following, but still defining no action at all.
%%
// Nothing more

正如你所看到的,我试图定义语法和语法语义。这并不是说我自己编写了所有的代码,我遵循了Bison %define指令中报告的例子。

之前的语义,一切都好:也请注意,到目前为止,我的语法规则还没有定义任何操作。所以它们只是一堆非常简单的规则。此外,在添加语义之前,我通过Bison解析器生成器处理了文件,一切都进行得很顺利。

当我试图让这件事通过Bison:

代码语言:javascript
复制
bison  -vd --report=state,itemset --graph  mylang.y

我知道这个错误:

mylang.y:20.24-40:语法错误,意外{.}

错误中报告的行是%define指令位于。我不知道如何度过这一难关。我做错了什么?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-12 10:39:26

我使用Bison2.4.1和Flex 2.5.35创建语言解析器。

您正在尝试使用的特性已在Bison3.0中添加。

历史:介绍在野牛3.0。只在2.3b中作为stype引入了Java。

您可以下载Bison3.0 从这里开始

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19333096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档