From b766d2119ae0503e402f305fdf034ccafa4fdae9 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 17 Jul 2019 13:07:51 +0200 Subject: cleanup --- calc.go | 33 ++++++++++++++++----------------- calc.y | 5 ++--- lexer.go | 1 - main.go | 8 ++++---- 4 files changed, 22 insertions(+), 25 deletions(-) diff --git a/calc.go b/calc.go index cf30fc6..672d063 100644 --- a/calc.go +++ b/calc.go @@ -59,16 +59,16 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line calc.y:65 +//line calc.y:64 func init() { rand.Seed(time.Now().UnixNano()) } -func Parse(input string) (float64, bool, error) { +func Parse(input string) (float64, error) { l := lex(input) yyParse(l) - return l.result, l.ok, l.err + return l.result, l.err } //line yacctab:1 @@ -496,83 +496,82 @@ yydefault: { reg[last] = yyDollar[1].fval yylex.(*yyLex).result = yyDollar[1].fval - yylex.(*yyLex).ok = true } case 3: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:45 +//line calc.y:44 { reg[yyDollar[1].sval] = yyDollar[3].fval } case 6: yyDollar = yyS[yypt-1 : yypt+1] -//line calc.y:51 +//line calc.y:50 { yyVAL.fval = reg[yyDollar[1].sval] } case 7: yyDollar = yyS[yypt-1 : yypt+1] -//line calc.y:52 +//line calc.y:51 { yyVAL.fval = reg[last] } case 8: yyDollar = yyS[yypt-1 : yypt+1] -//line calc.y:53 +//line calc.y:52 { yyVAL.fval = rand.Float64() } case 9: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:54 +//line calc.y:53 { yyVAL.fval = yyDollar[1].fval + yyDollar[3].fval } case 10: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:55 +//line calc.y:54 { yyVAL.fval = yyDollar[1].fval - yyDollar[3].fval } case 11: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:56 +//line calc.y:55 { yyVAL.fval = yyDollar[1].fval * yyDollar[3].fval } case 12: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:57 +//line calc.y:56 { yyVAL.fval = yyDollar[1].fval / yyDollar[3].fval } case 13: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:58 +//line calc.y:57 { yyVAL.fval = math.Mod(yyDollar[1].fval, yyDollar[3].fval) } case 14: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:59 +//line calc.y:58 { yyVAL.fval = math.Pow(yyDollar[1].fval, yyDollar[3].fval) } case 15: yyDollar = yyS[yypt-2 : yypt+1] -//line calc.y:60 +//line calc.y:59 { yyVAL.fval = -yyDollar[2].fval } case 16: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:61 +//line calc.y:60 { yyVAL.fval = yyDollar[2].fval } case 17: yyDollar = yyS[yypt-3 : yypt+1] -//line calc.y:62 +//line calc.y:61 { yyVAL.fval = math.Abs(yyDollar[2].fval) } diff --git a/calc.y b/calc.y index ca8ceaa..9f81d6c 100644 --- a/calc.y +++ b/calc.y @@ -40,7 +40,6 @@ line | exp { reg[last] = $1 yylex.(*yyLex).result = $1 - yylex.(*yyLex).ok = true } | WORD '=' exp { reg[$1] = $3 } | error @@ -68,8 +67,8 @@ func init() { rand.Seed(time.Now().UnixNano()) } -func Parse(input string) (float64, bool, error) { +func Parse(input string) (float64, error) { l := lex(input) yyParse(l) - return l.result, l.ok, l.err + return l.result, l.err } diff --git a/lexer.go b/lexer.go index 974831c..bbc5ef7 100644 --- a/lexer.go +++ b/lexer.go @@ -27,7 +27,6 @@ type yyLex struct { width int items chan item result float64 - ok bool err error } diff --git a/main.go b/main.go index 35111e3..5d5e532 100644 --- a/main.go +++ b/main.go @@ -13,11 +13,11 @@ func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { line := scanner.Text() - result, ok, err := Parse(line) + result, err := Parse(line) if err != nil { - fmt.Printf("error: %v\n\n", err) - } else if ok { - fmt.Printf("%v\n\n", result) + fmt.Println("error:", err) + continue } + fmt.Println(result) } } -- cgit v1.2.3