if (c >= '0' && c <= '9'){
ungetc(c,stdin);
- scanf("%d",&yylval.n);
- return NUM;
+ int i = 0;
+ char buf[BUFSIZE];
+
+ while ((c = getchar())>= '0' && c<= '9'){
+ buf[i] = c;
+ i++;
+ if (i >= BUFSIZE-1)
+ parse_err("Too long number");
+ }
+ ungetc(c,stdin);
+ buf[i] = 0;
+ yylval.str = xstrdup(buf);
+
+ return CONST;
}
if (c == '$'){