%{
#include <stdio.h>
#define YYSTYPE int    /* Tipo retornado por el parser nuestro */

%}

%token ADD
%token SUB
%token MUL
%token DIV
%token OPEN
%token CLOSE
%token INT
%token ID
%token SCOLON

/* Prioridades y asociatividad */
%left ADD SUB
%left MUL DIV

%%

prog : linst
     ;

linst : inst1 linst
      | 
      ;

inst1 : inst

inst:  SCOLON		{ }
     | expr SCOLON	{printf("= %d\n", $1); fflush(stdout);} 
     | error SCOLON	{ }
     ;

expr : expr ADD expr	{ $$ = $1 + $3; }
     | expr SUB expr	{ $$ = $1 - $3; }
     | expr MUL expr	{ $$ = $1 * $3; }
     | expr DIV expr	{ $$ = $1 / $3; }
     | OPEN expr CLOSE  { $$ = $2; }
     | INT		{ $$ = $1; }
     ;
%%
