linux-l: yacc/bison libary nicht da?!

Andreas Fitzner fitzner at informatik.hu-berlin.de
Sa Jan 22 13:01:33 CET 2000


Hallo MitLinuxer,

ich habe eine ganz einfache yacc datei (siehe attachement). nur
ein paar zeilen. problem: ich kann diese datei nicht auf
linux uebersetzen. auf solaris und freebsd klappt alles wunderbar.
	yacc a.y
	gcc y.tab.c -ly -o a
problem unter linux (unter slackware 7.0 und redhat 6.0 probiert)
hat er die liby* nicht. ich hab auch gesucht ob man die irgendwie
nachinstallieren muss, nix gefunden. aber ohne -ly findet er
logischer weise symbole wie yyparse() oder yyerror nicht.
wie kann ich denn auf linux yacc dateien kompilieren?
ich kann ja mit yacc oder bison die zu eine c datei (y.tab.c)
uebersetzten lassen, aber wie die kompilieren zu einem 
executable?

vielen Dank,

Andreas
-------------- nächster Teil --------------
%{
/* gut fuer printf */
# include <stdio.h>
/* fuer getchar */
# include <ctype.h>
/*
	uebersetzung:
		yacc a.y
		gcc y.tab.c -ly -o a
	bsp:
		echo 1+1 | ./a
*/
%}

%token DIGIT 
%left '+'
%left '*'
%%
list :
     | list '\n'
     | list stat '\n'
     | list error '\n' {yyerrok; printf("\n"); }
     ;

stat : expr  {printf(" .\n");}
     ;

expr : '(' expr ')'      
     | expr '+' expr     {printf(" +");}
     | expr '*' expr     {printf(" *");}
     | digit {printf(" %d", $1);}
     ;
digit : DIGIT  {$$=$1; }
       ;
%%
yylex(){
  int c,d;
  while ((c=getchar())==' ');
  if (isdigit(c)){
    yylval=c-'0'; return DIGIT;
  }
  return(c);
}

/*
Script started on Fri Nov 19 15:02:48 1999
$ ./a
1
 1 .
3+5+7*5
 3 5 + 7 5 * + .
2*4
 2 4 * .
3**5+4
parse error
 3
9+4
 9 4 + .
99*1+(3+4)
 9 .
parse error
5+((2*4)+5*7)
 5 2 4 * 5 7 * + + .
6*1+3*(5+1)
 6 1 * 3 5 1 + * + .
$ exit
exit

script done on Fri Nov 19 15:05:29 1999

*/



Mehr Informationen über die Mailingliste linux-l