aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <sokolyuk@gmail.com>2023-06-20 08:49:45 +0200
committerDimitri Sokolyuk <sokolyuk@gmail.com>2023-06-20 08:49:45 +0200
commit1b8d52b82a0642e80b479fdf3d4f644e40b40043 (patch)
tree93ad14cef2ba4878f06ea19f4c1f43cbdae3c24e
parentab8724ea61f7efa8073932b716285c3bd09d31cf (diff)
-rw-r--r--calc.go79
1 files changed, 40 insertions, 39 deletions
diff --git a/calc.go b/calc.go
index 8ac53dd..a37533f 100644
--- a/calc.go
+++ b/calc.go
@@ -51,6 +51,7 @@ var yyToknames = [...]string{
"')'",
"'|'",
}
+
var yyStatenames = [...]string{}
const yyEofCode = 1
@@ -70,7 +71,7 @@ func Parse(input string) (float64, error) {
}
//line yacctab:1
-var yyExca = [...]int{
+var yyExca = [...]int8{
-1, 0,
1, 1,
-2, 0,
@@ -83,8 +84,7 @@ const yyPrivate = 57344
const yyLast = 58
-var yyAct = [...]int{
-
+var yyAct = [...]int8{
2, 11, 12, 13, 14, 15, 16, 17, 16, 18,
20, 21, 22, 23, 24, 25, 26, 27, 28, 4,
1, 5, 3, 0, 8, 11, 12, 13, 14, 15,
@@ -92,43 +92,43 @@ var yyAct = [...]int{
0, 8, 11, 12, 13, 14, 15, 16, 6, 7,
9, 0, 10, 29, 13, 14, 15, 16,
}
-var yyPact = [...]int{
+var yyPact = [...]int16{
17, -1000, -5, -6, -1000, -1000, -1000, -1000, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34, -1000, -1000,
36, 19, 46, 46, -3, -3, -3, -1000, -5, -1000,
-1000,
}
-var yyPgo = [...]int{
+var yyPgo = [...]int8{
0, 0, 20,
}
-var yyR1 = [...]int{
+var yyR1 = [...]int8{
0, 2, 2, 2, 2, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
}
-var yyR2 = [...]int{
+var yyR2 = [...]int8{
0, 0, 1, 3, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 2, 3, 3,
}
-var yyChk = [...]int{
+var yyChk = [...]int16{
-1000, -2, -1, 5, 2, 4, 14, 15, 7, 16,
18, 6, 7, 8, 9, 10, 11, 13, -1, 5,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 17,
18,
}
-var yyDef = [...]int{
+var yyDef = [...]int8{
-2, -2, 2, 6, 4, 5, 7, 8, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 15, 6,
0, 0, 9, 10, 11, 12, 13, 14, 3, 16,
17,
}
-var yyTok1 = [...]int{
+var yyTok1 = [...]int8{
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,
@@ -143,11 +143,12 @@ var yyTok1 = [...]int{
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 18,
}
-var yyTok2 = [...]int{
+var yyTok2 = [...]int8{
2, 3, 4, 5, 12,
}
-var yyTok3 = [...]int{
+
+var yyTok3 = [...]int8{
0,
}
@@ -229,9 +230,9 @@ func yyErrorMessage(state, lookAhead int) string {
expected := make([]int, 0, 4)
// Look for shiftable tokens.
- base := yyPact[state]
+ base := int(yyPact[state])
for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
- if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
+ if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
if len(expected) == cap(expected) {
return res
}
@@ -241,13 +242,13 @@ func yyErrorMessage(state, lookAhead int) string {
if yyDef[state] == -2 {
i := 0
- for yyExca[i] != -1 || yyExca[i+1] != state {
+ for yyExca[i] != -1 || int(yyExca[i+1]) != state {
i += 2
}
// Look for tokens that we accept or reduce.
for i += 2; yyExca[i] >= 0; i += 2 {
- tok := yyExca[i]
+ tok := int(yyExca[i])
if tok < TOKSTART || yyExca[i+1] == 0 {
continue
}
@@ -278,30 +279,30 @@ func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
token = 0
char = lex.Lex(lval)
if char <= 0 {
- token = yyTok1[0]
+ token = int(yyTok1[0])
goto out
}
if char < len(yyTok1) {
- token = yyTok1[char]
+ token = int(yyTok1[char])
goto out
}
if char >= yyPrivate {
if char < yyPrivate+len(yyTok2) {
- token = yyTok2[char-yyPrivate]
+ token = int(yyTok2[char-yyPrivate])
goto out
}
}
for i := 0; i < len(yyTok3); i += 2 {
- token = yyTok3[i+0]
+ token = int(yyTok3[i+0])
if token == char {
- token = yyTok3[i+1]
+ token = int(yyTok3[i+1])
goto out
}
}
out:
if token == 0 {
- token = yyTok2[1] /* unknown char */
+ token = int(yyTok2[1]) /* unknown char */
}
if yyDebug >= 3 {
__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
@@ -356,7 +357,7 @@ yystack:
yyS[yyp].yys = yystate
yynewstate:
- yyn = yyPact[yystate]
+ yyn = int(yyPact[yystate])
if yyn <= yyFlag {
goto yydefault /* simple state */
}
@@ -367,8 +368,8 @@ yynewstate:
if yyn < 0 || yyn >= yyLast {
goto yydefault
}
- yyn = yyAct[yyn]
- if yyChk[yyn] == yytoken { /* valid shift */
+ yyn = int(yyAct[yyn])
+ if int(yyChk[yyn]) == yytoken { /* valid shift */
yyrcvr.char = -1
yytoken = -1
yyVAL = yyrcvr.lval
@@ -381,7 +382,7 @@ yynewstate:
yydefault:
/* default state action */
- yyn = yyDef[yystate]
+ yyn = int(yyDef[yystate])
if yyn == -2 {
if yyrcvr.char < 0 {
yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
@@ -390,18 +391,18 @@ yydefault:
/* look through exception table */
xi := 0
for {
- if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
+ if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
break
}
xi += 2
}
for xi += 2; ; xi += 2 {
- yyn = yyExca[xi+0]
+ yyn = int(yyExca[xi+0])
if yyn < 0 || yyn == yytoken {
break
}
}
- yyn = yyExca[xi+1]
+ yyn = int(yyExca[xi+1])
if yyn < 0 {
goto ret0
}
@@ -423,10 +424,10 @@ yydefault:
/* find a state where "error" is a legal shift action */
for yyp >= 0 {
- yyn = yyPact[yyS[yyp].yys] + yyErrCode
+ yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
if yyn >= 0 && yyn < yyLast {
- yystate = yyAct[yyn] /* simulate a shift of "error" */
- if yyChk[yystate] == yyErrCode {
+ yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
+ if int(yyChk[yystate]) == yyErrCode {
goto yystack
}
}
@@ -462,7 +463,7 @@ yydefault:
yypt := yyp
_ = yypt // guard against "declared and not used"
- yyp -= yyR2[yyn]
+ yyp -= int(yyR2[yyn])
// yyp is now the index of $0. Perform the default action. Iff the
// reduced production is ε, $1 is possibly out of range.
if yyp+1 >= len(yyS) {
@@ -473,16 +474,16 @@ yydefault:
yyVAL = yyS[yyp+1]
/* consult goto table to find next state */
- yyn = yyR1[yyn]
- yyg := yyPgo[yyn]
+ yyn = int(yyR1[yyn])
+ yyg := int(yyPgo[yyn])
yyj := yyg + yyS[yyp].yys + 1
if yyj >= yyLast {
- yystate = yyAct[yyg]
+ yystate = int(yyAct[yyg])
} else {
- yystate = yyAct[yyj]
- if yyChk[yystate] != -yyn {
- yystate = yyAct[yyg]
+ yystate = int(yyAct[yyj])
+ if int(yyChk[yystate]) != -yyn {
+ yystate = int(yyAct[yyg])
}
}
// dummy call; replaced with literal code