From 784a7564678e08ad6e9325c3c6e3fea06b8213c2 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 28 Mar 2015 16:50:57 +0100 Subject: Minor resort --- parser.y | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'parser.y') diff --git a/parser.y b/parser.y index 0b4e43d..65bda58 100644 --- a/parser.y +++ b/parser.y @@ -3,7 +3,7 @@ package main import "fmt" -var vars = map[S][]interface{}{} +var vars = map[S]A{} %} %union { @@ -11,8 +11,7 @@ var vars = map[S][]interface{}{} ival I fval F cval C - any interface{} - vector []interface{} + any A } %token STRING QUOTED @@ -30,24 +29,32 @@ var vars = map[S][]interface{}{} %token ENCLOSE DISCLOSE DECODE ENCODE MAGNITUDE SCAN REDUCE %type value -%type vector %% line : /* empty */ - | vector { fmt.Println($1) } - | monadic vector - | vector dyadic vector - | adverb monadic vector - | QUAD STRING { fmt.Println(quad(string($2))) } - | RBRACE STRING { cmd(string($2)) } - | STRING ASSIGN vector { vars[$1] = $3 } + | line expr + +expr + : monadic expr + | adverb monadic expr + | expr dyadic expr + | expr adverb dyadic expr + | dfn + | quad + | cmd | STRING { fmt.Println(vars[$1]) } + | value { fmt.Println($1) } + +dfn + : STRING ASSIGN value { vars[$1] = $3 } + +quad + : QUAD STRING { fmt.Println(quad(string($2))) } -vector - : value { $$ = append($$, $1) } - | vector value { $$ = append($1, $2) } +cmd + : RBRACE STRING { cmd(string($2)) } value : QUOTED { $$ = $1 } -- cgit v1.2.3