config/lang: fix shift/reduce conflict
This commit is contained in:
parent
07b78fdf84
commit
9ddcaf15eb
|
@ -27,6 +27,8 @@ import (
|
||||||
%type <node> expr interpolation literal literalModeTop literalModeValue
|
%type <node> expr interpolation literal literalModeTop literalModeValue
|
||||||
%type <nodeList> args
|
%type <nodeList> args
|
||||||
|
|
||||||
|
%left ARITH_OP
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
top:
|
top:
|
||||||
|
|
|
@ -50,7 +50,7 @@ const parserEofCode = 1
|
||||||
const parserErrCode = 2
|
const parserErrCode = 2
|
||||||
const parserMaxDepth = 200
|
const parserMaxDepth = 200
|
||||||
|
|
||||||
//line lang.y:159
|
//line lang.y:161
|
||||||
|
|
||||||
//line yacctab:1
|
//line yacctab:1
|
||||||
var parserExca = []int{
|
var parserExca = []int{
|
||||||
|
@ -76,7 +76,7 @@ var parserAct = []int{
|
||||||
var parserPact = []int{
|
var parserPact = []int{
|
||||||
|
|
||||||
-2, -1000, -2, -1000, -1000, -1000, -1000, -3, -1000, 3,
|
-2, -1000, -2, -1000, -1000, -1000, -1000, -3, -1000, 3,
|
||||||
-2, -1000, -1000, 10, -1000, -3, -3, -8, -4, -8,
|
-2, -1000, -1000, 10, -1000, -3, -3, -1000, -4, -8,
|
||||||
-1000, -3, -8,
|
-1000, -3, -8,
|
||||||
}
|
}
|
||||||
var parserPgo = []int{
|
var parserPgo = []int{
|
||||||
|
@ -344,7 +344,7 @@ parserdefault:
|
||||||
switch parsernt {
|
switch parsernt {
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
//line lang.y:33
|
//line lang.y:35
|
||||||
{
|
{
|
||||||
parserResult = &ast.LiteralNode{
|
parserResult = &ast.LiteralNode{
|
||||||
Value: "",
|
Value: "",
|
||||||
|
@ -353,7 +353,7 @@ parserdefault:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
//line lang.y:41
|
//line lang.y:43
|
||||||
{
|
{
|
||||||
parserResult = parserS[parserpt-0].node
|
parserResult = parserS[parserpt-0].node
|
||||||
|
|
||||||
|
@ -375,12 +375,12 @@ parserdefault:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
//line lang.y:64
|
//line lang.y:66
|
||||||
{
|
{
|
||||||
parserVAL.node = parserS[parserpt-0].node
|
parserVAL.node = parserS[parserpt-0].node
|
||||||
}
|
}
|
||||||
case 4:
|
case 4:
|
||||||
//line lang.y:68
|
//line lang.y:70
|
||||||
{
|
{
|
||||||
var result []ast.Node
|
var result []ast.Node
|
||||||
if c, ok := parserS[parserpt-1].node.(*ast.Concat); ok {
|
if c, ok := parserS[parserpt-1].node.(*ast.Concat); ok {
|
||||||
|
@ -395,27 +395,27 @@ parserdefault:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 5:
|
case 5:
|
||||||
//line lang.y:84
|
//line lang.y:86
|
||||||
{
|
{
|
||||||
parserVAL.node = parserS[parserpt-0].node
|
parserVAL.node = parserS[parserpt-0].node
|
||||||
}
|
}
|
||||||
case 6:
|
case 6:
|
||||||
//line lang.y:88
|
//line lang.y:90
|
||||||
{
|
{
|
||||||
parserVAL.node = parserS[parserpt-0].node
|
parserVAL.node = parserS[parserpt-0].node
|
||||||
}
|
}
|
||||||
case 7:
|
case 7:
|
||||||
//line lang.y:94
|
//line lang.y:96
|
||||||
{
|
{
|
||||||
parserVAL.node = parserS[parserpt-1].node
|
parserVAL.node = parserS[parserpt-1].node
|
||||||
}
|
}
|
||||||
case 8:
|
case 8:
|
||||||
//line lang.y:100
|
//line lang.y:102
|
||||||
{
|
{
|
||||||
parserVAL.node = parserS[parserpt-0].node
|
parserVAL.node = parserS[parserpt-0].node
|
||||||
}
|
}
|
||||||
case 9:
|
case 9:
|
||||||
//line lang.y:104
|
//line lang.y:106
|
||||||
{
|
{
|
||||||
parserVAL.node = &ast.LiteralNode{
|
parserVAL.node = &ast.LiteralNode{
|
||||||
Value: parserS[parserpt-0].token.Value.(int),
|
Value: parserS[parserpt-0].token.Value.(int),
|
||||||
|
@ -424,7 +424,7 @@ parserdefault:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 10:
|
case 10:
|
||||||
//line lang.y:112
|
//line lang.y:114
|
||||||
{
|
{
|
||||||
parserVAL.node = &ast.LiteralNode{
|
parserVAL.node = &ast.LiteralNode{
|
||||||
Value: parserS[parserpt-0].token.Value.(float64),
|
Value: parserS[parserpt-0].token.Value.(float64),
|
||||||
|
@ -433,7 +433,7 @@ parserdefault:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 11:
|
case 11:
|
||||||
//line lang.y:120
|
//line lang.y:122
|
||||||
{
|
{
|
||||||
parserVAL.node = &ast.Arithmetic{
|
parserVAL.node = &ast.Arithmetic{
|
||||||
Op: parserS[parserpt-1].token.Value.(ast.ArithmeticOp),
|
Op: parserS[parserpt-1].token.Value.(ast.ArithmeticOp),
|
||||||
|
@ -442,32 +442,32 @@ parserdefault:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 12:
|
case 12:
|
||||||
//line lang.y:128
|
//line lang.y:130
|
||||||
{
|
{
|
||||||
parserVAL.node = &ast.VariableAccess{Name: parserS[parserpt-0].token.Value.(string), Posx: parserS[parserpt-0].token.Pos}
|
parserVAL.node = &ast.VariableAccess{Name: parserS[parserpt-0].token.Value.(string), Posx: parserS[parserpt-0].token.Pos}
|
||||||
}
|
}
|
||||||
case 13:
|
case 13:
|
||||||
//line lang.y:132
|
//line lang.y:134
|
||||||
{
|
{
|
||||||
parserVAL.node = &ast.Call{Func: parserS[parserpt-3].token.Value.(string), Args: parserS[parserpt-1].nodeList, Posx: parserS[parserpt-3].token.Pos}
|
parserVAL.node = &ast.Call{Func: parserS[parserpt-3].token.Value.(string), Args: parserS[parserpt-1].nodeList, Posx: parserS[parserpt-3].token.Pos}
|
||||||
}
|
}
|
||||||
case 14:
|
case 14:
|
||||||
//line lang.y:137
|
//line lang.y:139
|
||||||
{
|
{
|
||||||
parserVAL.nodeList = nil
|
parserVAL.nodeList = nil
|
||||||
}
|
}
|
||||||
case 15:
|
case 15:
|
||||||
//line lang.y:141
|
//line lang.y:143
|
||||||
{
|
{
|
||||||
parserVAL.nodeList = append(parserS[parserpt-2].nodeList, parserS[parserpt-0].node)
|
parserVAL.nodeList = append(parserS[parserpt-2].nodeList, parserS[parserpt-0].node)
|
||||||
}
|
}
|
||||||
case 16:
|
case 16:
|
||||||
//line lang.y:145
|
//line lang.y:147
|
||||||
{
|
{
|
||||||
parserVAL.nodeList = append(parserVAL.nodeList, parserS[parserpt-0].node)
|
parserVAL.nodeList = append(parserVAL.nodeList, parserS[parserpt-0].node)
|
||||||
}
|
}
|
||||||
case 17:
|
case 17:
|
||||||
//line lang.y:151
|
//line lang.y:153
|
||||||
{
|
{
|
||||||
parserVAL.node = &ast.LiteralNode{
|
parserVAL.node = &ast.LiteralNode{
|
||||||
Value: parserS[parserpt-0].token.Value.(string),
|
Value: parserS[parserpt-0].token.Value.(string),
|
||||||
|
|
|
@ -5,7 +5,7 @@ state 0
|
||||||
|
|
||||||
PROGRAM_BRACKET_LEFT shift 7
|
PROGRAM_BRACKET_LEFT shift 7
|
||||||
STRING shift 6
|
STRING shift 6
|
||||||
. reduce 1 (src line 32)
|
. reduce 1 (src line 34)
|
||||||
|
|
||||||
interpolation goto 5
|
interpolation goto 5
|
||||||
literal goto 4
|
literal goto 4
|
||||||
|
@ -26,7 +26,7 @@ state 2
|
||||||
|
|
||||||
PROGRAM_BRACKET_LEFT shift 7
|
PROGRAM_BRACKET_LEFT shift 7
|
||||||
STRING shift 6
|
STRING shift 6
|
||||||
. reduce 2 (src line 40)
|
. reduce 2 (src line 42)
|
||||||
|
|
||||||
interpolation goto 5
|
interpolation goto 5
|
||||||
literal goto 4
|
literal goto 4
|
||||||
|
@ -35,25 +35,25 @@ state 2
|
||||||
state 3
|
state 3
|
||||||
literalModeTop: literalModeValue. (3)
|
literalModeTop: literalModeValue. (3)
|
||||||
|
|
||||||
. reduce 3 (src line 62)
|
. reduce 3 (src line 64)
|
||||||
|
|
||||||
|
|
||||||
state 4
|
state 4
|
||||||
literalModeValue: literal. (5)
|
literalModeValue: literal. (5)
|
||||||
|
|
||||||
. reduce 5 (src line 82)
|
. reduce 5 (src line 84)
|
||||||
|
|
||||||
|
|
||||||
state 5
|
state 5
|
||||||
literalModeValue: interpolation. (6)
|
literalModeValue: interpolation. (6)
|
||||||
|
|
||||||
. reduce 6 (src line 87)
|
. reduce 6 (src line 89)
|
||||||
|
|
||||||
|
|
||||||
state 6
|
state 6
|
||||||
literal: STRING. (17)
|
literal: STRING. (17)
|
||||||
|
|
||||||
. reduce 17 (src line 149)
|
. reduce 17 (src line 151)
|
||||||
|
|
||||||
|
|
||||||
state 7
|
state 7
|
||||||
|
@ -75,7 +75,7 @@ state 7
|
||||||
state 8
|
state 8
|
||||||
literalModeTop: literalModeTop literalModeValue. (4)
|
literalModeTop: literalModeTop literalModeValue. (4)
|
||||||
|
|
||||||
. reduce 4 (src line 67)
|
. reduce 4 (src line 69)
|
||||||
|
|
||||||
|
|
||||||
state 9
|
state 9
|
||||||
|
@ -93,7 +93,7 @@ state 10
|
||||||
|
|
||||||
PROGRAM_BRACKET_LEFT shift 7
|
PROGRAM_BRACKET_LEFT shift 7
|
||||||
STRING shift 6
|
STRING shift 6
|
||||||
. reduce 8 (src line 98)
|
. reduce 8 (src line 100)
|
||||||
|
|
||||||
interpolation goto 5
|
interpolation goto 5
|
||||||
literal goto 4
|
literal goto 4
|
||||||
|
@ -102,13 +102,13 @@ state 10
|
||||||
state 11
|
state 11
|
||||||
expr: INTEGER. (9)
|
expr: INTEGER. (9)
|
||||||
|
|
||||||
. reduce 9 (src line 103)
|
. reduce 9 (src line 105)
|
||||||
|
|
||||||
|
|
||||||
state 12
|
state 12
|
||||||
expr: FLOAT. (10)
|
expr: FLOAT. (10)
|
||||||
|
|
||||||
. reduce 10 (src line 111)
|
. reduce 10 (src line 113)
|
||||||
|
|
||||||
|
|
||||||
state 13
|
state 13
|
||||||
|
@ -116,13 +116,13 @@ state 13
|
||||||
expr: IDENTIFIER.PAREN_LEFT args PAREN_RIGHT
|
expr: IDENTIFIER.PAREN_LEFT args PAREN_RIGHT
|
||||||
|
|
||||||
PAREN_LEFT shift 16
|
PAREN_LEFT shift 16
|
||||||
. reduce 12 (src line 127)
|
. reduce 12 (src line 129)
|
||||||
|
|
||||||
|
|
||||||
state 14
|
state 14
|
||||||
interpolation: PROGRAM_BRACKET_LEFT expr PROGRAM_BRACKET_RIGHT. (7)
|
interpolation: PROGRAM_BRACKET_LEFT expr PROGRAM_BRACKET_RIGHT. (7)
|
||||||
|
|
||||||
. reduce 7 (src line 92)
|
. reduce 7 (src line 94)
|
||||||
|
|
||||||
|
|
||||||
state 15
|
state 15
|
||||||
|
@ -150,7 +150,7 @@ state 16
|
||||||
INTEGER shift 11
|
INTEGER shift 11
|
||||||
FLOAT shift 12
|
FLOAT shift 12
|
||||||
STRING shift 6
|
STRING shift 6
|
||||||
. reduce 14 (src line 136)
|
. reduce 14 (src line 138)
|
||||||
|
|
||||||
expr goto 19
|
expr goto 19
|
||||||
interpolation goto 5
|
interpolation goto 5
|
||||||
|
@ -159,13 +159,11 @@ state 16
|
||||||
literalModeValue goto 3
|
literalModeValue goto 3
|
||||||
args goto 18
|
args goto 18
|
||||||
|
|
||||||
17: shift/reduce conflict (shift 15(0), red'n 11(0)) on ARITH_OP
|
|
||||||
state 17
|
state 17
|
||||||
expr: expr.ARITH_OP expr
|
expr: expr.ARITH_OP expr
|
||||||
expr: expr ARITH_OP expr. (11)
|
expr: expr ARITH_OP expr. (11)
|
||||||
|
|
||||||
ARITH_OP shift 15
|
. reduce 11 (src line 121)
|
||||||
. reduce 11 (src line 119)
|
|
||||||
|
|
||||||
|
|
||||||
state 18
|
state 18
|
||||||
|
@ -182,13 +180,13 @@ state 19
|
||||||
args: expr. (16)
|
args: expr. (16)
|
||||||
|
|
||||||
ARITH_OP shift 15
|
ARITH_OP shift 15
|
||||||
. reduce 16 (src line 144)
|
. reduce 16 (src line 146)
|
||||||
|
|
||||||
|
|
||||||
state 20
|
state 20
|
||||||
expr: IDENTIFIER PAREN_LEFT args PAREN_RIGHT. (13)
|
expr: IDENTIFIER PAREN_LEFT args PAREN_RIGHT. (13)
|
||||||
|
|
||||||
. reduce 13 (src line 131)
|
. reduce 13 (src line 133)
|
||||||
|
|
||||||
|
|
||||||
state 21
|
state 21
|
||||||
|
@ -212,16 +210,16 @@ state 22
|
||||||
args: args COMMA expr. (15)
|
args: args COMMA expr. (15)
|
||||||
|
|
||||||
ARITH_OP shift 15
|
ARITH_OP shift 15
|
||||||
. reduce 15 (src line 140)
|
. reduce 15 (src line 142)
|
||||||
|
|
||||||
|
|
||||||
15 terminals, 8 nonterminals
|
15 terminals, 8 nonterminals
|
||||||
18 grammar rules, 23/2000 states
|
18 grammar rules, 23/2000 states
|
||||||
1 shift/reduce, 0 reduce/reduce conflicts reported
|
0 shift/reduce, 0 reduce/reduce conflicts reported
|
||||||
57 working sets used
|
57 working sets used
|
||||||
memory: parser 30/30000
|
memory: parser 30/30000
|
||||||
18 extra closures
|
18 extra closures
|
||||||
34 shift entries, 1 exceptions
|
33 shift entries, 1 exceptions
|
||||||
13 goto entries
|
13 goto entries
|
||||||
19 entries saved by goto default
|
19 entries saved by goto default
|
||||||
Optimizer space used: output 26/30000
|
Optimizer space used: output 26/30000
|
||||||
|
|
Loading…
Reference in New Issue