【问题标题】:segmentation fault with bison and flex野牛和flex的分段错误
【发布时间】:2010-07-23 11:07:28
【问题描述】:

我正在尝试使用 oreilly 的书来学习 lex 和 yacc。我尝试了书中的示例,但它给出了分段错误。

%{
 /**
  * A lexer for the basic grammar to use for recognizing English sentences.
  */

  #include <stdio.h>
  extern FILE *yyin;
%}

%token NOUN PRONOUN VERB ADVERB ADJECTIVE PREPOSITION CONJUNCTION

%%
sentence: subject VERB object{ printf("Sentence is valid.\n");}
 ;

subject: NOUN
 | PRONOUN
 ;
object:  NOUN
 ;
%%


main()
{
 while(!feof(yyin)) {
  yyparse();
 }

}
yyerror(char *s)
{
 fprintf(stderr, "%s\n", s);
}

我正在使用 flex 和 bison。 我在 while 循环中的 main 函数中遇到分段错误。它根本没有进入循环。

有什么想法吗? 谢谢, 罗伯特

【问题讨论】:

    标签: bison lex


    【解决方案1】:

    yyin 是否真的在某处被赋予了有意义的价值?也许尝试分配它:

    yyin = stdin;
    

    就在主循环之前。

    编辑:也许尝试不将其定义为“外部”,除非它实际上是在其他地方定义的。

    【讨论】:

      猜你喜欢
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多