aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2019-07-17 01:16:50 +0200
committerDimitri Sokolyuk <demon@dim13.org>2019-07-17 01:16:50 +0200
commit493ed614f0662fe645119957b4e54865059fd110 (patch)
tree884bf4376adfd06b3cec3b10e86f440ef8c3eb16
parentb5678d2feec83452973f40b3a16ac30c55d6f5a9 (diff)
add go.mod
-rw-r--r--calc.go38
-rw-r--r--calc.y2
-rw-r--r--go.mod3
-rw-r--r--main.go4
4 files changed, 24 insertions, 23 deletions
diff --git a/calc.go b/calc.go
index a8e54a1..cf30fc6 100644
--- a/calc.go
+++ b/calc.go
@@ -1,5 +1,6 @@
-//line calc.y:2
+// Code generated by goyacc -o calc.go calc.y. DO NOT EDIT.
+//line calc.y:2
// Code generated by yacc. DO NOT EDIT.
package main
@@ -7,6 +8,7 @@ package main
import __yyfmt__ "fmt"
//line calc.y:4
+
import (
"math"
"math/rand"
@@ -46,7 +48,7 @@ var yyToknames = [...]string{
"UMINUS",
"'='",
"'_'",
- "'!'",
+ "'?'",
"'('",
"')'",
"'|'",
@@ -132,10 +134,10 @@ var yyTok1 = [...]int{
1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 15, 3, 3, 3, 10, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 10, 3, 3,
16, 17, 8, 6, 3, 7, 3, 9, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 13, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 13, 3, 15, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 11, 14, 3, 3, 3, 3,
@@ -490,7 +492,7 @@ yydefault:
case 2:
yyDollar = yyS[yypt-1 : yypt+1]
- //line calc.y:40
+//line calc.y:40
{
reg[last] = yyDollar[1].fval
yylex.(*yyLex).result = yyDollar[1].fval
@@ -498,79 +500,79 @@ yydefault:
}
case 3:
yyDollar = yyS[yypt-3 : yypt+1]
- //line calc.y:45
+//line calc.y:45
{
reg[yyDollar[1].sval] = yyDollar[3].fval
}
case 6:
yyDollar = yyS[yypt-1 : yypt+1]
- //line calc.y:51
+//line calc.y:51
{
yyVAL.fval = reg[yyDollar[1].sval]
}
case 7:
yyDollar = yyS[yypt-1 : yypt+1]
- //line calc.y:52
+//line calc.y:52
{
yyVAL.fval = reg[last]
}
case 8:
yyDollar = yyS[yypt-1 : yypt+1]
- //line calc.y:53
+//line calc.y:53
{
yyVAL.fval = rand.Float64()
}
case 9:
yyDollar = yyS[yypt-3 : yypt+1]
- //line calc.y:54
+//line calc.y:54
{
yyVAL.fval = yyDollar[1].fval + yyDollar[3].fval
}
case 10:
yyDollar = yyS[yypt-3 : yypt+1]
- //line calc.y:55
+//line calc.y:55
{
yyVAL.fval = yyDollar[1].fval - yyDollar[3].fval
}
case 11:
yyDollar = yyS[yypt-3 : yypt+1]
- //line calc.y:56
+//line calc.y:56
{
yyVAL.fval = yyDollar[1].fval * yyDollar[3].fval
}
case 12:
yyDollar = yyS[yypt-3 : yypt+1]
- //line calc.y:57
+//line calc.y:57
{
yyVAL.fval = yyDollar[1].fval / yyDollar[3].fval
}
case 13:
yyDollar = yyS[yypt-3 : yypt+1]
- //line calc.y:58
+//line calc.y:58
{
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:59
{
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:60
{
yyVAL.fval = -yyDollar[2].fval
}
case 16:
yyDollar = yyS[yypt-3 : yypt+1]
- //line calc.y:61
+//line calc.y:61
{
yyVAL.fval = yyDollar[2].fval
}
case 17:
yyDollar = yyS[yypt-3 : yypt+1]
- //line calc.y:62
+//line calc.y:62
{
yyVAL.fval = math.Abs(yyDollar[2].fval)
}
diff --git a/calc.y b/calc.y
index 3ca3083..ca8ceaa 100644
--- a/calc.y
+++ b/calc.y
@@ -50,7 +50,7 @@ exp
: NUMBER
| WORD { $$ = reg[$1] }
| '_' { $$ = reg[last] }
- | '!' { $$ = rand.Float64() }
+ | '?' { $$ = rand.Float64() }
| exp '+' exp { $$ = $1 + $3 }
| exp '-' exp { $$ = $1 - $3 }
| exp '*' exp { $$ = $1 * $3 }
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..99dd705
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module dim13.org/calc
+
+go 1.12
diff --git a/main.go b/main.go
index f308378..35111e3 100644
--- a/main.go
+++ b/main.go
@@ -9,11 +9,8 @@ import (
"os"
)
-const promt = "\t"
-
func main() {
scanner := bufio.NewScanner(os.Stdin)
- fmt.Print(promt)
for scanner.Scan() {
line := scanner.Text()
result, ok, err := Parse(line)
@@ -22,6 +19,5 @@ func main() {
} else if ok {
fmt.Printf("%v\n\n", result)
}
- fmt.Print(promt)
}
}