aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-03-23 16:27:55 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-03-23 16:27:55 +0100
commitf2c361d91c3eef42943e07cdd110b23e87f9d7ed (patch)
treed5308ef24c43d85bebf5e27a4146ed24ef9efe03
parent57a87fef43800fae37b117b521c7402b7c3950f4 (diff)
Boiler platte
-rw-r--r--parser.y31
1 files 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 <any> value
+%type <iv> ivector
+%type <fv> fvector
+%type <cv> 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))) }
%%