Problème avec le bison

yous18 Messages postés 7 Statut Membre -  
mamiemando Messages postés 34250 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
dans ce exemple simple de bison qui calcule la somme d'une expression arithmetique
%start input
%token NUMBER A S M NL

%left A S
%left M

%%
input : /**/
| input formule
;
formule : NL
| exp NL { printf("Resul ==> %d\n",$1);
printf("Donnez une expression arithmetique : ") ; }
;
exp : NUMBER A NUMBER {$$ = $1 + $3 ; }
| exp A NUMBER {$$ = $1 + $3 ; }
;
%%
main()
{
printf("Donnez une expression arithmetique : ");
yyparse();
}


j'ai pas compri cette ligne
input : /**/
| input formule
;
A voir également:

1 réponse

mamiemando Messages postés 34250 Date d'inscription   Statut Modérateur Dernière intervention   7 900
 
Il faudrait le fichier flex pour être sûr mais voilà comment je l'interprète.
La récursivité sur input correspond à un while(1){ lire expression;} puisqu'il n'y a pas de cas d'arrêt.
Pour quitter tu es donc obligé de faire ctrl c.

Attention ton main est sensé retourner un type (normalement int mais sinon il faut au moins mettre void).
int main(){
  printf("Donnez une expression arithmetique : ");
  yyparse(); 
  return 0;
}

Bonne chance
0