196 lines
4.9 KiB
Go
196 lines
4.9 KiB
Go
// Code generated by gocc; DO NOT EDIT.
|
|
|
|
package parser
|
|
|
|
import (
|
|
"azalea/schema/ast"
|
|
"azalea/schema/token"
|
|
)
|
|
|
|
type (
|
|
ProdTab [numProductions]ProdTabEntry
|
|
ProdTabEntry struct {
|
|
String string
|
|
Id string
|
|
NTType int
|
|
Index int
|
|
NumSymbols int
|
|
ReduceFunc func([]Attrib, interface{}) (Attrib, error)
|
|
}
|
|
Attrib interface {
|
|
}
|
|
)
|
|
|
|
var productionsTable = ProdTab{
|
|
ProdTabEntry{
|
|
String: `S' : Schema << >>`,
|
|
Id: "S'",
|
|
NTType: 0,
|
|
Index: 0,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return X[0], nil
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Schema : ExprList << >>`,
|
|
Id: "Schema",
|
|
NTType: 1,
|
|
Index: 1,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return X[0], nil
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `ExprList : Expr << ast.NewExprList(X[0]) >>`,
|
|
Id: "ExprList",
|
|
NTType: 2,
|
|
Index: 2,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewExprList(X[0])
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `ExprList : ExprList Expr << ast.AppendExpr(X[0], X[1]) >>`,
|
|
Id: "ExprList",
|
|
NTType: 2,
|
|
Index: 3,
|
|
NumSymbols: 2,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.AppendExpr(X[0], X[1])
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `ValList : Val << ast.NewValList(X[0]) >>`,
|
|
Id: "ValList",
|
|
NTType: 3,
|
|
Index: 4,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewValList(X[0])
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `ValList : ValList Val << ast.AppendVal(X[0], X[1]) >>`,
|
|
Id: "ValList",
|
|
NTType: 3,
|
|
Index: 5,
|
|
NumSymbols: 2,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.AppendVal(X[0], X[1])
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Val : string << ast.NewStringVal(X[0].(*token.Token)) >>`,
|
|
Id: "Val",
|
|
NTType: 4,
|
|
Index: 6,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewStringVal(X[0].(*token.Token))
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Val : rune << ast.NewRuneVal(X[0].(*token.Token)) >>`,
|
|
Id: "Val",
|
|
NTType: 4,
|
|
Index: 7,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewRuneVal(X[0].(*token.Token))
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Val : int << ast.NewIntVal(X[0].(*token.Token)) >>`,
|
|
Id: "Val",
|
|
NTType: 4,
|
|
Index: 8,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewIntVal(X[0].(*token.Token))
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Val : float << ast.NewFloatVal(X[0].(*token.Token)) >>`,
|
|
Id: "Val",
|
|
NTType: 4,
|
|
Index: 9,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewFloatVal(X[0].(*token.Token))
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Val : imaginary << ast.NewComplexVal(X[0].(*token.Token)) >>`,
|
|
Id: "Val",
|
|
NTType: 4,
|
|
Index: 10,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewComplexVal(X[0].(*token.Token))
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Val : name << ast.NewNameVal(X[0].(*token.Token)) >>`,
|
|
Id: "Val",
|
|
NTType: 4,
|
|
Index: 11,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewNameVal(X[0].(*token.Token))
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Val : Expr << ast.NewExprVal(X[0]) >>`,
|
|
Id: "Val",
|
|
NTType: 4,
|
|
Index: 12,
|
|
NumSymbols: 1,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewExprVal(X[0])
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Expr : "(" name Val Val ")" << ast.NewExpr(X[1].(*token.Token), X[2], X[3]) >>`,
|
|
Id: "Expr",
|
|
NTType: 5,
|
|
Index: 13,
|
|
NumSymbols: 5,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewExpr(X[1].(*token.Token), X[2], X[3])
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Expr : "(" name Val ")" << ast.NewExpr(X[1].(*token.Token), X[2], nil) >>`,
|
|
Id: "Expr",
|
|
NTType: 5,
|
|
Index: 14,
|
|
NumSymbols: 4,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewExpr(X[1].(*token.Token), X[2], nil)
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Expr : "(" name ")" << ast.NewExpr(X[1].(*token.Token), nil, nil) >>`,
|
|
Id: "Expr",
|
|
NTType: 5,
|
|
Index: 15,
|
|
NumSymbols: 3,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.NewExpr(X[1].(*token.Token), nil, nil)
|
|
},
|
|
},
|
|
ProdTabEntry{
|
|
String: `Expr : "(" "." ValList ")" << ast.ListExpr(X[2]) >>`,
|
|
Id: "Expr",
|
|
NTType: 5,
|
|
Index: 16,
|
|
NumSymbols: 4,
|
|
ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) {
|
|
return ast.ListExpr(X[2])
|
|
},
|
|
},
|
|
}
|