
%{
#include <stdio.h>
float length=1.0;
int flag=0;
%}

%%
 lines:
        | lines line
        ;
line: expr '\n' {printf(" \n ************\n ");}
    ;
expr:  L '.' { flag =1;} L  { int i; int k;k=1; for (i=1;i<=length; i++) k=k*2;
           printf ("%f     \n", $1+$4/(float) k);}
    ;
L   : L B {$$=$$*2+ $2;length=length+1; }
      | B {$$=$1; }
     ;
     B : '0' { $$=0; if (flag ==1) {length=1; flag=0;}}
       | '1' { $$=1;  if (flag ==1){ length=1; flag=0;}}
      ;

%%
main()
{

   yyparse();
 }
/*yyerror(s)
char *s;
{ fprintf(stderr, "line no. %d \n", lineno);
}
*/
yylex()
{ char c;
        c = getchar();
    return(c);
}

