parse int values
This commit is contained in:
parent
1a45eab148
commit
2ee11a367f
17
src/parse.y
17
src/parse.y
|
@ -21,10 +21,10 @@ struct parser_control {
|
||||||
}
|
}
|
||||||
|
|
||||||
%token tLPAREN tRPAREN tDOT
|
%token tLPAREN tRPAREN tDOT
|
||||||
%token <datum> tSYMBOL
|
%token <datum> tSYMBOL tINT
|
||||||
|
|
||||||
%type <datum> datum simple_datum symbol compound_datum
|
%type <datum> datum simple_datum symbol compound_datum
|
||||||
%type <datum> list list_tail
|
%type <datum> number integer list list_tail
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@ datum
|
||||||
|
|
||||||
simple_datum
|
simple_datum
|
||||||
: symbol
|
: symbol
|
||||||
|
| number
|
||||||
;
|
;
|
||||||
|
|
||||||
symbol
|
symbol
|
||||||
|
@ -55,6 +56,17 @@ symbol
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
number
|
||||||
|
: integer
|
||||||
|
;
|
||||||
|
|
||||||
|
integer
|
||||||
|
: tINT
|
||||||
|
{
|
||||||
|
$$ = $1;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
compound_datum
|
compound_datum
|
||||||
: list
|
: list
|
||||||
;
|
;
|
||||||
|
@ -96,6 +108,7 @@ pic_parse(pic_state *pic, const char *str)
|
||||||
struct parser_control p;
|
struct parser_control p;
|
||||||
|
|
||||||
p.pic = pic;
|
p.pic = pic;
|
||||||
|
p.value = pic_int_value(42);
|
||||||
|
|
||||||
yy_scan_string(str);
|
yy_scan_string(str);
|
||||||
yyparse(&p);
|
yyparse(&p);
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
%{
|
%{
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "picrin.h"
|
#include "picrin.h"
|
||||||
#include "y.tab.h"
|
#include "y.tab.h"
|
||||||
|
|
||||||
|
@ -14,6 +16,7 @@ struct parser_control {
|
||||||
|
|
||||||
"(" return tLPAREN;
|
"(" return tLPAREN;
|
||||||
")" return tRPAREN;
|
")" return tRPAREN;
|
||||||
|
[1-9][0-9]* { yylval.datum = pic_int_value(atoi(yytext)); return tINT; }
|
||||||
[a-z0-9A-Z]+ { yylval.datum = pic_intern_cstr(p->pic, yytext); return tSYMBOL; }
|
[a-z0-9A-Z]+ { yylval.datum = pic_intern_cstr(p->pic, yytext); return tSYMBOL; }
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
Loading…
Reference in New Issue