From f2c361d91c3eef42943e07cdd110b23e87f9d7ed Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 23 Mar 2015 16:27:55 +0100 Subject: Boiler platte --- parser.y | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/parser.y b/parser.y index 44c2b29..694e35f 100644 --- a/parser.y +++ b/parser.y @@ -6,9 +6,13 @@ import "fmt" %union { sval S + sv []S ival I + iv []I fval F + fv []F cval C + cv []C any interface{} } @@ -27,6 +31,9 @@ import "fmt" %token ENCLOSE DISCLOSE DECODE ENCODE MAGNITUDE SCAN REDUCE %type value +%type ivector +%type fvector +%type cvector %% @@ -35,10 +42,24 @@ line | value { fmt.Println($1) } value - : STRING { $$ = $1 } - | QUOTED { $$ = $1 } - | INTEGER { $$ = $1 } - | FLOAT { $$ = $1 } - | COMPLEX { $$ = $1 } + : STRING { $$ = $1 } + | QUOTED { $$ = $1 } + | ivector { $$ = $1 } + | fvector { $$ = $1 } + | cvector { $$ = $1 } +ivector + : INTEGER { $$ = append($$, $1) } + | ivector INTEGER { $$ = append($1, $2) } + +fvector + : FLOAT { $$ = append($$, $1) } + | fvector FLOAT { $$ = append($1, $2) } + | fvector INTEGER { $$ = append($1, F($2)) } + +cvector + : COMPLEX { $$ = append($$, $1) } + | cvector COMPLEX { $$ = append($1, $2) } + | cvector FLOAT { $$ = append($1, C(complex($2, 0))) } + | cvector INTEGER { $$ = append($1, C(complex(F($2), 0))) } %% -- cgit v1.2.3