ch3-03.l | ch3-03.l | |||
---|---|---|---|---|
%{ | %{ | |||
/* We usually need these... */ | ||||
#include <stdio.h> | ||||
#include <stdlib.h> | ||||
/* Include this to use yylex_destroy for flex version < 2.5.9 */ | ||||
#include "flex_memory_fix.h" | ||||
/* This is required and is generated automatically by bison from the .y file */ | ||||
#include "y.tab.h" | #include "y.tab.h" | |||
/* Local stuff we need here... */ | ||||
#include <math.h> | #include <math.h> | |||
extern double vbltable[26]; | extern double vbltable[26]; | |||
%} | %} | |||
/* Add this to get line numbers... */ | ||||
%option yylineno | ||||
%% | %% | |||
([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) { | ([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) { | |||
yylval.dval = atof(yytext); return NUMBER; | yylval.dval = atof(yytext); return NUMBER; | |||
} | } | |||
[ \t] ; /* ignore white space */ | [ \t] ; /* ignore white space */ | |||
[a-z] { yylval.vblno = yytext[0] - 'a'; return NAME; } | [a-z] { yylval.vblno = yytext[0] - 'a'; return NAME; } | |||
"$" { return 0; /* end of input */ } | "$" { return 0; /* end of input */ } | |||
\n | | \n | | |||
. return yytext[0]; | . return yytext[0]; | |||
%% | %% | |||
/* We need to add a main() function. | ||||
* It is more convenient to put it here to manage flex memory management issues. | ||||
* At the minimum it must call yyparse(). | ||||
*/ | ||||
extern int yyparse(); | ||||
int main(int argc, char *argv[]) | ||||
{ | ||||
printf("Enter sums using + - * / and () or type $ to quit.\n"); | ||||
yyparse(); /* REQUIRED */ | ||||
yylex_destroy(); /* Add to clean up memory leaks */ | ||||
} | ||||
End of changes. 4 change blocks. | ||||
0 lines changed or deleted | 13 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |