【问题标题】:Bison: getting syntax error for no reasonBison:无缘无故出现语法错误
【发布时间】:2015-11-26 18:22:53
【问题描述】:

我已经写了一个 flex/Bison 语法,它可以完美地工作到某个点。 但是当我使用新的语法规则添加一个新的非终端时 - 无论是哪一个,我都会收到以下警告:警告:语法规则无用 [-Wother]

当我将相同的规则移动到不同的非终端时,它工作正常。 好像我不能再添加任何非终端了。

这是代码中不起作用的部分:

%type<number> expression
%type<arr> array
array:
    '[' expression ']'                  { cout << "SUCCESS" << endl; }
    ;           
expression: 
    NUMBER                              { $$ = $1; }
    ;

所有类型都在联合中预定义,我一直在尝试更改规则/非终端顺序。没有任何效果。 请帮忙,因为我不知道是什么问题!

【问题讨论】:

  • 那个片段显然是有效的。请编辑您的问题以包含足够多的规则,以便野牛会产生警告消息。

标签: bison yacc flex-lexer


【解决方案1】:

如果规则产生的非终结符不是开始符号或在某些(有用的)产生式的右侧,则该规则是无用的。

所以你不能只添加一个新的非终端,除非你也在某个地方使用它。

这可能不是你的问题——问题中的信息太少,无法说明你的问题是什么——但至少与提供的信息一致。

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2015-02-15
    • 1970-01-01
    • 2022-11-20
    相关资源
    最近更新 更多