%{
#include <stdio.h>
typedef char *CHAR_PTR;
CHAR_PTR temp,temp1;
char * strcat3(char c, char * s1,char *s)
{     int j,i;
        char * p = calloc(strlen(s)+1+strlen(s1)+20, 1);
        if (p)
                 {  p[0]=c; j = 1;
                         for(i=0;i<strlen(s1);i++) p[j++]=s1[i];p[j++]=',';
                         for(i=0;i<strlen(s)+1;i++) p[j++]=s[i];
                         p[j++]='\0'; return(p);}
        fputs("no room\n", stderr), exit(1);
      }
int flag=0;
extern int i,loop_count;
#define YYSTYPE CHAR_PTR
%}
%token NUMBER
%token ID
%left '+' '-'
%left '*' '/'
%right '^'
%%
 lines:
        | lines line
        ;
line: '\n' {printf(" \n ************\n ");}
    | expr 
    ;
expr:  { printf(" + "); } expr '+' expr 

      | { printf (" - "); } expr '-' expr 


      | { printf ("* " ) ; } expr '*' expr 

      | '(' expr  ')' 

      | NUMBER  { $$ =strsave($1); printf(" %s ", $$); }

      | ID      { $$= strsave($1);printf(" %s ", $$);}
           ;

%%
#include "lex.yy.c"
main()
{   FILE *f;
    int i;
    extern FILE *yyin;
    i=0;
    while ( i < 2) {
    f= fopen("test.dat","r");
    yyin= f;

   yyparse(); printf("First time over *******\n"); i++;}
 }
/*yyerror(s)
char *s;
{ fprintf(stderr, "line no. %d \n", lineno);
}
*/
