json: fix parse errors

This commit is contained in:
Mitchell Hashimoto 2015-11-06 23:33:40 -08:00
parent 6cc18eb70b
commit 23d42714de
2 changed files with 32 additions and 36 deletions

View File

@ -79,7 +79,7 @@ pair:
Keys: []*ast.ObjectKey{ Keys: []*ast.ObjectKey{
&ast.ObjectKey{ &ast.ObjectKey{
Token: token.Token{ Token: token.Token{
Type: token.STRING, Type: token.IDENT,
Text: $1, Text: $1,
}, },
}, },
@ -98,12 +98,7 @@ value:
} }
| number | number
{ {
$$ = &ast.LiteralType{ $$ = $1
Token: token.Token{
Type: token.NUMBER,
Text: fmt.Sprintf("%d", $1),
},
}
} }
| object | object
{ {
@ -158,7 +153,10 @@ number:
int int
{ {
$$ = &ast.LiteralType{ $$ = &ast.LiteralType{
Token: token.Token{Type: token.NUMBER, Text: fmt.Sprintf("%d", $1)}, Token: token.Token{
Type: token.NUMBER,
Text: fmt.Sprintf("%d", $1),
},
} }
} }
| float | float

View File

@ -75,7 +75,7 @@ const jsonEofCode = 1
const jsonErrCode = 2 const jsonErrCode = 2
const jsonMaxDepth = 200 const jsonMaxDepth = 200
//line parse.y:224 //line parse.y:222
//line yacctab:1 //line yacctab:1
var jsonExca = [...]int{ var jsonExca = [...]int{
@ -536,7 +536,7 @@ jsondefault:
Keys: []*ast.ObjectKey{ Keys: []*ast.ObjectKey{
&ast.ObjectKey{ &ast.ObjectKey{
Token: token.Token{ Token: token.Token{
Type: token.STRING, Type: token.IDENT,
Text: jsonDollar[1].str, Text: jsonDollar[1].str,
}, },
}, },
@ -557,22 +557,17 @@ jsondefault:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:100 //line parse.y:100
{ {
jsonVAL.node = &ast.LiteralType{ jsonVAL.node = jsonDollar[1].node
Token: token.Token{
Type: token.NUMBER,
Text: fmt.Sprintf("%d", jsonDollar[1].node),
},
}
} }
case 9: case 9:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:109 //line parse.y:104
{ {
jsonVAL.node = jsonDollar[1].obj jsonVAL.node = jsonDollar[1].obj
} }
case 10: case 10:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:113 //line parse.y:108
{ {
jsonVAL.node = &ast.ListType{ jsonVAL.node = &ast.ListType{
List: jsonDollar[1].list, List: jsonDollar[1].list,
@ -580,7 +575,7 @@ jsondefault:
} }
case 11: case 11:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:119 //line parse.y:114
{ {
jsonVAL.node = &ast.LiteralType{ jsonVAL.node = &ast.LiteralType{
Token: token.Token{Type: token.BOOL, Text: "true"}, Token: token.Token{Type: token.BOOL, Text: "true"},
@ -588,7 +583,7 @@ jsondefault:
} }
case 12: case 12:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:125 //line parse.y:120
{ {
jsonVAL.node = &ast.LiteralType{ jsonVAL.node = &ast.LiteralType{
Token: token.Token{Type: token.BOOL, Text: "false"}, Token: token.Token{Type: token.BOOL, Text: "false"},
@ -596,7 +591,7 @@ jsondefault:
} }
case 13: case 13:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:131 //line parse.y:126
{ {
jsonVAL.node = &ast.LiteralType{ jsonVAL.node = &ast.LiteralType{
Token: token.Token{Type: token.STRING, Text: ""}, Token: token.Token{Type: token.STRING, Text: ""},
@ -604,39 +599,42 @@ jsondefault:
} }
case 14: case 14:
jsonDollar = jsonS[jsonpt-2 : jsonpt+1] jsonDollar = jsonS[jsonpt-2 : jsonpt+1]
//line parse.y:139 //line parse.y:134
{ {
jsonVAL.list = nil jsonVAL.list = nil
} }
case 15: case 15:
jsonDollar = jsonS[jsonpt-3 : jsonpt+1] jsonDollar = jsonS[jsonpt-3 : jsonpt+1]
//line parse.y:143 //line parse.y:138
{ {
jsonVAL.list = jsonDollar[2].list jsonVAL.list = jsonDollar[2].list
} }
case 16: case 16:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:149 //line parse.y:144
{ {
jsonVAL.list = []ast.Node{jsonDollar[1].node} jsonVAL.list = []ast.Node{jsonDollar[1].node}
} }
case 17: case 17:
jsonDollar = jsonS[jsonpt-3 : jsonpt+1] jsonDollar = jsonS[jsonpt-3 : jsonpt+1]
//line parse.y:153 //line parse.y:148
{ {
jsonVAL.list = append(jsonDollar[1].list, jsonDollar[3].node) jsonVAL.list = append(jsonDollar[1].list, jsonDollar[3].node)
} }
case 18: case 18:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:159 //line parse.y:154
{ {
jsonVAL.node = &ast.LiteralType{ jsonVAL.node = &ast.LiteralType{
Token: token.Token{Type: token.NUMBER, Text: fmt.Sprintf("%d", jsonDollar[1].num)}, Token: token.Token{
Type: token.NUMBER,
Text: fmt.Sprintf("%d", jsonDollar[1].num),
},
} }
} }
case 19: case 19:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:165 //line parse.y:163
{ {
jsonVAL.node = &ast.LiteralType{ jsonVAL.node = &ast.LiteralType{
Token: token.Token{ Token: token.Token{
@ -647,7 +645,7 @@ jsondefault:
} }
case 20: case 20:
jsonDollar = jsonS[jsonpt-2 : jsonpt+1] jsonDollar = jsonS[jsonpt-2 : jsonpt+1]
//line parse.y:174 //line parse.y:172
{ {
fs := fmt.Sprintf("%d%s", jsonDollar[1].num, jsonDollar[2].str) fs := fmt.Sprintf("%d%s", jsonDollar[1].num, jsonDollar[2].str)
jsonVAL.node = &ast.LiteralType{ jsonVAL.node = &ast.LiteralType{
@ -659,7 +657,7 @@ jsondefault:
} }
case 21: case 21:
jsonDollar = jsonS[jsonpt-2 : jsonpt+1] jsonDollar = jsonS[jsonpt-2 : jsonpt+1]
//line parse.y:184 //line parse.y:182
{ {
fs := fmt.Sprintf("%f%s", jsonDollar[1].f, jsonDollar[2].str) fs := fmt.Sprintf("%f%s", jsonDollar[1].f, jsonDollar[2].str)
jsonVAL.node = &ast.LiteralType{ jsonVAL.node = &ast.LiteralType{
@ -671,37 +669,37 @@ jsondefault:
} }
case 22: case 22:
jsonDollar = jsonS[jsonpt-2 : jsonpt+1] jsonDollar = jsonS[jsonpt-2 : jsonpt+1]
//line parse.y:196 //line parse.y:194
{ {
jsonVAL.num = jsonDollar[2].num * -1 jsonVAL.num = jsonDollar[2].num * -1
} }
case 23: case 23:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:200 //line parse.y:198
{ {
jsonVAL.num = jsonDollar[1].num jsonVAL.num = jsonDollar[1].num
} }
case 24: case 24:
jsonDollar = jsonS[jsonpt-2 : jsonpt+1] jsonDollar = jsonS[jsonpt-2 : jsonpt+1]
//line parse.y:206 //line parse.y:204
{ {
jsonVAL.f = jsonDollar[2].f * -1 jsonVAL.f = jsonDollar[2].f * -1
} }
case 25: case 25:
jsonDollar = jsonS[jsonpt-1 : jsonpt+1] jsonDollar = jsonS[jsonpt-1 : jsonpt+1]
//line parse.y:210 //line parse.y:208
{ {
jsonVAL.f = jsonDollar[1].f jsonVAL.f = jsonDollar[1].f
} }
case 26: case 26:
jsonDollar = jsonS[jsonpt-2 : jsonpt+1] jsonDollar = jsonS[jsonpt-2 : jsonpt+1]
//line parse.y:216 //line parse.y:214
{ {
jsonVAL.str = "e" + strconv.FormatInt(int64(jsonDollar[2].num), 10) jsonVAL.str = "e" + strconv.FormatInt(int64(jsonDollar[2].num), 10)
} }
case 27: case 27:
jsonDollar = jsonS[jsonpt-2 : jsonpt+1] jsonDollar = jsonS[jsonpt-2 : jsonpt+1]
//line parse.y:220 //line parse.y:218
{ {
jsonVAL.str = "e-" + strconv.FormatInt(int64(jsonDollar[2].num), 10) jsonVAL.str = "e-" + strconv.FormatInt(int64(jsonDollar[2].num), 10)
} }