bison和flex分割错误
我试着用奥雷利的书来学习莱克斯和亚克。我试着按照书中的例子,但它给出了分段错误bison和flex分割错误,bison,lex,Bison,Lex,我试着用奥雷利的书来学习莱克斯和亚克。我试着按照书中的例子,但它给出了分段错误 %{ /** * 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 %
%{
/**
* 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);
}
%{
/**
*用于识别英语句子的基本语法的词法。
*/
#包括
外部文件*yyin;
%}
%代词名词代词动词副词形容词介词连词
%%
句子:主语动词宾语{printf(“句子有效。\n”);}
;
主题:名词
|代词
;
宾语:名词
;
%%
main()
{
而(!feof(yyin)){
yyparse();
}
}
yyerror(字符*s)
{
fprintf(标准字符,“%s\n”,s);
}
我用的是flex和bison。
我在while循环的主函数中发现了分段错误。它根本没有进入循环
有什么想法吗?
谢谢
罗伯特yyin是否在某个地方被赋予了一个有意义的值?也许可以尝试分配它:
yyin = stdin;
就在主回路之前
编辑:可能尝试不将其定义为“外部”,除非它实际上是在其他地方定义的