gpt4 book ai didi

Bison 不创建 tab.h 文件

转载 作者:行者123 更新时间:2023-12-04 22:33:44 26 4
gpt4 key购买 nike

我是 flex 和 bison 的新手,我已经在这个项目上工作了几天。我有一个以前可以正常工作的野牛文件,我对其进行了一些更改,但现在它没有创建 tab.h 文件……我已将错误以及我的野牛和 flex 文件放在下面……
错误:

  In file included from stojk_3_2.y:55:
stojkovic_project1_2.l:4:27: error: stojk_3_2.tab.h: No such file or directory
stojk_3_2.tab.c: In function ‘int yyparse()’:
stojk_3_2.tab.c:1416: warning: deprecated conversion from string constant to ‘char*’
stojk_3_2.tab.c:1562: warning: deprecated conversion from string constant to ‘char*’

.y 文件:
%{
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define YYSTYPE double

int yylex(void);

static
void yyerror(char *s)
{
printf("yyerror: %s\n", s);
}

%}

%token PLUS
%token MINUS
%token MULT
%token DIVIDE

%token LPAREN
%token RPAREN

%token UNSIGNEDINTEGER

%left PLUS MINUS
%left MULT DIVIDE

%token Variable
%token Exp
%token Sign
%token Unsigned_int
%token Unsigned_float_int
%token Factor

%%

lines : lines expr '\n' {printf("%g\n", $2);}
| lines '\n'
| /*empty*/
;

expr : expr PLUS expr {$$ = $1 + $3;}
| expr MINUS expr {$$ = $1 - $3;}
| expr MULT expr {$$ = $1 * $3;}
| expr DIVIDE expr {$$ = $1 / $3;}
| LPAREN expr RPAREN {$$ = $2;}
| UNSIGNEDINTEGER
;

%%

#include "lex.yy.c"

int yylex(void);
int yyparse(void);

int main(void)
{
return yyparse();
}

.l 文件
/*** Definition section ***/
%{

#include "stojk_3_2.tab.h"
%}


Variable [a-zA-Z_]+[a-zA-Z0-9_]*
Digit [0-9]
Digits [0-9]*
Sign [+]|[-]
Exp [E]+{Sign}|[e]+{Sign}
Unsigned_int {Digit}|{Digits}
Unsigned_float_int ({Digit}|{Digits}+[.]+{Digit}|{Digits})({Digit}| {Digits}+[.]+{Digit}|{Digits}+{Exp}+{Digit}|{Digits})
Factor {Variable}|{Unsigned_int}| {Unsigned_float_int}




%{
/* C code to be copied verbatim */
#include <stdio.h>

%}

/* This tells flex to read only one input file */
%option noyywrap

%%
/*** Rules section ***/

/* [0-9]+ matches a string of one or more digits */

{Variable} { return Variable; }

{Exp} {return Exp; }
{Sign} { return Sign; }

{Unsigned_int} { return Unsigned_int; }
{Unsigned_float_int} { return Unsigned_float_int; }
{Factor} { return Factor; }









.|\n { /* Ignore all other characters. */ }

%%

最佳答案

尝试运行

bison -d blah.y

这将使其生成 .h 文件

关于 Bison 不创建 tab.h 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13436832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com