я получил следующий гибкий и зубр код, который я хочу, чтобы скомпилировать и запустить:Компиляция сгибать/бизон ошибка программы
unari.lex:
%{
#include "unari.tab.h"
using namespace std;
%}
%option noyywrap
%%
a {yylval=1; return TOK_A;}
\n return '\n';
\+ return '+';
. /*ignore all rest*/
%%
unari.y:
%{
#include <iostream>
using namespace std;
void yyerror(const char *errorinfo);
int yylex();
%}
%left TOK_A
%left '+'
%%
line: exp '\n' {cout<<$1<<endl; return 0;}
;
exp: exp exp {$$=$1+$2;}
| exp '+' exp {$$=$1+$3;}
| TOK_A {$$=yylval;}
;
%%
void yyerror(const char *errorinfo) {
cout<<"problem"<<endl;
}
int main() {
while(yyparse()==0);
return 0;
}
makefile:
calc: lex.yy.o unari.tab.o
g++ unari.tab.o lex.yy.o -o calc.exe
unari.tab.o: unari.tab.c
g++ -c unari.tab.c
lex.yy.o: lex.yy.c
g++ -c lex.yy.c
lex.yy.c: unari.lex unari.tab.h
flex unari.lex
unari.tab.c unari.tab.h: unari.y
bison -d unari.y
clean:
rm *.h *.c *.o *.exe
Проблема заключается в том, , Я получаю следующую ошибку при компиляции на окнах:
makefile1:: *** multiple target patterns. Stop.
Кто-нибудь признает проблему? Я убегаю голову над этим в течение более 3-х часов уже пытались поиска в Интернете и не нашел ничего полезного ....
Flex тег для глинобитных/Apache UI Framework. Тег Flex-lexer используется для лексического анализатора. – JeffryHouser
Вы уверены, что это ваш точный make-файл? –
Это может быть ваша проблема: «unari.tab.c unari.tab.h: unari.y». Обычно есть только одно слово слева от: ' –