【发布时间】:2019-12-02 18:05:43
【问题描述】:
我正在尝试在 flex 和 bison 中创建一个编译器,但是当我尝试编译我的代码时,我遇到了这种类型的错误 我该如何解决这个问题??
flex.l:17:8: error: invalid type argument of ‘->’ (have ‘YYSTYPE’ {aka ‘int’}) "int" {yylval->fn = 11; return TYPE; }
这是弹性文件
%option header-file="flex.lex.h"
%{
#include "bison.tab.h"
#include "dichiarazioni.h"
%}
%%
"global_variables" { return VAR; }
"events" { return EVENT; }
"commands" { return COMMAND; }
"state" { return STATE; }
"actions" { return ACTION; }
"char" {yylval->fn = 10; return TYPE; }
"int" {yylval->fn = 11; return TYPE; }
"float" { yylval->fn = 12; return TYPE; }
"double" { yylval->fn = 13; return TYPE; }
"void" { yylval->fn = 14; return TYPE; }
"inc" { yylval->fn = 24; return OPERATORE; }
"dec" { yylval->fn = 25; return OPERATORE; }
"set" { yylval->fn = 26; return OPERATORE; }
print_schermo_message { yylval->fn = 40; return PRINT; }
[0-9]+ { return NUMBER; }
([a-z]+[_a-z0-9]*) { return ALPHA; }
"+" { yylval->fn = 20; return OPERATORE; }
"-" { yylval->fn = 21; return OPERATORE; }
"*" { yylval->fn = 22; return OPERATORE; }
"/" { yylval->fn = 23; return OPERATORE; }
">" { yylval->fn = 1; return CMP; }
"<" { yylval->fn = 2; return CMP; }
"!=" { yylval->fn = 3; return CMP; }
"==" { yylval->fn = 4; return CMP; }
">=" { yylval->fn = 5; return CMP; }
"<=" { yylval->fn = 6; return CMP; }
"&&" { yylval->fn = 7; return CMP; }
"||" { yylval->fn = 8; return CMP; }
%%
【问题讨论】:
标签: compiler-errors bison flex-lexer