diff --git a/parser/parser.lex b/parser/parser.lex index 26b87eb..04b5295 100644 --- a/parser/parser.lex +++ b/parser/parser.lex @@ -1,5 +1,6 @@ %option nounput +%option bison-locations %{ @@ -35,8 +36,8 @@ \< return LESS; \> return GREATER; --?[0-9]+ yylval = new IntegerNode(atoi(yytext)); return DEC_NUMBER; --?[0-9]*\.[0-9]+ yylval = new NumberNode(atof(yytext)); return REAL_NUMBER; +-?[0-9]+ *yylval = new IntegerNode(atoi(yytext)); return DEC_NUMBER; +-?[0-9]*\.[0-9]+ *yylval = new NumberNode(atof(yytext)); return REAL_NUMBER; ambient return AMBIENT; box return BOX; diff --git a/parser/parser.yy b/parser/parser.yy index f6aec75..4656c28 100644 --- a/parser/parser.yy +++ b/parser/parser.yy @@ -7,9 +7,10 @@ #include "util/refptr.h" #include "nodes.h" #include "parser.h" +#include "parser.tab.hh" /* bison-generated header with YY[SL]TYPE */ using namespace std; -int yylex(void); +int yylex(YYSTYPE *, YYLTYPE *); extern FILE * yyin; @@ -27,6 +28,9 @@ static refptr parsed_scene_node; %} +%pure-parser +%locations + %token PLUS; %token MINUS; %token STAR;