From 784a7564678e08ad6e9325c3c6e3fea06b8213c2 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 28 Mar 2015 16:50:57 +0100 Subject: Minor resort --- format.go | 1 + main.go | 2 +- parser.y | 35 +++++++++++++++++++++-------------- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/format.go b/format.go index 48ffcfd..e980652 100644 --- a/format.go +++ b/format.go @@ -6,6 +6,7 @@ type S string type I int64 type F float64 type C complex128 +type A interface{} func (s S) String() string { return string(s) diff --git a/main.go b/main.go index c7cbe58..a4de749 100644 --- a/main.go +++ b/main.go @@ -18,7 +18,7 @@ func init() { func main() { in := bufio.NewReader(os.Stdin) for { - os.Stdout.WriteString("\t") + os.Stdout.WriteString(" ") line, err := in.ReadString('\n') if err == io.EOF { return 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