C Bison意外标识符错误

C Bison意外标识符错误,c,bison,C,Bison,我不熟悉Flex/Bison,但是这个来自的接近文本副本的示例似乎缺少了%%分隔符。那样做 netrc.y:23.1-5: syntax error, unexpected identifier: 看起来您缺少%%分隔符。那样做 netrc.y:23.1-5: syntax error, unexpected identifier: 您需要在您的%token行之后有一行%%来分隔定义部分和语法部分。您需要在%token行之后有一行%%来分隔定义部分和语法部分。第23行是input:auth

我不熟悉Flex/Bison,但是这个来自

的接近文本副本的示例似乎缺少了%%分隔符。那样做

netrc.y:23.1-5: syntax error, unexpected identifier:

看起来您缺少
%%
分隔符。那样做

netrc.y:23.1-5: syntax error, unexpected identifier:

您需要在您的
%token
行之后有一行
%%
来分隔定义部分和语法部分。

您需要在
%token
行之后有一行
%%
来分隔定义部分和语法部分。

第23行是
input:auth input | input;第1-5列是标识符
输入
,这似乎就是它所抱怨的。我对野牛的记忆不太清楚,无法解决这个问题。这绝对不是一个近乎文字的复制品。仔细看原始示例,您会发现一些差异,所有这些差异都会导致各种错误。Yacc是不可饶恕的。@Jens当然,这个问题是关于野牛的,不是Yacc,但它们是同一个动物圈的一部分…;-)第23行是
input:auth input | input;第1-5列是标识符
输入
,这似乎就是它所抱怨的。我对野牛的记忆不太清楚,无法解决这个问题。这绝对不是一个近乎文字的复制品。仔细看原始示例,您会发现一些差异,所有这些差异都会导致各种错误。Yacc是不可饶恕的。@Jens当然,这个问题是关于野牛的,不是Yacc,但它们是同一个动物圈的一部分…;-)我自己在OP的密码上试过了。它消除了错误信息,但引入了更多错误,包括
致命错误:开始符号输入不会派生任何句子
。我想这会引发另外几个问题:-)与海报的说法相反,引用的副本大不相同。好吧,可能我对
字面上的
单词不正确。没有比这更复杂的东西了,这是近距离的@基思·汤普森:谢谢。我确实犯了那个错误。你有什么建议吗?首先,要理解什么是语法规则。例如,您不应该只引用非终结符本身,如在
input:…|输入
。表示非终结符是以另一种方式完成的一项或多项任务的列表。任何对yacc的介绍都应该解释这些事情。我自己在OP的代码中尝试过。它消除了错误信息,但引入了更多错误,包括
致命错误:开始符号输入不会派生任何句子
。我想这会引发另外几个问题:-)与海报的说法相反,引用的副本大不相同。好吧,可能我对
字面上的
单词不正确。没有比这更复杂的东西了,这是近距离的@基思·汤普森:谢谢。我确实犯了那个错误。你有什么建议吗?首先,要理解什么是语法规则。例如,您不应该只引用非终结符本身,如在
input:…|输入
。表示非终结符是以另一种方式完成的一项或多项任务的列表。任何对yacc的介绍都应该解释这些事情。
%}
%token ...

%%
input : ...