From 6e9cdfcd1625057b80390bbb3737f2336f0f46f5 Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Sat, 9 Feb 2019 00:13:19 -0600 Subject: [PATCH 01/20] Add travis yml file to enable travis ci testing --- .travis.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..9cd53285 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: go +go: + - 1.11.x +os: + - linux + - osx +env: + - GO111MODULE=on +script: + - go build + - go test ./... From 79182e6490abdbdc277381d813ceb633fd0070a9 Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Mon, 11 Feb 2019 10:49:07 -0600 Subject: [PATCH 02/20] support array mapping --- data/mapper/array.go | 266 +++++++++++++++++++++++++++++++++++++++++++ data/mapper/expr.go | 36 +++--- data/path/path.go | 11 ++ 3 files changed, 300 insertions(+), 13 deletions(-) create mode 100644 data/mapper/array.go diff --git a/data/mapper/array.go b/data/mapper/array.go new file mode 100644 index 00000000..9aca4780 --- /dev/null +++ b/data/mapper/array.go @@ -0,0 +1,266 @@ +package mapper + +import ( + "encoding/json" + "fmt" + "github.com/project-flogo/core/data" + "github.com/project-flogo/core/data/coerce" + "github.com/project-flogo/core/data/expression" + "github.com/project-flogo/core/support/log" + "runtime/debug" + "strings" +) + +const ( + PRIMITIVE = "primitive" + FOREACH = "foreach" + NEWARRAY = "NEWARRAY" +) + +type ArrayMapperFactory struct { + exprFactory expression.Factory +} + +type ArrayMapping struct { + From interface{} `json:"from"` + To string `json:"to"` + Type string `json:"type"` + Fields []*ArrayMapping `json:"fields,omitempty"` +} + +func ParseArrayMapping(arrayDatadata interface{}) (*ArrayMapping, error) { + amapping := &ArrayMapping{} + switch t := arrayDatadata.(type) { + case string: + err := json.Unmarshal([]byte(t), amapping) + if err != nil { + return nil, err + } + case interface{}: + s, err := coerce.ToString(t) + if err != nil { + return nil, fmt.Errorf("Convert array mapping value to string error, due to [%s]", err.Error()) + } + err = json.Unmarshal([]byte(s), amapping) + if err != nil { + return nil, err + } + } + return amapping, nil +} + +func IsArrayMapping(value interface{}) bool { + a, err := ParseArrayMapping(value) + if err != nil { + return false + } + + return a.Validate() == nil +} + +func (a *ArrayMapping) Validate() error { + //Validate root from/to field + if a.From == nil { + return fmt.Errorf("The array mapping validation failed for the mapping [%s]. Ensure valid array is mapped in the mapper. ", a.From) + } + + if a.To == "" || len(a.To) <= 0 { + return fmt.Errorf("The array mapping validation failed for the mapping [%s]. Ensure valid array is mapped in the mapper. ", a.To) + } + + if a.Type == FOREACH { + //Validate root from/to field + if a.From == NEWARRAY { + //Make sure no array ref fields exist + for _, field := range a.Fields { + if field.Type == FOREACH { + return field.Validate() + } + stringVal, ok := field.From.(string) + if ok && isArrayMapping(stringVal) { + return fmt.Errorf("The array mapping validation failed, invalid new array mapping [%s]", stringVal) + } + + } + } else { + for _, field := range a.Fields { + if field.Type == FOREACH { + return field.Validate() + } + } + } + } + + return nil +} + +func (am *ArrayMapperFactory) NewArrayExpr(value interface{}) (expression.Expr, error) { + aMapping, err := ParseArrayMapping(value) + if err != nil { + return nil, fmt.Errorf("parsing array mapping failed %s", err) + } + return &ArrayExpr{arrayMappings: aMapping, exprFactory: am.exprFactory}, nil +} + +func isArrayMapping(ref string) bool { + if ref != "" { + return strings.HasPrefix(ref, "$.") || strings.HasPrefix(ref, "$$") + } + return false +} + +type ArrayExpr struct { + arrayMappings *ArrayMapping + exprFactory expression.Factory +} + +func (am *ArrayExpr) Eval(inputScope data.Scope) (interface{}, error) { + defer func() { + if r := recover(); r != nil { + log.RootLogger().Error("%+v", r) + log.RootLogger().Debugf("StackTrace: %s", debug.Stack()) + } + }() + + arrayValue, err := am.arrayMappings.Run(am.exprFactory, inputScope) + if err != nil { + return nil, err + } + return arrayValue, nil +} + +func (a *ArrayMapping) Run(exprFactory expression.Factory, scope data.Scope) ([]interface{}, error) { + //First level must be foreach + if a.Type == FOREACH { + //First Level + var fromValue interface{} + var err error + + stringVal, ok := a.From.(string) + if !ok { + return nil, fmt.Errorf("Invalid mapping root from %s", a.From) + } + + if strings.EqualFold(stringVal, NEWARRAY) { + //log.Debugf("Init a new array for field", a.To) + fromValue = make([]interface{}, 1) + } else { + fromValue, err = getExpressionValue(nil, stringVal, exprFactory, scope) + if err != nil { + return nil, err + } + //fromValue, err = expr.Eval(scope) + } + + //Loop array + fromArrayvalues, err := coerce.ToArray(fromValue) + if err != nil { + return nil, fmt.Errorf("Failed to get array value from [%s], due to error- [%s] value not an array", a.From, a.From) + } + + targetArray := make([]interface{}, len(fromArrayvalues)) + for i, _ := range targetArray { + targetArray[i] = make(map[string]interface{}) + } + + //Check if fields is empty for primitive array mapping + if a.Fields == nil || len(a.Fields) <= 0 { + //Set value directlly to MapTo field + targetArray = fromArrayvalues + return targetArray, nil + } + + for i, arrayV := range fromArrayvalues { + err := a.Iterator(arrayV, targetArray[i].(map[string]interface{}), a.Fields, exprFactory, scope) + if err != nil { + log.Error(err) + return nil, err + } + } + return targetArray, nil + } + return nil, fmt.Errorf("array mapping root must be foreach") + +} + +func (a *ArrayMapping) Iterator(fromValue interface{}, targetValues map[string]interface{}, fields []*ArrayMapping, exprF expression.Factory, scope data.Scope) error { + for _, arrayField := range fields { + maptoKey := arrayField.To + if strings.HasPrefix(arrayField.To, "$.") || strings.HasPrefix(arrayField.To, "$$") { + maptoKey = arrayField.To[2:] + } + + switch arrayField.Type { + case FOREACH: + var fromArrayvalues []interface{} + if strings.EqualFold(arrayField.From.(string), NEWARRAY) { + //log.Debugf("Init a new array for field", arrayField.To) + fromArrayvalues = make([]interface{}, 1) + } else { + fValue, err := getExpressionValue(fromValue, arrayField.From, exprF, scope) + if err != nil { + return err + } + var ok bool + fromArrayvalues, ok = fValue.([]interface{}) + if !ok { + return fmt.Errorf("Failed to get array value from [%s], due to error- value not an array", fValue) + } + } + + objArray := make([]interface{}, len(fromArrayvalues)) + for i, _ := range objArray { + objArray[i] = make(map[string]interface{}) + } + + targetValues[maptoKey] = objArray + + //Check if fields is empty for primitive array mapping + if arrayField.Fields == nil || len(arrayField.Fields) <= 0 { + objArray = fromArrayvalues + continue + } + + for i, arrayV := range fromArrayvalues { + err := arrayField.Iterator(arrayV, objArray[i].(map[string]interface{}), arrayField.Fields, exprF, scope) + if err != nil { + log.Error(err) + return err + } + } + default: + value, err := getExpressionValue(fromValue, arrayField.From, exprF, scope) + if err != nil { + return err + } + targetValues[maptoKey] = value + } + } + return nil +} + +func getExpressionValue(fromValue, fromPath interface{}, exprF expression.Factory, scope data.Scope) (interface{}, error) { + var finalExpr expression.Expr + if isExpr(fromPath) { + var err error + finalExpr, err = exprF.NewExpr(fromPath.(string)[1:]) + if err != nil { + return nil, err + } + } else { + finalExpr = expression.NewLiteralExpr(fromPath) + } + //Add current from value to scope + if fromValue != nil { + scope = data.NewSimpleScope(fromValue.(map[string]interface{}), scope) + + } + return finalExpr.Eval(scope) +} + +func isExpr(value interface{}) bool { + if strVal, ok := value.(string); ok && len(strVal) > 0 && (strVal[0] == '=' || strVal[0] == '$') { + return true + } + return false +} diff --git a/data/mapper/expr.go b/data/mapper/expr.go index 7d622597..d055896a 100644 --- a/data/mapper/expr.go +++ b/data/mapper/expr.go @@ -7,12 +7,14 @@ import ( ) type ExprMapperFactory struct { - exprFactory expression.Factory + exprFactory expression.Factory + arrayFactory ArrayMapperFactory } func NewFactory(resolver resolve.CompositeResolver) Factory { exprFactory := expression.NewFactory(resolver) - return &ExprMapperFactory{exprFactory: exprFactory} + arrayFactory := ArrayMapperFactory{exprFactory} + return &ExprMapperFactory{exprFactory: exprFactory, arrayFactory: arrayFactory} } func (mf *ExprMapperFactory) NewMapper(mappings map[string]interface{}) (Mapper, error) { @@ -21,20 +23,29 @@ func (mf *ExprMapperFactory) NewMapper(mappings map[string]interface{}) (Mapper, return nil, nil } - exprMappings := make(map[string]expression.Expr, len(mappings)) - + exprMappings := make(map[string]expression.Expr) for key, value := range mappings { - - if strVal, ok := value.(string); ok && len(strVal) > 0 && strVal[0] == '=' { - expr, err := mf.exprFactory.NewExpr(strVal[1:]) - if err != nil { - return nil, err + if value != nil { + if strVal, ok := value.(string); ok && len(strVal) > 0 && strVal[0] == '=' { + expr, err := mf.exprFactory.NewExpr(strVal[1:]) + if err != nil { + return nil, err + } + exprMappings[key] = expr + } else if IsArrayMapping(value) { + arrayExpr, err := mf.arrayFactory.NewArrayExpr(value) + if err != nil { + return nil, err + } + exprMappings[key] = arrayExpr + } else { + exprMappings[key] = expression.NewLiteralExpr(value) } - exprMappings[key] = expr - } else { - exprMappings[key] = expression.NewLiteralExpr(value) } } + if len(exprMappings) <= 0 { + return nil, nil + } return &ExprMapper{mappings: exprMappings}, nil } @@ -44,7 +55,6 @@ type ExprMapper struct { } func (m *ExprMapper) Apply(inputScope data.Scope) (map[string]interface{}, error) { - output := make(map[string]interface{}, len(m.mappings)) for key, expr := range m.mappings { val, err := expr.Eval(inputScope) diff --git a/data/path/path.go b/data/path/path.go index 4b2ff67b..47af1ea5 100644 --- a/data/path/path.go +++ b/data/path/path.go @@ -1,6 +1,7 @@ package path import ( + "encoding/json" "errors" "fmt" "reflect" @@ -23,6 +24,16 @@ func GetValue(value interface{}, path string) (interface{}, error) { var err error var newPath string + //To interface if it is an string + if val, ok := value.(string); ok { + var in interface{} + err = json.Unmarshal([]byte(val), &in) + if err != nil { + return nil, err + } + value = in + } + if strings.HasPrefix(path, ".") { if objVal, ok := value.(map[string]interface{}); ok { newVal, newPath, err = getSetObjValue(objVal, path, nil, false) From 177b8f306ec3e2a546de693f3661a42362f2e0a8 Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Mon, 11 Feb 2019 11:29:58 -0600 Subject: [PATCH 03/20] Get current data scope using $.. remove $$ --- data/mapper/array.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mapper/array.go b/data/mapper/array.go index 9aca4780..5a990a52 100644 --- a/data/mapper/array.go +++ b/data/mapper/array.go @@ -104,7 +104,7 @@ func (am *ArrayMapperFactory) NewArrayExpr(value interface{}) (expression.Expr, func isArrayMapping(ref string) bool { if ref != "" { - return strings.HasPrefix(ref, "$.") || strings.HasPrefix(ref, "$$") + return strings.HasPrefix(ref, "$.") } return false } From 0bc7552c506c78707798cb07ee923b4c556f214d Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Mon, 11 Feb 2019 11:45:53 -0600 Subject: [PATCH 04/20] Remove unused var --- data/mapper/array.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/data/mapper/array.go b/data/mapper/array.go index 5a990a52..952b5dcb 100644 --- a/data/mapper/array.go +++ b/data/mapper/array.go @@ -12,9 +12,8 @@ import ( ) const ( - PRIMITIVE = "primitive" - FOREACH = "foreach" - NEWARRAY = "NEWARRAY" + FOREACH = "foreach" + NEWARRAY = "NEWARRAY" ) type ArrayMapperFactory struct { From 64eea7dc0b8ab40f7a0dd35fa17c0ff669cdb760 Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Mon, 11 Feb 2019 21:40:47 -0600 Subject: [PATCH 05/20] Add test cases for array mapping --- data/mapper/array.go | 10 +- data/mapper/array_test.go | 246 ++++++++++++++++++++++++++++++++++++++ data/mapper/expr.go | 6 +- 3 files changed, 258 insertions(+), 4 deletions(-) create mode 100644 data/mapper/array_test.go diff --git a/data/mapper/array.go b/data/mapper/array.go index 952b5dcb..232d04f3 100644 --- a/data/mapper/array.go +++ b/data/mapper/array.go @@ -20,6 +20,10 @@ type ArrayMapperFactory struct { exprFactory expression.Factory } +func NewArrayMapperFactory(exprFactory expression.Factory) expression.Factory { + return &ArrayMapperFactory{exprFactory: exprFactory} +} + type ArrayMapping struct { From interface{} `json:"from"` To string `json:"to"` @@ -93,7 +97,7 @@ func (a *ArrayMapping) Validate() error { return nil } -func (am *ArrayMapperFactory) NewArrayExpr(value interface{}) (expression.Expr, error) { +func (am *ArrayMapperFactory) NewAnyExpr(value interface{}) (expression.Expr, error) { aMapping, err := ParseArrayMapping(value) if err != nil { return nil, fmt.Errorf("parsing array mapping failed %s", err) @@ -101,6 +105,10 @@ func (am *ArrayMapperFactory) NewArrayExpr(value interface{}) (expression.Expr, return &ArrayExpr{arrayMappings: aMapping, exprFactory: am.exprFactory}, nil } +func (am *ArrayMapperFactory) NewExpr(value string) (expression.Expr, error) { + return am.NewAnyExpr(value) +} + func isArrayMapping(ref string) bool { if ref != "" { return strings.HasPrefix(ref, "$.") diff --git a/data/mapper/array_test.go b/data/mapper/array_test.go new file mode 100644 index 00000000..6c8d3119 --- /dev/null +++ b/data/mapper/array_test.go @@ -0,0 +1,246 @@ +package mapper + +import ( + "github.com/project-flogo/core/data" + "github.com/project-flogo/core/data/resolve" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestArrayMapping(t *testing.T) { + mappingValue := `{ + "fields": [ + { + "from": "=$.street", + "to": "street", + "type": "primitive" + }, + { + "from": "=$.zipcode", + "to": "zipcode", + "type": "primitive" + }, + { + "from": "=$.state", + "to": "state", + "type": "primitive" + } + ], + "from": "=$.field.addresses", + "to": "addresses", + "type": "foreach" +}` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx" + } + ] +}` + + mappings := map[string]interface{}{"addresses": mappingValue} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + attrs := map[string]interface{}{"field": arrayData} + scope := data.NewSimpleScope(attrs, nil) + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["addresses"] + + assert.Equal(t, "street", arr.([]interface{})[0].(map[string]interface{})["street"]) + assert.Equal(t, float64(77479), arr.([]interface{})[0].(map[string]interface{})["zipcode"]) + assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) + +} + +//8. array mappping with static function and leaf field +func TestArrayMappingWithFunction(t *testing.T) { + mappingValue := `{ + "fields": [ + { + "from": "=tstring.concat(\"this stree name: \", $.street)", + "to": "street", + "type": "primitive" + }, + { + "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", + "to": "zipcode", + "type": "primitive" + }, + { + "from": "=$.state", + "to": "state", + "type": "primitive" + } + ], + "from": "=$.field.addresses", + "to": "addresses", + "type": "foreach" +}` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx" + } + ] +}` + + mappings := map[string]interface{}{"addresses": mappingValue} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + attrs := map[string]interface{}{"field": arrayData} + scope := data.NewSimpleScope(attrs, nil) + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["addresses"] + assert.Equal(t, "this stree name: street", arr.([]interface{})[0].(map[string]interface{})["street"]) + assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) + assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) + +} + +//9. array mapping with other activity output +func TestArrayMappingWithUpstreamingOutput(t *testing.T) { + mappingValue := `{ + "fields": [ + { + "from": "=tstring.concat(\"this stree name: \", $.field.person)", + "to": "street", + "type": "primitive" + }, + { + "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", + "to": "zipcode", + "type": "primitive" + }, + { + "from": "=$.state", + "to": "state", + "type": "primitive" + } + ], + "from": "=$.field.addresses", + "to": "addresses", + "type": "foreach" +}` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx" + } + ] +}` + mappings := map[string]interface{}{"addresses": mappingValue} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + attrs := map[string]interface{}{"field": arrayData} + scope := data.NewSimpleScope(attrs, nil) + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["addresses"] + assert.Equal(t, "this stree name: name", arr.([]interface{})[0].(map[string]interface{})["street"]) + assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) + assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) + +} + +//9. array mapping with other activity output +func TestArrayMappingWithNest(t *testing.T) { + mappingValue := `{ + "fields": [ + { + "from": "=tstring.concat(\"this stree name: \", $.field.person)", + "to": "street", + "type": "primitive" + }, + { + "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", + "to": "zipcode", + "type": "primitive" + }, + { + "from": "=$.state", + "to": "state", + "type": "primitive" + }, + { + "from": "=$.array", + "to": "array", + "type": "foreach", + "fields":[ + { + "from": "=$.field1", + "to": "tofield1", + "type": "assign" + }, + { + "from": "=$.field2", + "to": "tofield2", + "type": "assign" + }, + { + "from": "wangzai", + "to": "tofield3", + "type": "assign" + } + ] + + } + ], + "from": "=$.field.addresses", + "to": "addresses", + "type": "foreach" +}` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx", + "array":[ + { + "field1":"field1value", + "field2":"field2value", + "field3":"field3value" + } + ] + } + ] +}` + + mappings := map[string]interface{}{"addresses": mappingValue} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + attrs := map[string]interface{}{"field": arrayData} + scope := data.NewSimpleScope(attrs, nil) + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["addresses"] + assert.Equal(t, "this stree name: name", arr.([]interface{})[0].(map[string]interface{})["street"]) + assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) + assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) + + assert.Equal(t, "field1value", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield1"]) + assert.Equal(t, "field2value", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield2"]) + assert.Equal(t, "wangzai", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield3"]) + +} diff --git a/data/mapper/expr.go b/data/mapper/expr.go index d055896a..d9eb8da3 100644 --- a/data/mapper/expr.go +++ b/data/mapper/expr.go @@ -8,12 +8,12 @@ import ( type ExprMapperFactory struct { exprFactory expression.Factory - arrayFactory ArrayMapperFactory + arrayFactory expression.Factory } func NewFactory(resolver resolve.CompositeResolver) Factory { exprFactory := expression.NewFactory(resolver) - arrayFactory := ArrayMapperFactory{exprFactory} + arrayFactory := NewArrayMapperFactory(exprFactory) return &ExprMapperFactory{exprFactory: exprFactory, arrayFactory: arrayFactory} } @@ -33,7 +33,7 @@ func (mf *ExprMapperFactory) NewMapper(mappings map[string]interface{}) (Mapper, } exprMappings[key] = expr } else if IsArrayMapping(value) { - arrayExpr, err := mf.arrayFactory.NewArrayExpr(value) + arrayExpr, err := mf.arrayFactory.(*ArrayMapperFactory).NewAnyExpr(value) if err != nil { return nil, err } From 862529eabadba82f9d26e1971cdc6771259bf8f5 Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Tue, 12 Feb 2019 15:25:31 -0600 Subject: [PATCH 06/20] Support nested ternary expression --- data/expression/script/gocc/ast/expr.go | 9 + data/expression/script/gocc/fs.bnf | 11 +- .../script/gocc/parser/actiontable.go | 11374 +++++++++------- .../script/gocc/parser/gototable.go | 4208 +++--- data/expression/script/gocc/parser/parser.go | 6 +- .../script/gocc/parser/productionstable.go | 140 +- 6 files changed, 9006 insertions(+), 6742 deletions(-) diff --git a/data/expression/script/gocc/ast/expr.go b/data/expression/script/gocc/ast/expr.go index 3bd79dfe..5c0ba59a 100644 --- a/data/expression/script/gocc/ast/expr.go +++ b/data/expression/script/gocc/ast/expr.go @@ -51,6 +51,15 @@ func NewTernaryExpr(ifNode, thenNode, elseNode interface{}) (Expr, error) { return &exprTernary{ifExpr: ifExpr, thenExpr: thenExpr, elseExpr: elseExpr}, nil } +func NewTernaryArgument(first interface{}) (Expr, error) { + switch t := first.(type) { + case Expr: + return t, nil + default: + return nil, fmt.Errorf("unsupported ternary type %+v", first) + } +} + type exprTernary struct { ifExpr, thenExpr, elseExpr Expr } diff --git a/data/expression/script/gocc/fs.bnf b/data/expression/script/gocc/fs.bnf index 561e6737..20747660 100644 --- a/data/expression/script/gocc/fs.bnf +++ b/data/expression/script/gocc/fs.bnf @@ -104,11 +104,16 @@ PrimaryExpr ; TernaryExpr - : Expr "?" Expr ":" Expr << ast.NewTernaryExpr($0, $2, $4) >> + : TernaryArgument "?" TernaryArgument ":" TernaryArgument <> ; -BoolLit - : "true" +TernaryArgument + : Expr + | TernaryExpr + | "(" TernaryExpr ")" <> + ; + +BoolLit : "true" | "false" ; diff --git a/data/expression/script/gocc/parser/actiontable.go b/data/expression/script/gocc/parser/actiontable.go index 9b7db320..d1bdb685 100644 --- a/data/expression/script/gocc/parser/actiontable.go +++ b/data/expression/script/gocc/parser/actiontable.go @@ -36,14 +36,14 @@ var actionTab = actionTable{ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -92,79 +92,79 @@ var actionTab = actionTable{ actionRow{ // S2 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(1), /* $, reduce: Fscript */ - shift(27), /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - nil, /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - shift(28), /* ? */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + reduce(1), /* $, reduce: Fscript */ + shift(28), /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(30), /* ?, reduce: TernaryArgument */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, actionRow{ // S3 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(2), /* $, reduce: Fscript */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - nil, /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - nil, /* ? */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + reduce(2), /* $, reduce: Fscript */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(31), /* ?, reduce: TernaryArgument */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, actionRow{ // S4 @@ -343,19 +343,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -460,19 +460,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -538,7 +538,7 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - shift(43), /* ( */ + shift(44), /* ( */ nil, /* ) */ nil, /* functionName */ nil, /* ? */ @@ -571,25 +571,25 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(49), /* - */ + shift(51), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(57), /* ( */ nil, /* ) */ - shift(56), /* functionName */ + shift(58), /* functionName */ nil, /* ? */ nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -616,7 +616,7 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - shift(68), /* ( */ + shift(71), /* ( */ nil, /* ) */ nil, /* functionName */ nil, /* ? */ @@ -677,66 +677,66 @@ var actionTab = actionTable{ actionRow{ // S17 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(37), /* $, reduce: Literal */ - reduce(37), /* ||, reduce: Literal */ - reduce(37), /* &&, reduce: Literal */ - reduce(37), /* ==, reduce: Literal */ - reduce(37), /* !=, reduce: Literal */ - reduce(37), /* <, reduce: Literal */ - reduce(37), /* <=, reduce: Literal */ - reduce(37), /* >, reduce: Literal */ - reduce(37), /* >=, reduce: Literal */ - reduce(37), /* +, reduce: Literal */ - reduce(37), /* -, reduce: Literal */ - reduce(37), /* *, reduce: Literal */ - reduce(37), /* /, reduce: Literal */ - reduce(37), /* %, reduce: Literal */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - reduce(37), /* ?, reduce: Literal */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + shift(72), /* ? */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, actionRow{ // S18 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(30), /* $, reduce: BoolLit */ - reduce(30), /* ||, reduce: BoolLit */ - reduce(30), /* &&, reduce: BoolLit */ - reduce(30), /* ==, reduce: BoolLit */ - reduce(30), /* !=, reduce: BoolLit */ - reduce(30), /* <, reduce: BoolLit */ - reduce(30), /* <=, reduce: BoolLit */ - reduce(30), /* >, reduce: BoolLit */ - reduce(30), /* >=, reduce: BoolLit */ - reduce(30), /* +, reduce: BoolLit */ - reduce(30), /* -, reduce: BoolLit */ - reduce(30), /* *, reduce: BoolLit */ - reduce(30), /* /, reduce: BoolLit */ - reduce(30), /* %, reduce: BoolLit */ + reduce(40), /* $, reduce: Literal */ + reduce(40), /* ||, reduce: Literal */ + reduce(40), /* &&, reduce: Literal */ + reduce(40), /* ==, reduce: Literal */ + reduce(40), /* !=, reduce: Literal */ + reduce(40), /* <, reduce: Literal */ + reduce(40), /* <=, reduce: Literal */ + reduce(40), /* >, reduce: Literal */ + reduce(40), /* >=, reduce: Literal */ + reduce(40), /* +, reduce: Literal */ + reduce(40), /* -, reduce: Literal */ + reduce(40), /* *, reduce: Literal */ + reduce(40), /* /, reduce: Literal */ + reduce(40), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(30), /* ?, reduce: BoolLit */ + reduce(40), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -756,26 +756,26 @@ var actionTab = actionTable{ canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(31), /* $, reduce: BoolLit */ - reduce(31), /* ||, reduce: BoolLit */ - reduce(31), /* &&, reduce: BoolLit */ - reduce(31), /* ==, reduce: BoolLit */ - reduce(31), /* !=, reduce: BoolLit */ - reduce(31), /* <, reduce: BoolLit */ - reduce(31), /* <=, reduce: BoolLit */ - reduce(31), /* >, reduce: BoolLit */ - reduce(31), /* >=, reduce: BoolLit */ - reduce(31), /* +, reduce: BoolLit */ - reduce(31), /* -, reduce: BoolLit */ - reduce(31), /* *, reduce: BoolLit */ - reduce(31), /* /, reduce: BoolLit */ - reduce(31), /* %, reduce: BoolLit */ + reduce(33), /* $, reduce: BoolLit */ + reduce(33), /* ||, reduce: BoolLit */ + reduce(33), /* &&, reduce: BoolLit */ + reduce(33), /* ==, reduce: BoolLit */ + reduce(33), /* !=, reduce: BoolLit */ + reduce(33), /* <, reduce: BoolLit */ + reduce(33), /* <=, reduce: BoolLit */ + reduce(33), /* >, reduce: BoolLit */ + reduce(33), /* >=, reduce: BoolLit */ + reduce(33), /* +, reduce: BoolLit */ + reduce(33), /* -, reduce: BoolLit */ + reduce(33), /* *, reduce: BoolLit */ + reduce(33), /* /, reduce: BoolLit */ + reduce(33), /* %, reduce: BoolLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(31), /* ?, reduce: BoolLit */ + reduce(33), /* ?, reduce: BoolLit */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -795,26 +795,26 @@ var actionTab = actionTable{ canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(38), /* $, reduce: Literal */ - reduce(38), /* ||, reduce: Literal */ - reduce(38), /* &&, reduce: Literal */ - reduce(38), /* ==, reduce: Literal */ - reduce(38), /* !=, reduce: Literal */ - reduce(38), /* <, reduce: Literal */ - reduce(38), /* <=, reduce: Literal */ - reduce(38), /* >, reduce: Literal */ - reduce(38), /* >=, reduce: Literal */ - reduce(38), /* +, reduce: Literal */ - reduce(38), /* -, reduce: Literal */ - reduce(38), /* *, reduce: Literal */ - reduce(38), /* /, reduce: Literal */ - reduce(38), /* %, reduce: Literal */ + reduce(34), /* $, reduce: BoolLit */ + reduce(34), /* ||, reduce: BoolLit */ + reduce(34), /* &&, reduce: BoolLit */ + reduce(34), /* ==, reduce: BoolLit */ + reduce(34), /* !=, reduce: BoolLit */ + reduce(34), /* <, reduce: BoolLit */ + reduce(34), /* <=, reduce: BoolLit */ + reduce(34), /* >, reduce: BoolLit */ + reduce(34), /* >=, reduce: BoolLit */ + reduce(34), /* +, reduce: BoolLit */ + reduce(34), /* -, reduce: BoolLit */ + reduce(34), /* *, reduce: BoolLit */ + reduce(34), /* /, reduce: BoolLit */ + reduce(34), /* %, reduce: BoolLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(38), /* ?, reduce: Literal */ + reduce(34), /* ?, reduce: BoolLit */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -834,26 +834,26 @@ var actionTab = actionTable{ canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(32), /* $, reduce: NilLit */ - reduce(32), /* ||, reduce: NilLit */ - reduce(32), /* &&, reduce: NilLit */ - reduce(32), /* ==, reduce: NilLit */ - reduce(32), /* !=, reduce: NilLit */ - reduce(32), /* <, reduce: NilLit */ - reduce(32), /* <=, reduce: NilLit */ - reduce(32), /* >, reduce: NilLit */ - reduce(32), /* >=, reduce: NilLit */ - reduce(32), /* +, reduce: NilLit */ - reduce(32), /* -, reduce: NilLit */ - reduce(32), /* *, reduce: NilLit */ - reduce(32), /* /, reduce: NilLit */ - reduce(32), /* %, reduce: NilLit */ + reduce(41), /* $, reduce: Literal */ + reduce(41), /* ||, reduce: Literal */ + reduce(41), /* &&, reduce: Literal */ + reduce(41), /* ==, reduce: Literal */ + reduce(41), /* !=, reduce: Literal */ + reduce(41), /* <, reduce: Literal */ + reduce(41), /* <=, reduce: Literal */ + reduce(41), /* >, reduce: Literal */ + reduce(41), /* >=, reduce: Literal */ + reduce(41), /* +, reduce: Literal */ + reduce(41), /* -, reduce: Literal */ + reduce(41), /* *, reduce: Literal */ + reduce(41), /* /, reduce: Literal */ + reduce(41), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(32), /* ?, reduce: NilLit */ + reduce(41), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -873,26 +873,26 @@ var actionTab = actionTable{ canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(33), /* $, reduce: NilLit */ - reduce(33), /* ||, reduce: NilLit */ - reduce(33), /* &&, reduce: NilLit */ - reduce(33), /* ==, reduce: NilLit */ - reduce(33), /* !=, reduce: NilLit */ - reduce(33), /* <, reduce: NilLit */ - reduce(33), /* <=, reduce: NilLit */ - reduce(33), /* >, reduce: NilLit */ - reduce(33), /* >=, reduce: NilLit */ - reduce(33), /* +, reduce: NilLit */ - reduce(33), /* -, reduce: NilLit */ - reduce(33), /* *, reduce: NilLit */ - reduce(33), /* /, reduce: NilLit */ - reduce(33), /* %, reduce: NilLit */ + reduce(35), /* $, reduce: NilLit */ + reduce(35), /* ||, reduce: NilLit */ + reduce(35), /* &&, reduce: NilLit */ + reduce(35), /* ==, reduce: NilLit */ + reduce(35), /* !=, reduce: NilLit */ + reduce(35), /* <, reduce: NilLit */ + reduce(35), /* <=, reduce: NilLit */ + reduce(35), /* >, reduce: NilLit */ + reduce(35), /* >=, reduce: NilLit */ + reduce(35), /* +, reduce: NilLit */ + reduce(35), /* -, reduce: NilLit */ + reduce(35), /* *, reduce: NilLit */ + reduce(35), /* /, reduce: NilLit */ + reduce(35), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(33), /* ?, reduce: NilLit */ + reduce(35), /* ?, reduce: NilLit */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -912,26 +912,26 @@ var actionTab = actionTable{ canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(34), /* $, reduce: Literal */ - reduce(34), /* ||, reduce: Literal */ - reduce(34), /* &&, reduce: Literal */ - reduce(34), /* ==, reduce: Literal */ - reduce(34), /* !=, reduce: Literal */ - reduce(34), /* <, reduce: Literal */ - reduce(34), /* <=, reduce: Literal */ - reduce(34), /* >, reduce: Literal */ - reduce(34), /* >=, reduce: Literal */ - reduce(34), /* +, reduce: Literal */ - reduce(34), /* -, reduce: Literal */ - reduce(34), /* *, reduce: Literal */ - reduce(34), /* /, reduce: Literal */ - reduce(34), /* %, reduce: Literal */ + reduce(36), /* $, reduce: NilLit */ + reduce(36), /* ||, reduce: NilLit */ + reduce(36), /* &&, reduce: NilLit */ + reduce(36), /* ==, reduce: NilLit */ + reduce(36), /* !=, reduce: NilLit */ + reduce(36), /* <, reduce: NilLit */ + reduce(36), /* <=, reduce: NilLit */ + reduce(36), /* >, reduce: NilLit */ + reduce(36), /* >=, reduce: NilLit */ + reduce(36), /* +, reduce: NilLit */ + reduce(36), /* -, reduce: NilLit */ + reduce(36), /* *, reduce: NilLit */ + reduce(36), /* /, reduce: NilLit */ + reduce(36), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(34), /* ?, reduce: Literal */ + reduce(36), /* ?, reduce: NilLit */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -951,26 +951,26 @@ var actionTab = actionTable{ canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(35), /* $, reduce: Literal */ - reduce(35), /* ||, reduce: Literal */ - reduce(35), /* &&, reduce: Literal */ - reduce(35), /* ==, reduce: Literal */ - reduce(35), /* !=, reduce: Literal */ - reduce(35), /* <, reduce: Literal */ - reduce(35), /* <=, reduce: Literal */ - reduce(35), /* >, reduce: Literal */ - reduce(35), /* >=, reduce: Literal */ - reduce(35), /* +, reduce: Literal */ - reduce(35), /* -, reduce: Literal */ - reduce(35), /* *, reduce: Literal */ - reduce(35), /* /, reduce: Literal */ - reduce(35), /* %, reduce: Literal */ + reduce(37), /* $, reduce: Literal */ + reduce(37), /* ||, reduce: Literal */ + reduce(37), /* &&, reduce: Literal */ + reduce(37), /* ==, reduce: Literal */ + reduce(37), /* !=, reduce: Literal */ + reduce(37), /* <, reduce: Literal */ + reduce(37), /* <=, reduce: Literal */ + reduce(37), /* >, reduce: Literal */ + reduce(37), /* >=, reduce: Literal */ + reduce(37), /* +, reduce: Literal */ + reduce(37), /* -, reduce: Literal */ + reduce(37), /* *, reduce: Literal */ + reduce(37), /* /, reduce: Literal */ + reduce(37), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(35), /* ?, reduce: Literal */ + reduce(37), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -990,26 +990,26 @@ var actionTab = actionTable{ canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(36), /* $, reduce: Literal */ - reduce(36), /* ||, reduce: Literal */ - reduce(36), /* &&, reduce: Literal */ - reduce(36), /* ==, reduce: Literal */ - reduce(36), /* !=, reduce: Literal */ - reduce(36), /* <, reduce: Literal */ - reduce(36), /* <=, reduce: Literal */ - reduce(36), /* >, reduce: Literal */ - reduce(36), /* >=, reduce: Literal */ - reduce(36), /* +, reduce: Literal */ - reduce(36), /* -, reduce: Literal */ - reduce(36), /* *, reduce: Literal */ - reduce(36), /* /, reduce: Literal */ - reduce(36), /* %, reduce: Literal */ + reduce(38), /* $, reduce: Literal */ + reduce(38), /* ||, reduce: Literal */ + reduce(38), /* &&, reduce: Literal */ + reduce(38), /* ==, reduce: Literal */ + reduce(38), /* !=, reduce: Literal */ + reduce(38), /* <, reduce: Literal */ + reduce(38), /* <=, reduce: Literal */ + reduce(38), /* >, reduce: Literal */ + reduce(38), /* >=, reduce: Literal */ + reduce(38), /* +, reduce: Literal */ + reduce(38), /* -, reduce: Literal */ + reduce(38), /* *, reduce: Literal */ + reduce(38), /* /, reduce: Literal */ + reduce(38), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(36), /* ?, reduce: Literal */ + reduce(38), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -1028,40 +1028,40 @@ var actionTab = actionTable{ actionRow{ // S26 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - nil, /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - nil, /* ? */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - shift(70), /* selector */ - shift(71), /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + reduce(39), /* $, reduce: Literal */ + reduce(39), /* ||, reduce: Literal */ + reduce(39), /* &&, reduce: Literal */ + reduce(39), /* ==, reduce: Literal */ + reduce(39), /* !=, reduce: Literal */ + reduce(39), /* <, reduce: Literal */ + reduce(39), /* <=, reduce: Literal */ + reduce(39), /* >, reduce: Literal */ + reduce(39), /* >=, reduce: Literal */ + reduce(39), /* +, reduce: Literal */ + reduce(39), /* -, reduce: Literal */ + reduce(39), /* *, reduce: Literal */ + reduce(39), /* /, reduce: Literal */ + reduce(39), /* %, reduce: Literal */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(39), /* ?, reduce: Literal */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, actionRow{ // S27 @@ -1078,27 +1078,27 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(8), /* - */ + nil, /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(11), /* ! */ - shift(13), /* ident */ - shift(14), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(15), /* functionName */ + nil, /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ - nil, /* selector */ - nil, /* index */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + shift(74), /* selector */ + shift(75), /* index */ nil, /* empty */ nil, /* , */ }, @@ -1117,25 +1117,25 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(78), /* - */ + shift(8), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ + shift(11), /* ! */ + shift(13), /* ident */ + shift(42), /* ( */ nil, /* ) */ - shift(85), /* functionName */ + shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1162,19 +1162,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1201,19 +1201,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1240,19 +1240,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1279,19 +1279,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1318,19 +1318,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1357,19 +1357,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1396,19 +1396,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1435,19 +1435,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1474,19 +1474,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1513,19 +1513,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1552,19 +1552,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1591,19 +1591,19 @@ var actionTab = actionTable{ nil, /* % */ shift(11), /* ! */ shift(13), /* ident */ - shift(14), /* ( */ + shift(42), /* ( */ nil, /* ) */ shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - shift(18), /* true */ - shift(19), /* false */ - shift(21), /* nil */ - shift(22), /* null */ - shift(23), /* intLit */ - shift(24), /* floatLit */ - shift(25), /* stringLit */ - shift(26), /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ @@ -1650,6 +1650,45 @@ var actionTab = actionTable{ }, }, actionRow{ // S42 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S43 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -1688,7 +1727,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S43 + actionRow{ // S44 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -1702,37 +1741,37 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S44 + actionRow{ // S45 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - shift(135), /* || */ + shift(139), /* || */ nil, /* && */ nil, /* == */ nil, /* != */ @@ -1748,9 +1787,9 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(136), /* ) */ + shift(140), /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(30), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -1766,13 +1805,52 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S45 + actionRow{ // S46 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + shift(141), /* ) */ + nil, /* functionName */ + reduce(31), /* ?, reduce: TernaryArgument */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S47 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(4), /* ||, reduce: Expr */ - shift(137), /* && */ + shift(142), /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -1789,7 +1867,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(4), /* ), reduce: Expr */ nil, /* functionName */ - nil, /* ? */ + reduce(4), /* ?, reduce: Expr */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -1805,19 +1883,19 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S46 + actionRow{ // S48 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(6), /* ||, reduce: Expr1 */ reduce(6), /* &&, reduce: Expr1 */ - shift(138), /* == */ - shift(139), /* != */ - shift(140), /* < */ - shift(141), /* <= */ - shift(142), /* > */ - shift(143), /* >= */ + shift(143), /* == */ + shift(144), /* != */ + shift(145), /* < */ + shift(146), /* <= */ + shift(147), /* > */ + shift(148), /* >= */ nil, /* + */ nil, /* - */ nil, /* * */ @@ -1828,7 +1906,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(6), /* ), reduce: Expr1 */ nil, /* functionName */ - nil, /* ? */ + reduce(6), /* ?, reduce: Expr1 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -1844,7 +1922,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S47 + actionRow{ // S49 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -1857,8 +1935,8 @@ var actionTab = actionTable{ reduce(13), /* <=, reduce: Expr2 */ reduce(13), /* >, reduce: Expr2 */ reduce(13), /* >=, reduce: Expr2 */ - shift(144), /* + */ - shift(145), /* - */ + shift(149), /* + */ + shift(150), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -1867,7 +1945,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(13), /* ), reduce: Expr2 */ nil, /* functionName */ - nil, /* ? */ + reduce(13), /* ?, reduce: Expr2 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -1883,7 +1961,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S48 + actionRow{ // S50 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -1898,15 +1976,15 @@ var actionTab = actionTable{ reduce(16), /* >=, reduce: Expr3 */ reduce(16), /* +, reduce: Expr3 */ reduce(16), /* -, reduce: Expr3 */ - shift(146), /* * */ - shift(147), /* / */ - shift(148), /* % */ + shift(151), /* * */ + shift(152), /* / */ + shift(153), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ reduce(16), /* ), reduce: Expr3 */ nil, /* functionName */ - nil, /* ? */ + reduce(16), /* ?, reduce: Expr3 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -1922,46 +2000,46 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S49 + actionRow{ // S51 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S50 + actionRow{ // S52 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -1984,7 +2062,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(20), /* ), reduce: Expr4 */ nil, /* functionName */ - nil, /* ? */ + reduce(20), /* ?, reduce: Expr4 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2000,7 +2078,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S51 + actionRow{ // S53 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -2023,7 +2101,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(21), /* ), reduce: Expr5 */ nil, /* functionName */ - nil, /* ? */ + reduce(21), /* ?, reduce: Expr5 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2039,57 +2117,57 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S52 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S53 + actionRow{ // S54 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(24), /* ||, reduce: Expr6 */ - reduce(24), /* &&, reduce: Expr6 */ - reduce(24), /* ==, reduce: Expr6 */ - reduce(24), /* !=, reduce: Expr6 */ - reduce(24), /* <, reduce: Expr6 */ - reduce(24), /* <=, reduce: Expr6 */ - reduce(24), /* >, reduce: Expr6 */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S55 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(24), /* ||, reduce: Expr6 */ + reduce(24), /* &&, reduce: Expr6 */ + reduce(24), /* ==, reduce: Expr6 */ + reduce(24), /* !=, reduce: Expr6 */ + reduce(24), /* <, reduce: Expr6 */ + reduce(24), /* <=, reduce: Expr6 */ + reduce(24), /* >, reduce: Expr6 */ reduce(24), /* >=, reduce: Expr6 */ reduce(24), /* +, reduce: Expr6 */ reduce(24), /* -, reduce: Expr6 */ @@ -2101,7 +2179,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(24), /* ), reduce: Expr6 */ nil, /* functionName */ - nil, /* ? */ + reduce(24), /* ?, reduce: Expr6 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2117,7 +2195,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S54 + actionRow{ // S56 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -2137,7 +2215,7 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - shift(151), /* ( */ + shift(157), /* ( */ nil, /* ) */ nil, /* functionName */ nil, /* ? */ @@ -2156,7 +2234,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S55 + actionRow{ // S57 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -2170,32 +2248,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(49), /* - */ + shift(51), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(57), /* ( */ nil, /* ) */ - shift(56), /* functionName */ + shift(58), /* functionName */ nil, /* ? */ nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S56 + actionRow{ // S58 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -2215,7 +2293,7 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - shift(153), /* ( */ + shift(159), /* ( */ nil, /* ) */ nil, /* functionName */ nil, /* ? */ @@ -2234,7 +2312,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S57 + actionRow{ // S59 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -2257,7 +2335,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(27), /* ), reduce: PrimaryExpr */ nil, /* functionName */ - nil, /* ? */ + reduce(27), /* ?, reduce: PrimaryExpr */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2273,30 +2351,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S58 + actionRow{ // S60 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(37), /* ||, reduce: Literal */ - reduce(37), /* &&, reduce: Literal */ - reduce(37), /* ==, reduce: Literal */ - reduce(37), /* !=, reduce: Literal */ - reduce(37), /* <, reduce: Literal */ - reduce(37), /* <=, reduce: Literal */ - reduce(37), /* >, reduce: Literal */ - reduce(37), /* >=, reduce: Literal */ - reduce(37), /* +, reduce: Literal */ - reduce(37), /* -, reduce: Literal */ - reduce(37), /* *, reduce: Literal */ - reduce(37), /* /, reduce: Literal */ - reduce(37), /* %, reduce: Literal */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(37), /* ), reduce: Literal */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ + shift(160), /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2312,30 +2390,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S59 + actionRow{ // S61 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(30), /* ||, reduce: BoolLit */ - reduce(30), /* &&, reduce: BoolLit */ - reduce(30), /* ==, reduce: BoolLit */ - reduce(30), /* !=, reduce: BoolLit */ - reduce(30), /* <, reduce: BoolLit */ - reduce(30), /* <=, reduce: BoolLit */ - reduce(30), /* >, reduce: BoolLit */ - reduce(30), /* >=, reduce: BoolLit */ - reduce(30), /* +, reduce: BoolLit */ - reduce(30), /* -, reduce: BoolLit */ - reduce(30), /* *, reduce: BoolLit */ - reduce(30), /* /, reduce: BoolLit */ - reduce(30), /* %, reduce: BoolLit */ + reduce(40), /* ||, reduce: Literal */ + reduce(40), /* &&, reduce: Literal */ + reduce(40), /* ==, reduce: Literal */ + reduce(40), /* !=, reduce: Literal */ + reduce(40), /* <, reduce: Literal */ + reduce(40), /* <=, reduce: Literal */ + reduce(40), /* >, reduce: Literal */ + reduce(40), /* >=, reduce: Literal */ + reduce(40), /* +, reduce: Literal */ + reduce(40), /* -, reduce: Literal */ + reduce(40), /* *, reduce: Literal */ + reduce(40), /* /, reduce: Literal */ + reduce(40), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(30), /* ), reduce: BoolLit */ + reduce(40), /* ), reduce: Literal */ nil, /* functionName */ - nil, /* ? */ + reduce(40), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2351,30 +2429,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S60 + actionRow{ // S62 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(31), /* ||, reduce: BoolLit */ - reduce(31), /* &&, reduce: BoolLit */ - reduce(31), /* ==, reduce: BoolLit */ - reduce(31), /* !=, reduce: BoolLit */ - reduce(31), /* <, reduce: BoolLit */ - reduce(31), /* <=, reduce: BoolLit */ - reduce(31), /* >, reduce: BoolLit */ - reduce(31), /* >=, reduce: BoolLit */ - reduce(31), /* +, reduce: BoolLit */ - reduce(31), /* -, reduce: BoolLit */ - reduce(31), /* *, reduce: BoolLit */ - reduce(31), /* /, reduce: BoolLit */ - reduce(31), /* %, reduce: BoolLit */ + reduce(33), /* ||, reduce: BoolLit */ + reduce(33), /* &&, reduce: BoolLit */ + reduce(33), /* ==, reduce: BoolLit */ + reduce(33), /* !=, reduce: BoolLit */ + reduce(33), /* <, reduce: BoolLit */ + reduce(33), /* <=, reduce: BoolLit */ + reduce(33), /* >, reduce: BoolLit */ + reduce(33), /* >=, reduce: BoolLit */ + reduce(33), /* +, reduce: BoolLit */ + reduce(33), /* -, reduce: BoolLit */ + reduce(33), /* *, reduce: BoolLit */ + reduce(33), /* /, reduce: BoolLit */ + reduce(33), /* %, reduce: BoolLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(31), /* ), reduce: BoolLit */ + reduce(33), /* ), reduce: BoolLit */ nil, /* functionName */ - nil, /* ? */ + reduce(33), /* ?, reduce: BoolLit */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2390,30 +2468,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S61 + actionRow{ // S63 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(38), /* ||, reduce: Literal */ - reduce(38), /* &&, reduce: Literal */ - reduce(38), /* ==, reduce: Literal */ - reduce(38), /* !=, reduce: Literal */ - reduce(38), /* <, reduce: Literal */ - reduce(38), /* <=, reduce: Literal */ - reduce(38), /* >, reduce: Literal */ - reduce(38), /* >=, reduce: Literal */ - reduce(38), /* +, reduce: Literal */ - reduce(38), /* -, reduce: Literal */ - reduce(38), /* *, reduce: Literal */ - reduce(38), /* /, reduce: Literal */ - reduce(38), /* %, reduce: Literal */ + reduce(34), /* ||, reduce: BoolLit */ + reduce(34), /* &&, reduce: BoolLit */ + reduce(34), /* ==, reduce: BoolLit */ + reduce(34), /* !=, reduce: BoolLit */ + reduce(34), /* <, reduce: BoolLit */ + reduce(34), /* <=, reduce: BoolLit */ + reduce(34), /* >, reduce: BoolLit */ + reduce(34), /* >=, reduce: BoolLit */ + reduce(34), /* +, reduce: BoolLit */ + reduce(34), /* -, reduce: BoolLit */ + reduce(34), /* *, reduce: BoolLit */ + reduce(34), /* /, reduce: BoolLit */ + reduce(34), /* %, reduce: BoolLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(38), /* ), reduce: Literal */ + reduce(34), /* ), reduce: BoolLit */ nil, /* functionName */ - nil, /* ? */ + reduce(34), /* ?, reduce: BoolLit */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2429,30 +2507,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S62 + actionRow{ // S64 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(32), /* ||, reduce: NilLit */ - reduce(32), /* &&, reduce: NilLit */ - reduce(32), /* ==, reduce: NilLit */ - reduce(32), /* !=, reduce: NilLit */ - reduce(32), /* <, reduce: NilLit */ - reduce(32), /* <=, reduce: NilLit */ - reduce(32), /* >, reduce: NilLit */ - reduce(32), /* >=, reduce: NilLit */ - reduce(32), /* +, reduce: NilLit */ - reduce(32), /* -, reduce: NilLit */ - reduce(32), /* *, reduce: NilLit */ - reduce(32), /* /, reduce: NilLit */ - reduce(32), /* %, reduce: NilLit */ + reduce(41), /* ||, reduce: Literal */ + reduce(41), /* &&, reduce: Literal */ + reduce(41), /* ==, reduce: Literal */ + reduce(41), /* !=, reduce: Literal */ + reduce(41), /* <, reduce: Literal */ + reduce(41), /* <=, reduce: Literal */ + reduce(41), /* >, reduce: Literal */ + reduce(41), /* >=, reduce: Literal */ + reduce(41), /* +, reduce: Literal */ + reduce(41), /* -, reduce: Literal */ + reduce(41), /* *, reduce: Literal */ + reduce(41), /* /, reduce: Literal */ + reduce(41), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(32), /* ), reduce: NilLit */ + reduce(41), /* ), reduce: Literal */ nil, /* functionName */ - nil, /* ? */ + reduce(41), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2468,30 +2546,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S63 + actionRow{ // S65 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(33), /* ||, reduce: NilLit */ - reduce(33), /* &&, reduce: NilLit */ - reduce(33), /* ==, reduce: NilLit */ - reduce(33), /* !=, reduce: NilLit */ - reduce(33), /* <, reduce: NilLit */ - reduce(33), /* <=, reduce: NilLit */ - reduce(33), /* >, reduce: NilLit */ - reduce(33), /* >=, reduce: NilLit */ - reduce(33), /* +, reduce: NilLit */ - reduce(33), /* -, reduce: NilLit */ - reduce(33), /* *, reduce: NilLit */ - reduce(33), /* /, reduce: NilLit */ - reduce(33), /* %, reduce: NilLit */ + reduce(35), /* ||, reduce: NilLit */ + reduce(35), /* &&, reduce: NilLit */ + reduce(35), /* ==, reduce: NilLit */ + reduce(35), /* !=, reduce: NilLit */ + reduce(35), /* <, reduce: NilLit */ + reduce(35), /* <=, reduce: NilLit */ + reduce(35), /* >, reduce: NilLit */ + reduce(35), /* >=, reduce: NilLit */ + reduce(35), /* +, reduce: NilLit */ + reduce(35), /* -, reduce: NilLit */ + reduce(35), /* *, reduce: NilLit */ + reduce(35), /* /, reduce: NilLit */ + reduce(35), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(33), /* ), reduce: NilLit */ + reduce(35), /* ), reduce: NilLit */ nil, /* functionName */ - nil, /* ? */ + reduce(35), /* ?, reduce: NilLit */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2507,30 +2585,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S64 + actionRow{ // S66 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(34), /* ||, reduce: Literal */ - reduce(34), /* &&, reduce: Literal */ - reduce(34), /* ==, reduce: Literal */ - reduce(34), /* !=, reduce: Literal */ - reduce(34), /* <, reduce: Literal */ - reduce(34), /* <=, reduce: Literal */ - reduce(34), /* >, reduce: Literal */ - reduce(34), /* >=, reduce: Literal */ - reduce(34), /* +, reduce: Literal */ - reduce(34), /* -, reduce: Literal */ - reduce(34), /* *, reduce: Literal */ - reduce(34), /* /, reduce: Literal */ - reduce(34), /* %, reduce: Literal */ + reduce(36), /* ||, reduce: NilLit */ + reduce(36), /* &&, reduce: NilLit */ + reduce(36), /* ==, reduce: NilLit */ + reduce(36), /* !=, reduce: NilLit */ + reduce(36), /* <, reduce: NilLit */ + reduce(36), /* <=, reduce: NilLit */ + reduce(36), /* >, reduce: NilLit */ + reduce(36), /* >=, reduce: NilLit */ + reduce(36), /* +, reduce: NilLit */ + reduce(36), /* -, reduce: NilLit */ + reduce(36), /* *, reduce: NilLit */ + reduce(36), /* /, reduce: NilLit */ + reduce(36), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(34), /* ), reduce: Literal */ + reduce(36), /* ), reduce: NilLit */ nil, /* functionName */ - nil, /* ? */ + reduce(36), /* ?, reduce: NilLit */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2546,30 +2624,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S65 + actionRow{ // S67 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(35), /* ||, reduce: Literal */ - reduce(35), /* &&, reduce: Literal */ - reduce(35), /* ==, reduce: Literal */ - reduce(35), /* !=, reduce: Literal */ - reduce(35), /* <, reduce: Literal */ - reduce(35), /* <=, reduce: Literal */ - reduce(35), /* >, reduce: Literal */ - reduce(35), /* >=, reduce: Literal */ - reduce(35), /* +, reduce: Literal */ - reduce(35), /* -, reduce: Literal */ - reduce(35), /* *, reduce: Literal */ - reduce(35), /* /, reduce: Literal */ - reduce(35), /* %, reduce: Literal */ + reduce(37), /* ||, reduce: Literal */ + reduce(37), /* &&, reduce: Literal */ + reduce(37), /* ==, reduce: Literal */ + reduce(37), /* !=, reduce: Literal */ + reduce(37), /* <, reduce: Literal */ + reduce(37), /* <=, reduce: Literal */ + reduce(37), /* >, reduce: Literal */ + reduce(37), /* >=, reduce: Literal */ + reduce(37), /* +, reduce: Literal */ + reduce(37), /* -, reduce: Literal */ + reduce(37), /* *, reduce: Literal */ + reduce(37), /* /, reduce: Literal */ + reduce(37), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(35), /* ), reduce: Literal */ + reduce(37), /* ), reduce: Literal */ nil, /* functionName */ - nil, /* ? */ + reduce(37), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2585,30 +2663,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S66 + actionRow{ // S68 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(36), /* ||, reduce: Literal */ - reduce(36), /* &&, reduce: Literal */ - reduce(36), /* ==, reduce: Literal */ - reduce(36), /* !=, reduce: Literal */ - reduce(36), /* <, reduce: Literal */ - reduce(36), /* <=, reduce: Literal */ - reduce(36), /* >, reduce: Literal */ - reduce(36), /* >=, reduce: Literal */ - reduce(36), /* +, reduce: Literal */ - reduce(36), /* -, reduce: Literal */ - reduce(36), /* *, reduce: Literal */ - reduce(36), /* /, reduce: Literal */ - reduce(36), /* %, reduce: Literal */ + reduce(38), /* ||, reduce: Literal */ + reduce(38), /* &&, reduce: Literal */ + reduce(38), /* ==, reduce: Literal */ + reduce(38), /* !=, reduce: Literal */ + reduce(38), /* <, reduce: Literal */ + reduce(38), /* <=, reduce: Literal */ + reduce(38), /* >, reduce: Literal */ + reduce(38), /* >=, reduce: Literal */ + reduce(38), /* +, reduce: Literal */ + reduce(38), /* -, reduce: Literal */ + reduce(38), /* *, reduce: Literal */ + reduce(38), /* /, reduce: Literal */ + reduce(38), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(36), /* ), reduce: Literal */ + reduce(38), /* ), reduce: Literal */ nil, /* functionName */ - nil, /* ? */ + reduce(38), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2624,7 +2702,46 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S67 + actionRow{ // S69 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(39), /* ||, reduce: Literal */ + reduce(39), /* &&, reduce: Literal */ + reduce(39), /* ==, reduce: Literal */ + reduce(39), /* !=, reduce: Literal */ + reduce(39), /* <, reduce: Literal */ + reduce(39), /* <=, reduce: Literal */ + reduce(39), /* >, reduce: Literal */ + reduce(39), /* >=, reduce: Literal */ + reduce(39), /* +, reduce: Literal */ + reduce(39), /* -, reduce: Literal */ + reduce(39), /* *, reduce: Literal */ + reduce(39), /* /, reduce: Literal */ + reduce(39), /* %, reduce: Literal */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + reduce(39), /* ), reduce: Literal */ + nil, /* functionName */ + reduce(39), /* ?, reduce: Literal */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S70 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -2657,13 +2774,13 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - shift(155), /* selector */ - shift(156), /* index */ + shift(162), /* selector */ + shift(163), /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S68 + actionRow{ // S71 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -2677,55 +2794,94 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S69 + actionRow{ // S72 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(39), /* $, reduce: Literal */ - reduce(39), /* ||, reduce: Literal */ - reduce(39), /* &&, reduce: Literal */ - reduce(39), /* ==, reduce: Literal */ - reduce(39), /* !=, reduce: Literal */ - reduce(39), /* <, reduce: Literal */ - reduce(39), /* <=, reduce: Literal */ - reduce(39), /* >, reduce: Literal */ - reduce(39), /* >=, reduce: Literal */ - reduce(39), /* +, reduce: Literal */ - reduce(39), /* -, reduce: Literal */ - reduce(39), /* *, reduce: Literal */ - reduce(39), /* /, reduce: Literal */ - reduce(39), /* %, reduce: Literal */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(177), /* ( */ + nil, /* ) */ + shift(178), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S73 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + reduce(42), /* $, reduce: Literal */ + reduce(42), /* ||, reduce: Literal */ + reduce(42), /* &&, reduce: Literal */ + reduce(42), /* ==, reduce: Literal */ + reduce(42), /* !=, reduce: Literal */ + reduce(42), /* <, reduce: Literal */ + reduce(42), /* <=, reduce: Literal */ + reduce(42), /* >, reduce: Literal */ + reduce(42), /* >=, reduce: Literal */ + reduce(42), /* +, reduce: Literal */ + reduce(42), /* -, reduce: Literal */ + reduce(42), /* *, reduce: Literal */ + reduce(42), /* /, reduce: Literal */ + reduce(42), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(39), /* ?, reduce: Literal */ + reduce(42), /* ?, reduce: Literal */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2735,36 +2891,36 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - shift(158), /* selector */ - shift(159), /* index */ + shift(191), /* selector */ + shift(192), /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S70 + actionRow{ // S74 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(40), /* $, reduce: Ref */ - reduce(40), /* ||, reduce: Ref */ - reduce(40), /* &&, reduce: Ref */ - reduce(40), /* ==, reduce: Ref */ - reduce(40), /* !=, reduce: Ref */ - reduce(40), /* <, reduce: Ref */ - reduce(40), /* <=, reduce: Ref */ - reduce(40), /* >, reduce: Ref */ - reduce(40), /* >=, reduce: Ref */ - reduce(40), /* +, reduce: Ref */ - reduce(40), /* -, reduce: Ref */ - reduce(40), /* *, reduce: Ref */ - reduce(40), /* /, reduce: Ref */ - reduce(40), /* %, reduce: Ref */ + reduce(43), /* $, reduce: Ref */ + reduce(43), /* ||, reduce: Ref */ + reduce(43), /* &&, reduce: Ref */ + reduce(43), /* ==, reduce: Ref */ + reduce(43), /* !=, reduce: Ref */ + reduce(43), /* <, reduce: Ref */ + reduce(43), /* <=, reduce: Ref */ + reduce(43), /* >, reduce: Ref */ + reduce(43), /* >=, reduce: Ref */ + reduce(43), /* +, reduce: Ref */ + reduce(43), /* -, reduce: Ref */ + reduce(43), /* *, reduce: Ref */ + reduce(43), /* /, reduce: Ref */ + reduce(43), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(40), /* ?, reduce: Ref */ + reduce(43), /* ?, reduce: Ref */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2774,36 +2930,36 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(40), /* selector, reduce: Ref */ - reduce(40), /* index, reduce: Ref */ + reduce(43), /* selector, reduce: Ref */ + reduce(43), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S71 + actionRow{ // S75 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(41), /* $, reduce: Ref */ - reduce(41), /* ||, reduce: Ref */ - reduce(41), /* &&, reduce: Ref */ - reduce(41), /* ==, reduce: Ref */ - reduce(41), /* !=, reduce: Ref */ - reduce(41), /* <, reduce: Ref */ - reduce(41), /* <=, reduce: Ref */ - reduce(41), /* >, reduce: Ref */ - reduce(41), /* >=, reduce: Ref */ - reduce(41), /* +, reduce: Ref */ - reduce(41), /* -, reduce: Ref */ - reduce(41), /* *, reduce: Ref */ - reduce(41), /* /, reduce: Ref */ - reduce(41), /* %, reduce: Ref */ + reduce(44), /* $, reduce: Ref */ + reduce(44), /* ||, reduce: Ref */ + reduce(44), /* &&, reduce: Ref */ + reduce(44), /* ==, reduce: Ref */ + reduce(44), /* !=, reduce: Ref */ + reduce(44), /* <, reduce: Ref */ + reduce(44), /* <=, reduce: Ref */ + reduce(44), /* >, reduce: Ref */ + reduce(44), /* >=, reduce: Ref */ + reduce(44), /* +, reduce: Ref */ + reduce(44), /* -, reduce: Ref */ + reduce(44), /* *, reduce: Ref */ + reduce(44), /* /, reduce: Ref */ + reduce(44), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - reduce(41), /* ?, reduce: Ref */ + reduce(44), /* ?, reduce: Ref */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -2813,13 +2969,13 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(41), /* selector, reduce: Ref */ - reduce(41), /* index, reduce: Ref */ + reduce(44), /* selector, reduce: Ref */ + reduce(44), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S72 + actionRow{ // S76 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -2858,21 +3014,177 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S73 + actionRow{ // S77 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - shift(160), /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - nil, /* - */ + nil, /* INVALID */ + reduce(5), /* $, reduce: Expr1 */ + reduce(5), /* ||, reduce: Expr1 */ + reduce(5), /* &&, reduce: Expr1 */ + shift(30), /* == */ + shift(31), /* != */ + shift(32), /* < */ + shift(33), /* <= */ + shift(34), /* > */ + shift(35), /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(5), /* ?, reduce: Expr1 */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S78 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + reduce(7), /* $, reduce: Expr2 */ + reduce(7), /* ||, reduce: Expr2 */ + reduce(7), /* &&, reduce: Expr2 */ + reduce(7), /* ==, reduce: Expr2 */ + reduce(7), /* !=, reduce: Expr2 */ + reduce(7), /* <, reduce: Expr2 */ + reduce(7), /* <=, reduce: Expr2 */ + reduce(7), /* >, reduce: Expr2 */ + reduce(7), /* >=, reduce: Expr2 */ + shift(36), /* + */ + shift(37), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(7), /* ?, reduce: Expr2 */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S79 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + reduce(8), /* $, reduce: Expr2 */ + reduce(8), /* ||, reduce: Expr2 */ + reduce(8), /* &&, reduce: Expr2 */ + reduce(8), /* ==, reduce: Expr2 */ + reduce(8), /* !=, reduce: Expr2 */ + reduce(8), /* <, reduce: Expr2 */ + reduce(8), /* <=, reduce: Expr2 */ + reduce(8), /* >, reduce: Expr2 */ + reduce(8), /* >=, reduce: Expr2 */ + shift(36), /* + */ + shift(37), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(8), /* ?, reduce: Expr2 */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S80 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + reduce(9), /* $, reduce: Expr2 */ + reduce(9), /* ||, reduce: Expr2 */ + reduce(9), /* &&, reduce: Expr2 */ + reduce(9), /* ==, reduce: Expr2 */ + reduce(9), /* !=, reduce: Expr2 */ + reduce(9), /* <, reduce: Expr2 */ + reduce(9), /* <=, reduce: Expr2 */ + reduce(9), /* >, reduce: Expr2 */ + reduce(9), /* >=, reduce: Expr2 */ + shift(36), /* + */ + shift(37), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(9), /* ?, reduce: Expr2 */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S81 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + reduce(10), /* $, reduce: Expr2 */ + reduce(10), /* ||, reduce: Expr2 */ + reduce(10), /* &&, reduce: Expr2 */ + reduce(10), /* ==, reduce: Expr2 */ + reduce(10), /* !=, reduce: Expr2 */ + reduce(10), /* <, reduce: Expr2 */ + reduce(10), /* <=, reduce: Expr2 */ + reduce(10), /* >, reduce: Expr2 */ + reduce(10), /* >=, reduce: Expr2 */ + shift(36), /* + */ + shift(37), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -2881,8 +3193,8 @@ var actionTab = actionTable{ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - shift(161), /* : */ + reduce(10), /* ?, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -2897,21 +3209,21 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S74 + actionRow{ // S82 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(4), /* ||, reduce: Expr */ - shift(162), /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - nil, /* - */ + reduce(11), /* $, reduce: Expr2 */ + reduce(11), /* ||, reduce: Expr2 */ + reduce(11), /* &&, reduce: Expr2 */ + reduce(11), /* ==, reduce: Expr2 */ + reduce(11), /* !=, reduce: Expr2 */ + reduce(11), /* <, reduce: Expr2 */ + reduce(11), /* <=, reduce: Expr2 */ + reduce(11), /* >, reduce: Expr2 */ + reduce(11), /* >=, reduce: Expr2 */ + shift(36), /* + */ + shift(37), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -2920,8 +3232,8 @@ var actionTab = actionTable{ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - reduce(4), /* :, reduce: Expr */ + reduce(11), /* ?, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -2936,21 +3248,21 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S75 + actionRow{ // S83 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(6), /* ||, reduce: Expr1 */ - reduce(6), /* &&, reduce: Expr1 */ - shift(163), /* == */ - shift(164), /* != */ - shift(165), /* < */ - shift(166), /* <= */ - shift(167), /* > */ - shift(168), /* >= */ - nil, /* + */ - nil, /* - */ + reduce(12), /* $, reduce: Expr2 */ + reduce(12), /* ||, reduce: Expr2 */ + reduce(12), /* &&, reduce: Expr2 */ + reduce(12), /* ==, reduce: Expr2 */ + reduce(12), /* !=, reduce: Expr2 */ + reduce(12), /* <, reduce: Expr2 */ + reduce(12), /* <=, reduce: Expr2 */ + reduce(12), /* >, reduce: Expr2 */ + reduce(12), /* >=, reduce: Expr2 */ + shift(36), /* + */ + shift(37), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -2959,8 +3271,8 @@ var actionTab = actionTable{ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - reduce(6), /* :, reduce: Expr1 */ + reduce(12), /* ?, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -2975,36 +3287,36 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S76 + actionRow{ // S84 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(13), /* ||, reduce: Expr2 */ - reduce(13), /* &&, reduce: Expr2 */ - reduce(13), /* ==, reduce: Expr2 */ - reduce(13), /* !=, reduce: Expr2 */ - reduce(13), /* <, reduce: Expr2 */ - reduce(13), /* <=, reduce: Expr2 */ - reduce(13), /* >, reduce: Expr2 */ - reduce(13), /* >=, reduce: Expr2 */ - shift(169), /* + */ - shift(170), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - nil, /* ? */ - reduce(13), /* :, reduce: Expr2 */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ + reduce(14), /* $, reduce: Expr3 */ + reduce(14), /* ||, reduce: Expr3 */ + reduce(14), /* &&, reduce: Expr3 */ + reduce(14), /* ==, reduce: Expr3 */ + reduce(14), /* !=, reduce: Expr3 */ + reduce(14), /* <, reduce: Expr3 */ + reduce(14), /* <=, reduce: Expr3 */ + reduce(14), /* >, reduce: Expr3 */ + reduce(14), /* >=, reduce: Expr3 */ + reduce(14), /* +, reduce: Expr3 */ + reduce(14), /* -, reduce: Expr3 */ + shift(38), /* * */ + shift(39), /* / */ + shift(40), /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(14), /* ?, reduce: Expr3 */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ @@ -3014,31 +3326,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S77 + actionRow{ // S85 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(16), /* ||, reduce: Expr3 */ - reduce(16), /* &&, reduce: Expr3 */ - reduce(16), /* ==, reduce: Expr3 */ - reduce(16), /* !=, reduce: Expr3 */ - reduce(16), /* <, reduce: Expr3 */ - reduce(16), /* <=, reduce: Expr3 */ - reduce(16), /* >, reduce: Expr3 */ - reduce(16), /* >=, reduce: Expr3 */ - reduce(16), /* +, reduce: Expr3 */ - reduce(16), /* -, reduce: Expr3 */ - shift(171), /* * */ - shift(172), /* / */ - shift(173), /* % */ + reduce(15), /* $, reduce: Expr3 */ + reduce(15), /* ||, reduce: Expr3 */ + reduce(15), /* &&, reduce: Expr3 */ + reduce(15), /* ==, reduce: Expr3 */ + reduce(15), /* !=, reduce: Expr3 */ + reduce(15), /* <, reduce: Expr3 */ + reduce(15), /* <=, reduce: Expr3 */ + reduce(15), /* >, reduce: Expr3 */ + reduce(15), /* >=, reduce: Expr3 */ + reduce(15), /* +, reduce: Expr3 */ + reduce(15), /* -, reduce: Expr3 */ + shift(38), /* * */ + shift(39), /* / */ + shift(40), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - reduce(16), /* :, reduce: Expr3 */ + reduce(15), /* ?, reduce: Expr3 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3053,70 +3365,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S78 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S79 + actionRow{ // S86 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(20), /* ||, reduce: Expr4 */ - reduce(20), /* &&, reduce: Expr4 */ - reduce(20), /* ==, reduce: Expr4 */ - reduce(20), /* !=, reduce: Expr4 */ - reduce(20), /* <, reduce: Expr4 */ - reduce(20), /* <=, reduce: Expr4 */ - reduce(20), /* >, reduce: Expr4 */ - reduce(20), /* >=, reduce: Expr4 */ - reduce(20), /* +, reduce: Expr4 */ - reduce(20), /* -, reduce: Expr4 */ - reduce(20), /* *, reduce: Expr4 */ - reduce(20), /* /, reduce: Expr4 */ - reduce(20), /* %, reduce: Expr4 */ + reduce(17), /* $, reduce: Expr4 */ + reduce(17), /* ||, reduce: Expr4 */ + reduce(17), /* &&, reduce: Expr4 */ + reduce(17), /* ==, reduce: Expr4 */ + reduce(17), /* !=, reduce: Expr4 */ + reduce(17), /* <, reduce: Expr4 */ + reduce(17), /* <=, reduce: Expr4 */ + reduce(17), /* >, reduce: Expr4 */ + reduce(17), /* >=, reduce: Expr4 */ + reduce(17), /* +, reduce: Expr4 */ + reduce(17), /* -, reduce: Expr4 */ + reduce(17), /* *, reduce: Expr4 */ + reduce(17), /* /, reduce: Expr4 */ + reduce(17), /* %, reduce: Expr4 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - reduce(20), /* :, reduce: Expr4 */ + reduce(17), /* ?, reduce: Expr4 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3131,31 +3404,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S80 + actionRow{ // S87 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(21), /* ||, reduce: Expr5 */ - reduce(21), /* &&, reduce: Expr5 */ - reduce(21), /* ==, reduce: Expr5 */ - reduce(21), /* !=, reduce: Expr5 */ - reduce(21), /* <, reduce: Expr5 */ - reduce(21), /* <=, reduce: Expr5 */ - reduce(21), /* >, reduce: Expr5 */ - reduce(21), /* >=, reduce: Expr5 */ - reduce(21), /* +, reduce: Expr5 */ - reduce(21), /* -, reduce: Expr5 */ - reduce(21), /* *, reduce: Expr5 */ - reduce(21), /* /, reduce: Expr5 */ - reduce(21), /* %, reduce: Expr5 */ + reduce(18), /* $, reduce: Expr4 */ + reduce(18), /* ||, reduce: Expr4 */ + reduce(18), /* &&, reduce: Expr4 */ + reduce(18), /* ==, reduce: Expr4 */ + reduce(18), /* !=, reduce: Expr4 */ + reduce(18), /* <, reduce: Expr4 */ + reduce(18), /* <=, reduce: Expr4 */ + reduce(18), /* >, reduce: Expr4 */ + reduce(18), /* >=, reduce: Expr4 */ + reduce(18), /* +, reduce: Expr4 */ + reduce(18), /* -, reduce: Expr4 */ + reduce(18), /* *, reduce: Expr4 */ + reduce(18), /* /, reduce: Expr4 */ + reduce(18), /* %, reduce: Expr4 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - reduce(21), /* :, reduce: Expr5 */ + reduce(18), /* ?, reduce: Expr4 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3170,70 +3443,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S81 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S82 + actionRow{ // S88 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(24), /* ||, reduce: Expr6 */ - reduce(24), /* &&, reduce: Expr6 */ - reduce(24), /* ==, reduce: Expr6 */ - reduce(24), /* !=, reduce: Expr6 */ - reduce(24), /* <, reduce: Expr6 */ - reduce(24), /* <=, reduce: Expr6 */ - reduce(24), /* >, reduce: Expr6 */ - reduce(24), /* >=, reduce: Expr6 */ - reduce(24), /* +, reduce: Expr6 */ - reduce(24), /* -, reduce: Expr6 */ - reduce(24), /* *, reduce: Expr6 */ - reduce(24), /* /, reduce: Expr6 */ - reduce(24), /* %, reduce: Expr6 */ + reduce(19), /* $, reduce: Expr4 */ + reduce(19), /* ||, reduce: Expr4 */ + reduce(19), /* &&, reduce: Expr4 */ + reduce(19), /* ==, reduce: Expr4 */ + reduce(19), /* !=, reduce: Expr4 */ + reduce(19), /* <, reduce: Expr4 */ + reduce(19), /* <=, reduce: Expr4 */ + reduce(19), /* >, reduce: Expr4 */ + reduce(19), /* >=, reduce: Expr4 */ + reduce(19), /* +, reduce: Expr4 */ + reduce(19), /* -, reduce: Expr4 */ + reduce(19), /* *, reduce: Expr4 */ + reduce(19), /* /, reduce: Expr4 */ + reduce(19), /* %, reduce: Expr4 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - reduce(24), /* :, reduce: Expr6 */ + reduce(19), /* ?, reduce: Expr4 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3248,12 +3482,12 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S83 + actionRow{ // S89 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ + shift(193), /* || */ nil, /* && */ nil, /* == */ nil, /* != */ @@ -3268,8 +3502,8 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - shift(176), /* ( */ - nil, /* ) */ + nil, /* ( */ + shift(140), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -3287,52 +3521,13 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S84 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S85 + actionRow{ // S90 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ + reduce(4), /* ||, reduce: Expr */ + shift(194), /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -3346,8 +3541,8 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - shift(178), /* ( */ - nil, /* ) */ + nil, /* ( */ + reduce(4), /* ), reduce: Expr */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -3365,31 +3560,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S86 + actionRow{ // S91 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(27), /* ||, reduce: PrimaryExpr */ - reduce(27), /* &&, reduce: PrimaryExpr */ - reduce(27), /* ==, reduce: PrimaryExpr */ - reduce(27), /* !=, reduce: PrimaryExpr */ - reduce(27), /* <, reduce: PrimaryExpr */ - reduce(27), /* <=, reduce: PrimaryExpr */ - reduce(27), /* >, reduce: PrimaryExpr */ - reduce(27), /* >=, reduce: PrimaryExpr */ - reduce(27), /* +, reduce: PrimaryExpr */ - reduce(27), /* -, reduce: PrimaryExpr */ - reduce(27), /* *, reduce: PrimaryExpr */ - reduce(27), /* /, reduce: PrimaryExpr */ - reduce(27), /* %, reduce: PrimaryExpr */ + reduce(6), /* ||, reduce: Expr1 */ + reduce(6), /* &&, reduce: Expr1 */ + shift(195), /* == */ + shift(196), /* != */ + shift(197), /* < */ + shift(198), /* <= */ + shift(199), /* > */ + shift(200), /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(6), /* ), reduce: Expr1 */ nil, /* functionName */ nil, /* ? */ - reduce(27), /* :, reduce: PrimaryExpr */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3404,31 +3599,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S87 + actionRow{ // S92 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(37), /* ||, reduce: Literal */ - reduce(37), /* &&, reduce: Literal */ - reduce(37), /* ==, reduce: Literal */ - reduce(37), /* !=, reduce: Literal */ - reduce(37), /* <, reduce: Literal */ - reduce(37), /* <=, reduce: Literal */ - reduce(37), /* >, reduce: Literal */ - reduce(37), /* >=, reduce: Literal */ - reduce(37), /* +, reduce: Literal */ - reduce(37), /* -, reduce: Literal */ - reduce(37), /* *, reduce: Literal */ - reduce(37), /* /, reduce: Literal */ - reduce(37), /* %, reduce: Literal */ + reduce(13), /* ||, reduce: Expr2 */ + reduce(13), /* &&, reduce: Expr2 */ + reduce(13), /* ==, reduce: Expr2 */ + reduce(13), /* !=, reduce: Expr2 */ + reduce(13), /* <, reduce: Expr2 */ + reduce(13), /* <=, reduce: Expr2 */ + reduce(13), /* >, reduce: Expr2 */ + reduce(13), /* >=, reduce: Expr2 */ + shift(201), /* + */ + shift(202), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(13), /* ), reduce: Expr2 */ nil, /* functionName */ nil, /* ? */ - reduce(37), /* :, reduce: Literal */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3443,31 +3638,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S88 + actionRow{ // S93 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(30), /* ||, reduce: BoolLit */ - reduce(30), /* &&, reduce: BoolLit */ - reduce(30), /* ==, reduce: BoolLit */ - reduce(30), /* !=, reduce: BoolLit */ - reduce(30), /* <, reduce: BoolLit */ - reduce(30), /* <=, reduce: BoolLit */ - reduce(30), /* >, reduce: BoolLit */ - reduce(30), /* >=, reduce: BoolLit */ - reduce(30), /* +, reduce: BoolLit */ - reduce(30), /* -, reduce: BoolLit */ - reduce(30), /* *, reduce: BoolLit */ - reduce(30), /* /, reduce: BoolLit */ - reduce(30), /* %, reduce: BoolLit */ + reduce(16), /* ||, reduce: Expr3 */ + reduce(16), /* &&, reduce: Expr3 */ + reduce(16), /* ==, reduce: Expr3 */ + reduce(16), /* !=, reduce: Expr3 */ + reduce(16), /* <, reduce: Expr3 */ + reduce(16), /* <=, reduce: Expr3 */ + reduce(16), /* >, reduce: Expr3 */ + reduce(16), /* >=, reduce: Expr3 */ + reduce(16), /* +, reduce: Expr3 */ + reduce(16), /* -, reduce: Expr3 */ + shift(203), /* * */ + shift(204), /* / */ + shift(205), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(16), /* ), reduce: Expr3 */ nil, /* functionName */ nil, /* ? */ - reduce(30), /* :, reduce: BoolLit */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3482,70 +3677,70 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S89 + actionRow{ // S94 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(31), /* ||, reduce: BoolLit */ - reduce(31), /* &&, reduce: BoolLit */ - reduce(31), /* ==, reduce: BoolLit */ - reduce(31), /* !=, reduce: BoolLit */ - reduce(31), /* <, reduce: BoolLit */ - reduce(31), /* <=, reduce: BoolLit */ - reduce(31), /* >, reduce: BoolLit */ - reduce(31), /* >=, reduce: BoolLit */ - reduce(31), /* +, reduce: BoolLit */ - reduce(31), /* -, reduce: BoolLit */ - reduce(31), /* *, reduce: BoolLit */ - reduce(31), /* /, reduce: BoolLit */ - reduce(31), /* %, reduce: BoolLit */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(101), /* functionName */ nil, /* ? */ - reduce(31), /* :, reduce: BoolLit */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S90 + actionRow{ // S95 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(38), /* ||, reduce: Literal */ - reduce(38), /* &&, reduce: Literal */ - reduce(38), /* ==, reduce: Literal */ - reduce(38), /* !=, reduce: Literal */ - reduce(38), /* <, reduce: Literal */ - reduce(38), /* <=, reduce: Literal */ - reduce(38), /* >, reduce: Literal */ - reduce(38), /* >=, reduce: Literal */ - reduce(38), /* +, reduce: Literal */ - reduce(38), /* -, reduce: Literal */ - reduce(38), /* *, reduce: Literal */ - reduce(38), /* /, reduce: Literal */ - reduce(38), /* %, reduce: Literal */ + reduce(20), /* ||, reduce: Expr4 */ + reduce(20), /* &&, reduce: Expr4 */ + reduce(20), /* ==, reduce: Expr4 */ + reduce(20), /* !=, reduce: Expr4 */ + reduce(20), /* <, reduce: Expr4 */ + reduce(20), /* <=, reduce: Expr4 */ + reduce(20), /* >, reduce: Expr4 */ + reduce(20), /* >=, reduce: Expr4 */ + reduce(20), /* +, reduce: Expr4 */ + reduce(20), /* -, reduce: Expr4 */ + reduce(20), /* *, reduce: Expr4 */ + reduce(20), /* /, reduce: Expr4 */ + reduce(20), /* %, reduce: Expr4 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(20), /* ), reduce: Expr4 */ nil, /* functionName */ nil, /* ? */ - reduce(38), /* :, reduce: Literal */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3560,31 +3755,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S91 + actionRow{ // S96 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(32), /* ||, reduce: NilLit */ - reduce(32), /* &&, reduce: NilLit */ - reduce(32), /* ==, reduce: NilLit */ - reduce(32), /* !=, reduce: NilLit */ - reduce(32), /* <, reduce: NilLit */ - reduce(32), /* <=, reduce: NilLit */ - reduce(32), /* >, reduce: NilLit */ - reduce(32), /* >=, reduce: NilLit */ - reduce(32), /* +, reduce: NilLit */ - reduce(32), /* -, reduce: NilLit */ - reduce(32), /* *, reduce: NilLit */ - reduce(32), /* /, reduce: NilLit */ - reduce(32), /* %, reduce: NilLit */ + reduce(21), /* ||, reduce: Expr5 */ + reduce(21), /* &&, reduce: Expr5 */ + reduce(21), /* ==, reduce: Expr5 */ + reduce(21), /* !=, reduce: Expr5 */ + reduce(21), /* <, reduce: Expr5 */ + reduce(21), /* <=, reduce: Expr5 */ + reduce(21), /* >, reduce: Expr5 */ + reduce(21), /* >=, reduce: Expr5 */ + reduce(21), /* +, reduce: Expr5 */ + reduce(21), /* -, reduce: Expr5 */ + reduce(21), /* *, reduce: Expr5 */ + reduce(21), /* /, reduce: Expr5 */ + reduce(21), /* %, reduce: Expr5 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(21), /* ), reduce: Expr5 */ nil, /* functionName */ nil, /* ? */ - reduce(32), /* :, reduce: NilLit */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3599,70 +3794,70 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S92 + actionRow{ // S97 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(33), /* ||, reduce: NilLit */ - reduce(33), /* &&, reduce: NilLit */ - reduce(33), /* ==, reduce: NilLit */ - reduce(33), /* !=, reduce: NilLit */ - reduce(33), /* <, reduce: NilLit */ - reduce(33), /* <=, reduce: NilLit */ - reduce(33), /* >, reduce: NilLit */ - reduce(33), /* >=, reduce: NilLit */ - reduce(33), /* +, reduce: NilLit */ - reduce(33), /* -, reduce: NilLit */ - reduce(33), /* *, reduce: NilLit */ - reduce(33), /* /, reduce: NilLit */ - reduce(33), /* %, reduce: NilLit */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(101), /* functionName */ nil, /* ? */ - reduce(33), /* :, reduce: NilLit */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S93 + actionRow{ // S98 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(34), /* ||, reduce: Literal */ - reduce(34), /* &&, reduce: Literal */ - reduce(34), /* ==, reduce: Literal */ - reduce(34), /* !=, reduce: Literal */ - reduce(34), /* <, reduce: Literal */ - reduce(34), /* <=, reduce: Literal */ - reduce(34), /* >, reduce: Literal */ - reduce(34), /* >=, reduce: Literal */ - reduce(34), /* +, reduce: Literal */ - reduce(34), /* -, reduce: Literal */ - reduce(34), /* *, reduce: Literal */ - reduce(34), /* /, reduce: Literal */ - reduce(34), /* %, reduce: Literal */ + reduce(24), /* ||, reduce: Expr6 */ + reduce(24), /* &&, reduce: Expr6 */ + reduce(24), /* ==, reduce: Expr6 */ + reduce(24), /* !=, reduce: Expr6 */ + reduce(24), /* <, reduce: Expr6 */ + reduce(24), /* <=, reduce: Expr6 */ + reduce(24), /* >, reduce: Expr6 */ + reduce(24), /* >=, reduce: Expr6 */ + reduce(24), /* +, reduce: Expr6 */ + reduce(24), /* -, reduce: Expr6 */ + reduce(24), /* *, reduce: Expr6 */ + reduce(24), /* /, reduce: Expr6 */ + reduce(24), /* %, reduce: Expr6 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(24), /* ), reduce: Expr6 */ nil, /* functionName */ nil, /* ? */ - reduce(34), /* :, reduce: Literal */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3677,31 +3872,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S94 + actionRow{ // S99 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(35), /* ||, reduce: Literal */ - reduce(35), /* &&, reduce: Literal */ - reduce(35), /* ==, reduce: Literal */ - reduce(35), /* !=, reduce: Literal */ - reduce(35), /* <, reduce: Literal */ - reduce(35), /* <=, reduce: Literal */ - reduce(35), /* >, reduce: Literal */ - reduce(35), /* >=, reduce: Literal */ - reduce(35), /* +, reduce: Literal */ - reduce(35), /* -, reduce: Literal */ - reduce(35), /* *, reduce: Literal */ - reduce(35), /* /, reduce: Literal */ - reduce(35), /* %, reduce: Literal */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ - nil, /* ( */ + shift(208), /* ( */ nil, /* ) */ nil, /* functionName */ nil, /* ? */ - reduce(35), /* :, reduce: Literal */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -3716,46 +3911,46 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S95 + actionRow{ // S100 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(36), /* ||, reduce: Literal */ - reduce(36), /* &&, reduce: Literal */ - reduce(36), /* ==, reduce: Literal */ - reduce(36), /* !=, reduce: Literal */ - reduce(36), /* <, reduce: Literal */ - reduce(36), /* <=, reduce: Literal */ - reduce(36), /* >, reduce: Literal */ - reduce(36), /* >=, reduce: Literal */ - reduce(36), /* +, reduce: Literal */ - reduce(36), /* -, reduce: Literal */ - reduce(36), /* *, reduce: Literal */ - reduce(36), /* /, reduce: Literal */ - reduce(36), /* %, reduce: Literal */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(101), /* functionName */ nil, /* ? */ - reduce(36), /* :, reduce: Literal */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S96 + actionRow{ // S101 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -3775,7 +3970,7 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - nil, /* ( */ + shift(210), /* ( */ nil, /* ) */ nil, /* functionName */ nil, /* ? */ @@ -3788,192 +3983,36 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - shift(180), /* selector */ - shift(181), /* index */ + nil, /* selector */ + nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S97 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(5), /* $, reduce: Expr1 */ - reduce(5), /* ||, reduce: Expr1 */ - reduce(5), /* &&, reduce: Expr1 */ - shift(30), /* == */ - shift(31), /* != */ - shift(32), /* < */ - shift(33), /* <= */ - shift(34), /* > */ - shift(35), /* >= */ - nil, /* + */ - nil, /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - reduce(5), /* ?, reduce: Expr1 */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S98 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(7), /* $, reduce: Expr2 */ - reduce(7), /* ||, reduce: Expr2 */ - reduce(7), /* &&, reduce: Expr2 */ - reduce(7), /* ==, reduce: Expr2 */ - reduce(7), /* !=, reduce: Expr2 */ - reduce(7), /* <, reduce: Expr2 */ - reduce(7), /* <=, reduce: Expr2 */ - reduce(7), /* >, reduce: Expr2 */ - reduce(7), /* >=, reduce: Expr2 */ - shift(36), /* + */ - shift(37), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - reduce(7), /* ?, reduce: Expr2 */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S99 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(8), /* $, reduce: Expr2 */ - reduce(8), /* ||, reduce: Expr2 */ - reduce(8), /* &&, reduce: Expr2 */ - reduce(8), /* ==, reduce: Expr2 */ - reduce(8), /* !=, reduce: Expr2 */ - reduce(8), /* <, reduce: Expr2 */ - reduce(8), /* <=, reduce: Expr2 */ - reduce(8), /* >, reduce: Expr2 */ - reduce(8), /* >=, reduce: Expr2 */ - shift(36), /* + */ - shift(37), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - reduce(8), /* ?, reduce: Expr2 */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S100 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(9), /* $, reduce: Expr2 */ - reduce(9), /* ||, reduce: Expr2 */ - reduce(9), /* &&, reduce: Expr2 */ - reduce(9), /* ==, reduce: Expr2 */ - reduce(9), /* !=, reduce: Expr2 */ - reduce(9), /* <, reduce: Expr2 */ - reduce(9), /* <=, reduce: Expr2 */ - reduce(9), /* >, reduce: Expr2 */ - reduce(9), /* >=, reduce: Expr2 */ - shift(36), /* + */ - shift(37), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - reduce(9), /* ?, reduce: Expr2 */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S101 + actionRow{ // S102 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(10), /* $, reduce: Expr2 */ - reduce(10), /* ||, reduce: Expr2 */ - reduce(10), /* &&, reduce: Expr2 */ - reduce(10), /* ==, reduce: Expr2 */ - reduce(10), /* !=, reduce: Expr2 */ - reduce(10), /* <, reduce: Expr2 */ - reduce(10), /* <=, reduce: Expr2 */ - reduce(10), /* >, reduce: Expr2 */ - reduce(10), /* >=, reduce: Expr2 */ - shift(36), /* + */ - shift(37), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(27), /* ||, reduce: PrimaryExpr */ + reduce(27), /* &&, reduce: PrimaryExpr */ + reduce(27), /* ==, reduce: PrimaryExpr */ + reduce(27), /* !=, reduce: PrimaryExpr */ + reduce(27), /* <, reduce: PrimaryExpr */ + reduce(27), /* <=, reduce: PrimaryExpr */ + reduce(27), /* >, reduce: PrimaryExpr */ + reduce(27), /* >=, reduce: PrimaryExpr */ + reduce(27), /* +, reduce: PrimaryExpr */ + reduce(27), /* -, reduce: PrimaryExpr */ + reduce(27), /* *, reduce: PrimaryExpr */ + reduce(27), /* /, reduce: PrimaryExpr */ + reduce(27), /* %, reduce: PrimaryExpr */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(27), /* ), reduce: PrimaryExpr */ nil, /* functionName */ - reduce(10), /* ?, reduce: Expr2 */ + nil, /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -3989,30 +4028,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S102 + actionRow{ // S103 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(11), /* $, reduce: Expr2 */ - reduce(11), /* ||, reduce: Expr2 */ - reduce(11), /* &&, reduce: Expr2 */ - reduce(11), /* ==, reduce: Expr2 */ - reduce(11), /* !=, reduce: Expr2 */ - reduce(11), /* <, reduce: Expr2 */ - reduce(11), /* <=, reduce: Expr2 */ - reduce(11), /* >, reduce: Expr2 */ - reduce(11), /* >=, reduce: Expr2 */ - shift(36), /* + */ - shift(37), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(40), /* ||, reduce: Literal */ + reduce(40), /* &&, reduce: Literal */ + reduce(40), /* ==, reduce: Literal */ + reduce(40), /* !=, reduce: Literal */ + reduce(40), /* <, reduce: Literal */ + reduce(40), /* <=, reduce: Literal */ + reduce(40), /* >, reduce: Literal */ + reduce(40), /* >=, reduce: Literal */ + reduce(40), /* +, reduce: Literal */ + reduce(40), /* -, reduce: Literal */ + reduce(40), /* *, reduce: Literal */ + reduce(40), /* /, reduce: Literal */ + reduce(40), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(40), /* ), reduce: Literal */ nil, /* functionName */ - reduce(11), /* ?, reduce: Expr2 */ + nil, /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -4028,30 +4067,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S103 + actionRow{ // S104 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(12), /* $, reduce: Expr2 */ - reduce(12), /* ||, reduce: Expr2 */ - reduce(12), /* &&, reduce: Expr2 */ - reduce(12), /* ==, reduce: Expr2 */ - reduce(12), /* !=, reduce: Expr2 */ - reduce(12), /* <, reduce: Expr2 */ - reduce(12), /* <=, reduce: Expr2 */ - reduce(12), /* >, reduce: Expr2 */ - reduce(12), /* >=, reduce: Expr2 */ - shift(36), /* + */ - shift(37), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(33), /* ||, reduce: BoolLit */ + reduce(33), /* &&, reduce: BoolLit */ + reduce(33), /* ==, reduce: BoolLit */ + reduce(33), /* !=, reduce: BoolLit */ + reduce(33), /* <, reduce: BoolLit */ + reduce(33), /* <=, reduce: BoolLit */ + reduce(33), /* >, reduce: BoolLit */ + reduce(33), /* >=, reduce: BoolLit */ + reduce(33), /* +, reduce: BoolLit */ + reduce(33), /* -, reduce: BoolLit */ + reduce(33), /* *, reduce: BoolLit */ + reduce(33), /* /, reduce: BoolLit */ + reduce(33), /* %, reduce: BoolLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(33), /* ), reduce: BoolLit */ nil, /* functionName */ - reduce(12), /* ?, reduce: Expr2 */ + nil, /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -4067,30 +4106,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S104 + actionRow{ // S105 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(14), /* $, reduce: Expr3 */ - reduce(14), /* ||, reduce: Expr3 */ - reduce(14), /* &&, reduce: Expr3 */ - reduce(14), /* ==, reduce: Expr3 */ - reduce(14), /* !=, reduce: Expr3 */ - reduce(14), /* <, reduce: Expr3 */ - reduce(14), /* <=, reduce: Expr3 */ - reduce(14), /* >, reduce: Expr3 */ - reduce(14), /* >=, reduce: Expr3 */ - reduce(14), /* +, reduce: Expr3 */ - reduce(14), /* -, reduce: Expr3 */ - shift(38), /* * */ - shift(39), /* / */ - shift(40), /* % */ + nil, /* $ */ + reduce(34), /* ||, reduce: BoolLit */ + reduce(34), /* &&, reduce: BoolLit */ + reduce(34), /* ==, reduce: BoolLit */ + reduce(34), /* !=, reduce: BoolLit */ + reduce(34), /* <, reduce: BoolLit */ + reduce(34), /* <=, reduce: BoolLit */ + reduce(34), /* >, reduce: BoolLit */ + reduce(34), /* >=, reduce: BoolLit */ + reduce(34), /* +, reduce: BoolLit */ + reduce(34), /* -, reduce: BoolLit */ + reduce(34), /* *, reduce: BoolLit */ + reduce(34), /* /, reduce: BoolLit */ + reduce(34), /* %, reduce: BoolLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(34), /* ), reduce: BoolLit */ nil, /* functionName */ - reduce(14), /* ?, reduce: Expr3 */ + nil, /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -4106,30 +4145,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S105 + actionRow{ // S106 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(15), /* $, reduce: Expr3 */ - reduce(15), /* ||, reduce: Expr3 */ - reduce(15), /* &&, reduce: Expr3 */ - reduce(15), /* ==, reduce: Expr3 */ - reduce(15), /* !=, reduce: Expr3 */ - reduce(15), /* <, reduce: Expr3 */ - reduce(15), /* <=, reduce: Expr3 */ - reduce(15), /* >, reduce: Expr3 */ - reduce(15), /* >=, reduce: Expr3 */ - reduce(15), /* +, reduce: Expr3 */ - reduce(15), /* -, reduce: Expr3 */ - shift(38), /* * */ - shift(39), /* / */ - shift(40), /* % */ + nil, /* $ */ + reduce(41), /* ||, reduce: Literal */ + reduce(41), /* &&, reduce: Literal */ + reduce(41), /* ==, reduce: Literal */ + reduce(41), /* !=, reduce: Literal */ + reduce(41), /* <, reduce: Literal */ + reduce(41), /* <=, reduce: Literal */ + reduce(41), /* >, reduce: Literal */ + reduce(41), /* >=, reduce: Literal */ + reduce(41), /* +, reduce: Literal */ + reduce(41), /* -, reduce: Literal */ + reduce(41), /* *, reduce: Literal */ + reduce(41), /* /, reduce: Literal */ + reduce(41), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(41), /* ), reduce: Literal */ nil, /* functionName */ - reduce(15), /* ?, reduce: Expr3 */ + nil, /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -4145,30 +4184,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S106 + actionRow{ // S107 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(17), /* $, reduce: Expr4 */ - reduce(17), /* ||, reduce: Expr4 */ - reduce(17), /* &&, reduce: Expr4 */ - reduce(17), /* ==, reduce: Expr4 */ - reduce(17), /* !=, reduce: Expr4 */ - reduce(17), /* <, reduce: Expr4 */ - reduce(17), /* <=, reduce: Expr4 */ - reduce(17), /* >, reduce: Expr4 */ - reduce(17), /* >=, reduce: Expr4 */ - reduce(17), /* +, reduce: Expr4 */ - reduce(17), /* -, reduce: Expr4 */ - reduce(17), /* *, reduce: Expr4 */ - reduce(17), /* /, reduce: Expr4 */ - reduce(17), /* %, reduce: Expr4 */ + nil, /* $ */ + reduce(35), /* ||, reduce: NilLit */ + reduce(35), /* &&, reduce: NilLit */ + reduce(35), /* ==, reduce: NilLit */ + reduce(35), /* !=, reduce: NilLit */ + reduce(35), /* <, reduce: NilLit */ + reduce(35), /* <=, reduce: NilLit */ + reduce(35), /* >, reduce: NilLit */ + reduce(35), /* >=, reduce: NilLit */ + reduce(35), /* +, reduce: NilLit */ + reduce(35), /* -, reduce: NilLit */ + reduce(35), /* *, reduce: NilLit */ + reduce(35), /* /, reduce: NilLit */ + reduce(35), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(35), /* ), reduce: NilLit */ nil, /* functionName */ - reduce(17), /* ?, reduce: Expr4 */ + nil, /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -4184,30 +4223,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S107 + actionRow{ // S108 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(18), /* $, reduce: Expr4 */ - reduce(18), /* ||, reduce: Expr4 */ - reduce(18), /* &&, reduce: Expr4 */ - reduce(18), /* ==, reduce: Expr4 */ - reduce(18), /* !=, reduce: Expr4 */ - reduce(18), /* <, reduce: Expr4 */ - reduce(18), /* <=, reduce: Expr4 */ - reduce(18), /* >, reduce: Expr4 */ - reduce(18), /* >=, reduce: Expr4 */ - reduce(18), /* +, reduce: Expr4 */ - reduce(18), /* -, reduce: Expr4 */ - reduce(18), /* *, reduce: Expr4 */ - reduce(18), /* /, reduce: Expr4 */ - reduce(18), /* %, reduce: Expr4 */ + nil, /* $ */ + reduce(36), /* ||, reduce: NilLit */ + reduce(36), /* &&, reduce: NilLit */ + reduce(36), /* ==, reduce: NilLit */ + reduce(36), /* !=, reduce: NilLit */ + reduce(36), /* <, reduce: NilLit */ + reduce(36), /* <=, reduce: NilLit */ + reduce(36), /* >, reduce: NilLit */ + reduce(36), /* >=, reduce: NilLit */ + reduce(36), /* +, reduce: NilLit */ + reduce(36), /* -, reduce: NilLit */ + reduce(36), /* *, reduce: NilLit */ + reduce(36), /* /, reduce: NilLit */ + reduce(36), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(36), /* ), reduce: NilLit */ nil, /* functionName */ - reduce(18), /* ?, reduce: Expr4 */ + nil, /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -4223,30 +4262,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S108 + actionRow{ // S109 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(19), /* $, reduce: Expr4 */ - reduce(19), /* ||, reduce: Expr4 */ - reduce(19), /* &&, reduce: Expr4 */ - reduce(19), /* ==, reduce: Expr4 */ - reduce(19), /* !=, reduce: Expr4 */ - reduce(19), /* <, reduce: Expr4 */ - reduce(19), /* <=, reduce: Expr4 */ - reduce(19), /* >, reduce: Expr4 */ - reduce(19), /* >=, reduce: Expr4 */ - reduce(19), /* +, reduce: Expr4 */ - reduce(19), /* -, reduce: Expr4 */ - reduce(19), /* *, reduce: Expr4 */ - reduce(19), /* /, reduce: Expr4 */ - reduce(19), /* %, reduce: Expr4 */ + nil, /* $ */ + reduce(37), /* ||, reduce: Literal */ + reduce(37), /* &&, reduce: Literal */ + reduce(37), /* ==, reduce: Literal */ + reduce(37), /* !=, reduce: Literal */ + reduce(37), /* <, reduce: Literal */ + reduce(37), /* <=, reduce: Literal */ + reduce(37), /* >, reduce: Literal */ + reduce(37), /* >=, reduce: Literal */ + reduce(37), /* +, reduce: Literal */ + reduce(37), /* -, reduce: Literal */ + reduce(37), /* *, reduce: Literal */ + reduce(37), /* /, reduce: Literal */ + reduce(37), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(37), /* ), reduce: Literal */ nil, /* functionName */ - reduce(19), /* ?, reduce: Expr4 */ + nil, /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -4262,12 +4301,129 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S109 + actionRow{ // S110 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(38), /* ||, reduce: Literal */ + reduce(38), /* &&, reduce: Literal */ + reduce(38), /* ==, reduce: Literal */ + reduce(38), /* !=, reduce: Literal */ + reduce(38), /* <, reduce: Literal */ + reduce(38), /* <=, reduce: Literal */ + reduce(38), /* >, reduce: Literal */ + reduce(38), /* >=, reduce: Literal */ + reduce(38), /* +, reduce: Literal */ + reduce(38), /* -, reduce: Literal */ + reduce(38), /* *, reduce: Literal */ + reduce(38), /* /, reduce: Literal */ + reduce(38), /* %, reduce: Literal */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + reduce(38), /* ), reduce: Literal */ + nil, /* functionName */ + nil, /* ? */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S111 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(39), /* ||, reduce: Literal */ + reduce(39), /* &&, reduce: Literal */ + reduce(39), /* ==, reduce: Literal */ + reduce(39), /* !=, reduce: Literal */ + reduce(39), /* <, reduce: Literal */ + reduce(39), /* <=, reduce: Literal */ + reduce(39), /* >, reduce: Literal */ + reduce(39), /* >=, reduce: Literal */ + reduce(39), /* +, reduce: Literal */ + reduce(39), /* -, reduce: Literal */ + reduce(39), /* *, reduce: Literal */ + reduce(39), /* /, reduce: Literal */ + reduce(39), /* %, reduce: Literal */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + reduce(39), /* ), reduce: Literal */ + nil, /* functionName */ + nil, /* ? */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S112 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + nil, /* ? */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + shift(212), /* selector */ + shift(213), /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S113 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - shift(182), /* || */ + shift(214), /* || */ nil, /* && */ nil, /* == */ nil, /* != */ @@ -4283,7 +4439,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(46), /* ), reduce: ExprList */ + reduce(49), /* ), reduce: ExprList */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -4298,16 +4454,16 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(46), /* ,, reduce: ExprList */ + reduce(49), /* ,, reduce: ExprList */ }, }, - actionRow{ // S110 + actionRow{ // S114 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(4), /* ||, reduce: Expr */ - shift(183), /* && */ + shift(215), /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -4340,19 +4496,19 @@ var actionTab = actionTable{ reduce(4), /* ,, reduce: Expr */ }, }, - actionRow{ // S111 + actionRow{ // S115 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(6), /* ||, reduce: Expr1 */ reduce(6), /* &&, reduce: Expr1 */ - shift(184), /* == */ - shift(185), /* != */ - shift(186), /* < */ - shift(187), /* <= */ - shift(188), /* > */ - shift(189), /* >= */ + shift(216), /* == */ + shift(217), /* != */ + shift(218), /* < */ + shift(219), /* <= */ + shift(220), /* > */ + shift(221), /* >= */ nil, /* + */ nil, /* - */ nil, /* * */ @@ -4379,7 +4535,7 @@ var actionTab = actionTable{ reduce(6), /* ,, reduce: Expr1 */ }, }, - actionRow{ // S112 + actionRow{ // S116 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4392,8 +4548,8 @@ var actionTab = actionTable{ reduce(13), /* <=, reduce: Expr2 */ reduce(13), /* >, reduce: Expr2 */ reduce(13), /* >=, reduce: Expr2 */ - shift(190), /* + */ - shift(191), /* - */ + shift(222), /* + */ + shift(223), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -4418,7 +4574,7 @@ var actionTab = actionTable{ reduce(13), /* ,, reduce: Expr2 */ }, }, - actionRow{ // S113 + actionRow{ // S117 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4433,9 +4589,9 @@ var actionTab = actionTable{ reduce(16), /* >=, reduce: Expr3 */ reduce(16), /* +, reduce: Expr3 */ reduce(16), /* -, reduce: Expr3 */ - shift(192), /* * */ - shift(193), /* / */ - shift(194), /* % */ + shift(224), /* * */ + shift(225), /* / */ + shift(226), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ @@ -4457,7 +4613,7 @@ var actionTab = actionTable{ reduce(16), /* ,, reduce: Expr3 */ }, }, - actionRow{ // S114 + actionRow{ // S118 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4471,32 +4627,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S115 + actionRow{ // S119 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4535,7 +4691,7 @@ var actionTab = actionTable{ reduce(20), /* ,, reduce: Expr4 */ }, }, - actionRow{ // S116 + actionRow{ // S120 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4574,7 +4730,7 @@ var actionTab = actionTable{ reduce(21), /* ,, reduce: Expr5 */ }, }, - actionRow{ // S117 + actionRow{ // S121 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4588,32 +4744,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S118 + actionRow{ // S122 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4652,7 +4808,7 @@ var actionTab = actionTable{ reduce(24), /* ,, reduce: Expr6 */ }, }, - actionRow{ // S119 + actionRow{ // S123 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4672,7 +4828,7 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - shift(197), /* ( */ + shift(229), /* ( */ nil, /* ) */ nil, /* functionName */ nil, /* ? */ @@ -4691,46 +4847,46 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S120 + actionRow{ // S124 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S121 + actionRow{ // S125 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4751,7 +4907,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(199), /* ) */ + shift(231), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -4769,7 +4925,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S122 + actionRow{ // S126 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4789,7 +4945,7 @@ var actionTab = actionTable{ nil, /* % */ nil, /* ! */ nil, /* ident */ - shift(200), /* ( */ + shift(232), /* ( */ nil, /* ) */ nil, /* functionName */ nil, /* ? */ @@ -4808,7 +4964,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S123 + actionRow{ // S127 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -4847,28 +5003,28 @@ var actionTab = actionTable{ reduce(27), /* ,, reduce: PrimaryExpr */ }, }, - actionRow{ // S124 + actionRow{ // S128 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(37), /* ||, reduce: Literal */ - reduce(37), /* &&, reduce: Literal */ - reduce(37), /* ==, reduce: Literal */ - reduce(37), /* !=, reduce: Literal */ - reduce(37), /* <, reduce: Literal */ - reduce(37), /* <=, reduce: Literal */ - reduce(37), /* >, reduce: Literal */ - reduce(37), /* >=, reduce: Literal */ - reduce(37), /* +, reduce: Literal */ - reduce(37), /* -, reduce: Literal */ - reduce(37), /* *, reduce: Literal */ - reduce(37), /* /, reduce: Literal */ - reduce(37), /* %, reduce: Literal */ + reduce(40), /* ||, reduce: Literal */ + reduce(40), /* &&, reduce: Literal */ + reduce(40), /* ==, reduce: Literal */ + reduce(40), /* !=, reduce: Literal */ + reduce(40), /* <, reduce: Literal */ + reduce(40), /* <=, reduce: Literal */ + reduce(40), /* >, reduce: Literal */ + reduce(40), /* >=, reduce: Literal */ + reduce(40), /* +, reduce: Literal */ + reduce(40), /* -, reduce: Literal */ + reduce(40), /* *, reduce: Literal */ + reduce(40), /* /, reduce: Literal */ + reduce(40), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(37), /* ), reduce: Literal */ + reduce(40), /* ), reduce: Literal */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -4883,31 +5039,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(37), /* ,, reduce: Literal */ + reduce(40), /* ,, reduce: Literal */ }, }, - actionRow{ // S125 + actionRow{ // S129 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(30), /* ||, reduce: BoolLit */ - reduce(30), /* &&, reduce: BoolLit */ - reduce(30), /* ==, reduce: BoolLit */ - reduce(30), /* !=, reduce: BoolLit */ - reduce(30), /* <, reduce: BoolLit */ - reduce(30), /* <=, reduce: BoolLit */ - reduce(30), /* >, reduce: BoolLit */ - reduce(30), /* >=, reduce: BoolLit */ - reduce(30), /* +, reduce: BoolLit */ - reduce(30), /* -, reduce: BoolLit */ - reduce(30), /* *, reduce: BoolLit */ - reduce(30), /* /, reduce: BoolLit */ - reduce(30), /* %, reduce: BoolLit */ + reduce(33), /* ||, reduce: BoolLit */ + reduce(33), /* &&, reduce: BoolLit */ + reduce(33), /* ==, reduce: BoolLit */ + reduce(33), /* !=, reduce: BoolLit */ + reduce(33), /* <, reduce: BoolLit */ + reduce(33), /* <=, reduce: BoolLit */ + reduce(33), /* >, reduce: BoolLit */ + reduce(33), /* >=, reduce: BoolLit */ + reduce(33), /* +, reduce: BoolLit */ + reduce(33), /* -, reduce: BoolLit */ + reduce(33), /* *, reduce: BoolLit */ + reduce(33), /* /, reduce: BoolLit */ + reduce(33), /* %, reduce: BoolLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(30), /* ), reduce: BoolLit */ + reduce(33), /* ), reduce: BoolLit */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -4922,31 +5078,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(30), /* ,, reduce: BoolLit */ + reduce(33), /* ,, reduce: BoolLit */ }, }, - actionRow{ // S126 + actionRow{ // S130 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(31), /* ||, reduce: BoolLit */ - reduce(31), /* &&, reduce: BoolLit */ - reduce(31), /* ==, reduce: BoolLit */ - reduce(31), /* !=, reduce: BoolLit */ - reduce(31), /* <, reduce: BoolLit */ - reduce(31), /* <=, reduce: BoolLit */ - reduce(31), /* >, reduce: BoolLit */ - reduce(31), /* >=, reduce: BoolLit */ - reduce(31), /* +, reduce: BoolLit */ - reduce(31), /* -, reduce: BoolLit */ - reduce(31), /* *, reduce: BoolLit */ - reduce(31), /* /, reduce: BoolLit */ - reduce(31), /* %, reduce: BoolLit */ + reduce(34), /* ||, reduce: BoolLit */ + reduce(34), /* &&, reduce: BoolLit */ + reduce(34), /* ==, reduce: BoolLit */ + reduce(34), /* !=, reduce: BoolLit */ + reduce(34), /* <, reduce: BoolLit */ + reduce(34), /* <=, reduce: BoolLit */ + reduce(34), /* >, reduce: BoolLit */ + reduce(34), /* >=, reduce: BoolLit */ + reduce(34), /* +, reduce: BoolLit */ + reduce(34), /* -, reduce: BoolLit */ + reduce(34), /* *, reduce: BoolLit */ + reduce(34), /* /, reduce: BoolLit */ + reduce(34), /* %, reduce: BoolLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(31), /* ), reduce: BoolLit */ + reduce(34), /* ), reduce: BoolLit */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -4961,31 +5117,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(31), /* ,, reduce: BoolLit */ + reduce(34), /* ,, reduce: BoolLit */ }, }, - actionRow{ // S127 + actionRow{ // S131 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(38), /* ||, reduce: Literal */ - reduce(38), /* &&, reduce: Literal */ - reduce(38), /* ==, reduce: Literal */ - reduce(38), /* !=, reduce: Literal */ - reduce(38), /* <, reduce: Literal */ - reduce(38), /* <=, reduce: Literal */ - reduce(38), /* >, reduce: Literal */ - reduce(38), /* >=, reduce: Literal */ - reduce(38), /* +, reduce: Literal */ - reduce(38), /* -, reduce: Literal */ - reduce(38), /* *, reduce: Literal */ - reduce(38), /* /, reduce: Literal */ - reduce(38), /* %, reduce: Literal */ + reduce(41), /* ||, reduce: Literal */ + reduce(41), /* &&, reduce: Literal */ + reduce(41), /* ==, reduce: Literal */ + reduce(41), /* !=, reduce: Literal */ + reduce(41), /* <, reduce: Literal */ + reduce(41), /* <=, reduce: Literal */ + reduce(41), /* >, reduce: Literal */ + reduce(41), /* >=, reduce: Literal */ + reduce(41), /* +, reduce: Literal */ + reduce(41), /* -, reduce: Literal */ + reduce(41), /* *, reduce: Literal */ + reduce(41), /* /, reduce: Literal */ + reduce(41), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(38), /* ), reduce: Literal */ + reduce(41), /* ), reduce: Literal */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -5000,31 +5156,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(38), /* ,, reduce: Literal */ + reduce(41), /* ,, reduce: Literal */ }, }, - actionRow{ // S128 + actionRow{ // S132 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(32), /* ||, reduce: NilLit */ - reduce(32), /* &&, reduce: NilLit */ - reduce(32), /* ==, reduce: NilLit */ - reduce(32), /* !=, reduce: NilLit */ - reduce(32), /* <, reduce: NilLit */ - reduce(32), /* <=, reduce: NilLit */ - reduce(32), /* >, reduce: NilLit */ - reduce(32), /* >=, reduce: NilLit */ - reduce(32), /* +, reduce: NilLit */ - reduce(32), /* -, reduce: NilLit */ - reduce(32), /* *, reduce: NilLit */ - reduce(32), /* /, reduce: NilLit */ - reduce(32), /* %, reduce: NilLit */ + reduce(35), /* ||, reduce: NilLit */ + reduce(35), /* &&, reduce: NilLit */ + reduce(35), /* ==, reduce: NilLit */ + reduce(35), /* !=, reduce: NilLit */ + reduce(35), /* <, reduce: NilLit */ + reduce(35), /* <=, reduce: NilLit */ + reduce(35), /* >, reduce: NilLit */ + reduce(35), /* >=, reduce: NilLit */ + reduce(35), /* +, reduce: NilLit */ + reduce(35), /* -, reduce: NilLit */ + reduce(35), /* *, reduce: NilLit */ + reduce(35), /* /, reduce: NilLit */ + reduce(35), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(32), /* ), reduce: NilLit */ + reduce(35), /* ), reduce: NilLit */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -5039,31 +5195,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(32), /* ,, reduce: NilLit */ + reduce(35), /* ,, reduce: NilLit */ }, }, - actionRow{ // S129 + actionRow{ // S133 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(33), /* ||, reduce: NilLit */ - reduce(33), /* &&, reduce: NilLit */ - reduce(33), /* ==, reduce: NilLit */ - reduce(33), /* !=, reduce: NilLit */ - reduce(33), /* <, reduce: NilLit */ - reduce(33), /* <=, reduce: NilLit */ - reduce(33), /* >, reduce: NilLit */ - reduce(33), /* >=, reduce: NilLit */ - reduce(33), /* +, reduce: NilLit */ - reduce(33), /* -, reduce: NilLit */ - reduce(33), /* *, reduce: NilLit */ - reduce(33), /* /, reduce: NilLit */ - reduce(33), /* %, reduce: NilLit */ + reduce(36), /* ||, reduce: NilLit */ + reduce(36), /* &&, reduce: NilLit */ + reduce(36), /* ==, reduce: NilLit */ + reduce(36), /* !=, reduce: NilLit */ + reduce(36), /* <, reduce: NilLit */ + reduce(36), /* <=, reduce: NilLit */ + reduce(36), /* >, reduce: NilLit */ + reduce(36), /* >=, reduce: NilLit */ + reduce(36), /* +, reduce: NilLit */ + reduce(36), /* -, reduce: NilLit */ + reduce(36), /* *, reduce: NilLit */ + reduce(36), /* /, reduce: NilLit */ + reduce(36), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(33), /* ), reduce: NilLit */ + reduce(36), /* ), reduce: NilLit */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -5078,31 +5234,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(33), /* ,, reduce: NilLit */ + reduce(36), /* ,, reduce: NilLit */ }, }, - actionRow{ // S130 + actionRow{ // S134 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(34), /* ||, reduce: Literal */ - reduce(34), /* &&, reduce: Literal */ - reduce(34), /* ==, reduce: Literal */ - reduce(34), /* !=, reduce: Literal */ - reduce(34), /* <, reduce: Literal */ - reduce(34), /* <=, reduce: Literal */ - reduce(34), /* >, reduce: Literal */ - reduce(34), /* >=, reduce: Literal */ - reduce(34), /* +, reduce: Literal */ - reduce(34), /* -, reduce: Literal */ - reduce(34), /* *, reduce: Literal */ - reduce(34), /* /, reduce: Literal */ - reduce(34), /* %, reduce: Literal */ + reduce(37), /* ||, reduce: Literal */ + reduce(37), /* &&, reduce: Literal */ + reduce(37), /* ==, reduce: Literal */ + reduce(37), /* !=, reduce: Literal */ + reduce(37), /* <, reduce: Literal */ + reduce(37), /* <=, reduce: Literal */ + reduce(37), /* >, reduce: Literal */ + reduce(37), /* >=, reduce: Literal */ + reduce(37), /* +, reduce: Literal */ + reduce(37), /* -, reduce: Literal */ + reduce(37), /* *, reduce: Literal */ + reduce(37), /* /, reduce: Literal */ + reduce(37), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(34), /* ), reduce: Literal */ + reduce(37), /* ), reduce: Literal */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -5117,31 +5273,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(34), /* ,, reduce: Literal */ + reduce(37), /* ,, reduce: Literal */ }, }, - actionRow{ // S131 + actionRow{ // S135 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(35), /* ||, reduce: Literal */ - reduce(35), /* &&, reduce: Literal */ - reduce(35), /* ==, reduce: Literal */ - reduce(35), /* !=, reduce: Literal */ - reduce(35), /* <, reduce: Literal */ - reduce(35), /* <=, reduce: Literal */ - reduce(35), /* >, reduce: Literal */ - reduce(35), /* >=, reduce: Literal */ - reduce(35), /* +, reduce: Literal */ - reduce(35), /* -, reduce: Literal */ - reduce(35), /* *, reduce: Literal */ - reduce(35), /* /, reduce: Literal */ - reduce(35), /* %, reduce: Literal */ + reduce(38), /* ||, reduce: Literal */ + reduce(38), /* &&, reduce: Literal */ + reduce(38), /* ==, reduce: Literal */ + reduce(38), /* !=, reduce: Literal */ + reduce(38), /* <, reduce: Literal */ + reduce(38), /* <=, reduce: Literal */ + reduce(38), /* >, reduce: Literal */ + reduce(38), /* >=, reduce: Literal */ + reduce(38), /* +, reduce: Literal */ + reduce(38), /* -, reduce: Literal */ + reduce(38), /* *, reduce: Literal */ + reduce(38), /* /, reduce: Literal */ + reduce(38), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(35), /* ), reduce: Literal */ + reduce(38), /* ), reduce: Literal */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -5156,31 +5312,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(35), /* ,, reduce: Literal */ + reduce(38), /* ,, reduce: Literal */ }, }, - actionRow{ // S132 + actionRow{ // S136 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(36), /* ||, reduce: Literal */ - reduce(36), /* &&, reduce: Literal */ - reduce(36), /* ==, reduce: Literal */ - reduce(36), /* !=, reduce: Literal */ - reduce(36), /* <, reduce: Literal */ - reduce(36), /* <=, reduce: Literal */ - reduce(36), /* >, reduce: Literal */ - reduce(36), /* >=, reduce: Literal */ - reduce(36), /* +, reduce: Literal */ - reduce(36), /* -, reduce: Literal */ - reduce(36), /* *, reduce: Literal */ - reduce(36), /* /, reduce: Literal */ - reduce(36), /* %, reduce: Literal */ + reduce(39), /* ||, reduce: Literal */ + reduce(39), /* &&, reduce: Literal */ + reduce(39), /* ==, reduce: Literal */ + reduce(39), /* !=, reduce: Literal */ + reduce(39), /* <, reduce: Literal */ + reduce(39), /* <=, reduce: Literal */ + reduce(39), /* >, reduce: Literal */ + reduce(39), /* >=, reduce: Literal */ + reduce(39), /* +, reduce: Literal */ + reduce(39), /* -, reduce: Literal */ + reduce(39), /* *, reduce: Literal */ + reduce(39), /* /, reduce: Literal */ + reduce(39), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(36), /* ), reduce: Literal */ + reduce(39), /* ), reduce: Literal */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -5195,10 +5351,10 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(36), /* ,, reduce: Literal */ + reduce(39), /* ,, reduce: Literal */ }, }, - actionRow{ // S133 + actionRow{ // S137 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -5231,13 +5387,13 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - shift(202), /* selector */ - shift(203), /* index */ + shift(234), /* selector */ + shift(235), /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S134 + actionRow{ // S138 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -5258,7 +5414,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(45), /* ), reduce: Args */ + reduce(48), /* ), reduce: Args */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -5273,49 +5429,49 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - shift(204), /* , */ + shift(236), /* , */ }, }, - actionRow{ // S135 + actionRow{ // S139 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S136 + actionRow{ // S140 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -5354,163 +5510,1411 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S137 + actionRow{ // S141 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(32), /* ?, reduce: TernaryArgument */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S138 + actionRow{ // S142 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S139 + actionRow{ // S143 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S144 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S145 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S146 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S147 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S148 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S149 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S150 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S151 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S152 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S153 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(155), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S154 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(22), /* ||, reduce: Expr5 */ + reduce(22), /* &&, reduce: Expr5 */ + reduce(22), /* ==, reduce: Expr5 */ + reduce(22), /* !=, reduce: Expr5 */ + reduce(22), /* <, reduce: Expr5 */ + reduce(22), /* <=, reduce: Expr5 */ + reduce(22), /* >, reduce: Expr5 */ + reduce(22), /* >=, reduce: Expr5 */ + reduce(22), /* +, reduce: Expr5 */ + reduce(22), /* -, reduce: Expr5 */ + reduce(22), /* *, reduce: Expr5 */ + reduce(22), /* /, reduce: Expr5 */ + reduce(22), /* %, reduce: Expr5 */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + reduce(22), /* ), reduce: Expr5 */ + nil, /* functionName */ + reduce(22), /* ?, reduce: Expr5 */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S155 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S156 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(23), /* ||, reduce: Expr5 */ + reduce(23), /* &&, reduce: Expr5 */ + reduce(23), /* ==, reduce: Expr5 */ + reduce(23), /* !=, reduce: Expr5 */ + reduce(23), /* <, reduce: Expr5 */ + reduce(23), /* <=, reduce: Expr5 */ + reduce(23), /* >, reduce: Expr5 */ + reduce(23), /* >=, reduce: Expr5 */ + reduce(23), /* +, reduce: Expr5 */ + reduce(23), /* -, reduce: Expr5 */ + reduce(23), /* *, reduce: Expr5 */ + reduce(23), /* /, reduce: Expr5 */ + reduce(23), /* %, reduce: Expr5 */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + reduce(23), /* ), reduce: Expr5 */ + nil, /* functionName */ + reduce(23), /* ?, reduce: Expr5 */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S157 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(118), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S158 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + shift(139), /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + shift(252), /* ) */ + nil, /* functionName */ + reduce(30), /* ?, reduce: TernaryArgument */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S159 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(118), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S160 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(177), /* ( */ + nil, /* ) */ + shift(178), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S161 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(42), /* ||, reduce: Literal */ + reduce(42), /* &&, reduce: Literal */ + reduce(42), /* ==, reduce: Literal */ + reduce(42), /* !=, reduce: Literal */ + reduce(42), /* <, reduce: Literal */ + reduce(42), /* <=, reduce: Literal */ + reduce(42), /* >, reduce: Literal */ + reduce(42), /* >=, reduce: Literal */ + reduce(42), /* +, reduce: Literal */ + reduce(42), /* -, reduce: Literal */ + reduce(42), /* *, reduce: Literal */ + reduce(42), /* /, reduce: Literal */ + reduce(42), /* %, reduce: Literal */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + reduce(42), /* ), reduce: Literal */ + nil, /* functionName */ + reduce(42), /* ?, reduce: Literal */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + shift(255), /* selector */ + shift(256), /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S162 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(43), /* ||, reduce: Ref */ + reduce(43), /* &&, reduce: Ref */ + reduce(43), /* ==, reduce: Ref */ + reduce(43), /* !=, reduce: Ref */ + reduce(43), /* <, reduce: Ref */ + reduce(43), /* <=, reduce: Ref */ + reduce(43), /* >, reduce: Ref */ + reduce(43), /* >=, reduce: Ref */ + reduce(43), /* +, reduce: Ref */ + reduce(43), /* -, reduce: Ref */ + reduce(43), /* *, reduce: Ref */ + reduce(43), /* /, reduce: Ref */ + reduce(43), /* %, reduce: Ref */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + reduce(43), /* ), reduce: Ref */ + nil, /* functionName */ + reduce(43), /* ?, reduce: Ref */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + reduce(43), /* selector, reduce: Ref */ + reduce(43), /* index, reduce: Ref */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S163 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(44), /* ||, reduce: Ref */ + reduce(44), /* &&, reduce: Ref */ + reduce(44), /* ==, reduce: Ref */ + reduce(44), /* !=, reduce: Ref */ + reduce(44), /* <, reduce: Ref */ + reduce(44), /* <=, reduce: Ref */ + reduce(44), /* >, reduce: Ref */ + reduce(44), /* >=, reduce: Ref */ + reduce(44), /* +, reduce: Ref */ + reduce(44), /* -, reduce: Ref */ + reduce(44), /* *, reduce: Ref */ + reduce(44), /* /, reduce: Ref */ + reduce(44), /* %, reduce: Ref */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + reduce(44), /* ), reduce: Ref */ + nil, /* functionName */ + reduce(44), /* ?, reduce: Ref */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + reduce(44), /* selector, reduce: Ref */ + reduce(44), /* index, reduce: Ref */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S164 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + shift(257), /* ) */ + nil, /* functionName */ + nil, /* ? */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S165 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + shift(258), /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(30), /* ?, reduce: TernaryArgument */ + reduce(30), /* :, reduce: TernaryArgument */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S166 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(31), /* ?, reduce: TernaryArgument */ + reduce(31), /* :, reduce: TernaryArgument */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S167 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(4), /* ||, reduce: Expr */ + shift(259), /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(4), /* ?, reduce: Expr */ + reduce(4), /* :, reduce: Expr */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S168 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(6), /* ||, reduce: Expr1 */ + reduce(6), /* &&, reduce: Expr1 */ + shift(260), /* == */ + shift(261), /* != */ + shift(262), /* < */ + shift(263), /* <= */ + shift(264), /* > */ + shift(265), /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(6), /* ?, reduce: Expr1 */ + reduce(6), /* :, reduce: Expr1 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S169 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(13), /* ||, reduce: Expr2 */ + reduce(13), /* &&, reduce: Expr2 */ + reduce(13), /* ==, reduce: Expr2 */ + reduce(13), /* !=, reduce: Expr2 */ + reduce(13), /* <, reduce: Expr2 */ + reduce(13), /* <=, reduce: Expr2 */ + reduce(13), /* >, reduce: Expr2 */ + reduce(13), /* >=, reduce: Expr2 */ + shift(266), /* + */ + shift(267), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(13), /* ?, reduce: Expr2 */ + reduce(13), /* :, reduce: Expr2 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S170 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(16), /* ||, reduce: Expr3 */ + reduce(16), /* &&, reduce: Expr3 */ + reduce(16), /* ==, reduce: Expr3 */ + reduce(16), /* !=, reduce: Expr3 */ + reduce(16), /* <, reduce: Expr3 */ + reduce(16), /* <=, reduce: Expr3 */ + reduce(16), /* >, reduce: Expr3 */ + reduce(16), /* >=, reduce: Expr3 */ + reduce(16), /* +, reduce: Expr3 */ + reduce(16), /* -, reduce: Expr3 */ + shift(268), /* * */ + shift(269), /* / */ + shift(270), /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(16), /* ?, reduce: Expr3 */ + reduce(16), /* :, reduce: Expr3 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S171 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ + nil, /* ) */ + shift(178), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S172 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(20), /* ||, reduce: Expr4 */ + reduce(20), /* &&, reduce: Expr4 */ + reduce(20), /* ==, reduce: Expr4 */ + reduce(20), /* !=, reduce: Expr4 */ + reduce(20), /* <, reduce: Expr4 */ + reduce(20), /* <=, reduce: Expr4 */ + reduce(20), /* >, reduce: Expr4 */ + reduce(20), /* >=, reduce: Expr4 */ + reduce(20), /* +, reduce: Expr4 */ + reduce(20), /* -, reduce: Expr4 */ + reduce(20), /* *, reduce: Expr4 */ + reduce(20), /* /, reduce: Expr4 */ + reduce(20), /* %, reduce: Expr4 */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(20), /* ?, reduce: Expr4 */ + reduce(20), /* :, reduce: Expr4 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S173 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(21), /* ||, reduce: Expr5 */ + reduce(21), /* &&, reduce: Expr5 */ + reduce(21), /* ==, reduce: Expr5 */ + reduce(21), /* !=, reduce: Expr5 */ + reduce(21), /* <, reduce: Expr5 */ + reduce(21), /* <=, reduce: Expr5 */ + reduce(21), /* >, reduce: Expr5 */ + reduce(21), /* >=, reduce: Expr5 */ + reduce(21), /* +, reduce: Expr5 */ + reduce(21), /* -, reduce: Expr5 */ + reduce(21), /* *, reduce: Expr5 */ + reduce(21), /* /, reduce: Expr5 */ + reduce(21), /* %, reduce: Expr5 */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(21), /* ?, reduce: Expr5 */ + reduce(21), /* :, reduce: Expr5 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S174 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ + nil, /* ) */ + shift(178), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S175 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(24), /* ||, reduce: Expr6 */ + reduce(24), /* &&, reduce: Expr6 */ + reduce(24), /* ==, reduce: Expr6 */ + reduce(24), /* !=, reduce: Expr6 */ + reduce(24), /* <, reduce: Expr6 */ + reduce(24), /* <=, reduce: Expr6 */ + reduce(24), /* >, reduce: Expr6 */ + reduce(24), /* >=, reduce: Expr6 */ + reduce(24), /* +, reduce: Expr6 */ + reduce(24), /* -, reduce: Expr6 */ + reduce(24), /* *, reduce: Expr6 */ + reduce(24), /* /, reduce: Expr6 */ + reduce(24), /* %, reduce: Expr6 */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(24), /* ?, reduce: Expr6 */ + reduce(24), /* :, reduce: Expr6 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S140 + actionRow{ // S176 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + shift(274), /* ( */ + nil, /* ) */ + nil, /* functionName */ + nil, /* ? */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S141 + actionRow{ // S177 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -5524,329 +6928,368 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(49), /* - */ + shift(51), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(57), /* ( */ nil, /* ) */ - shift(56), /* functionName */ + shift(58), /* functionName */ nil, /* ? */ nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S142 + actionRow{ // S178 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + shift(277), /* ( */ + nil, /* ) */ + nil, /* functionName */ + nil, /* ? */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S143 + actionRow{ // S179 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + reduce(27), /* ||, reduce: PrimaryExpr */ + reduce(27), /* &&, reduce: PrimaryExpr */ + reduce(27), /* ==, reduce: PrimaryExpr */ + reduce(27), /* !=, reduce: PrimaryExpr */ + reduce(27), /* <, reduce: PrimaryExpr */ + reduce(27), /* <=, reduce: PrimaryExpr */ + reduce(27), /* >, reduce: PrimaryExpr */ + reduce(27), /* >=, reduce: PrimaryExpr */ + reduce(27), /* +, reduce: PrimaryExpr */ + reduce(27), /* -, reduce: PrimaryExpr */ + reduce(27), /* *, reduce: PrimaryExpr */ + reduce(27), /* /, reduce: PrimaryExpr */ + reduce(27), /* %, reduce: PrimaryExpr */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(27), /* ?, reduce: PrimaryExpr */ + reduce(27), /* :, reduce: PrimaryExpr */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S144 + actionRow{ // S180 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + shift(278), /* ? */ + shift(279), /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S181 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(40), /* ||, reduce: Literal */ + reduce(40), /* &&, reduce: Literal */ + reduce(40), /* ==, reduce: Literal */ + reduce(40), /* !=, reduce: Literal */ + reduce(40), /* <, reduce: Literal */ + reduce(40), /* <=, reduce: Literal */ + reduce(40), /* >, reduce: Literal */ + reduce(40), /* >=, reduce: Literal */ + reduce(40), /* +, reduce: Literal */ + reduce(40), /* -, reduce: Literal */ + reduce(40), /* *, reduce: Literal */ + reduce(40), /* /, reduce: Literal */ + reduce(40), /* %, reduce: Literal */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(40), /* ?, reduce: Literal */ + reduce(40), /* :, reduce: Literal */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S145 + actionRow{ // S182 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + reduce(33), /* ||, reduce: BoolLit */ + reduce(33), /* &&, reduce: BoolLit */ + reduce(33), /* ==, reduce: BoolLit */ + reduce(33), /* !=, reduce: BoolLit */ + reduce(33), /* <, reduce: BoolLit */ + reduce(33), /* <=, reduce: BoolLit */ + reduce(33), /* >, reduce: BoolLit */ + reduce(33), /* >=, reduce: BoolLit */ + reduce(33), /* +, reduce: BoolLit */ + reduce(33), /* -, reduce: BoolLit */ + reduce(33), /* *, reduce: BoolLit */ + reduce(33), /* /, reduce: BoolLit */ + reduce(33), /* %, reduce: BoolLit */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(33), /* ?, reduce: BoolLit */ + reduce(33), /* :, reduce: BoolLit */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S146 + actionRow{ // S183 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + reduce(34), /* ||, reduce: BoolLit */ + reduce(34), /* &&, reduce: BoolLit */ + reduce(34), /* ==, reduce: BoolLit */ + reduce(34), /* !=, reduce: BoolLit */ + reduce(34), /* <, reduce: BoolLit */ + reduce(34), /* <=, reduce: BoolLit */ + reduce(34), /* >, reduce: BoolLit */ + reduce(34), /* >=, reduce: BoolLit */ + reduce(34), /* +, reduce: BoolLit */ + reduce(34), /* -, reduce: BoolLit */ + reduce(34), /* *, reduce: BoolLit */ + reduce(34), /* /, reduce: BoolLit */ + reduce(34), /* %, reduce: BoolLit */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(34), /* ?, reduce: BoolLit */ + reduce(34), /* :, reduce: BoolLit */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S147 + actionRow{ // S184 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + reduce(41), /* ||, reduce: Literal */ + reduce(41), /* &&, reduce: Literal */ + reduce(41), /* ==, reduce: Literal */ + reduce(41), /* !=, reduce: Literal */ + reduce(41), /* <, reduce: Literal */ + reduce(41), /* <=, reduce: Literal */ + reduce(41), /* >, reduce: Literal */ + reduce(41), /* >=, reduce: Literal */ + reduce(41), /* +, reduce: Literal */ + reduce(41), /* -, reduce: Literal */ + reduce(41), /* *, reduce: Literal */ + reduce(41), /* /, reduce: Literal */ + reduce(41), /* %, reduce: Literal */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(41), /* ?, reduce: Literal */ + reduce(41), /* :, reduce: Literal */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S148 + actionRow{ // S185 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + reduce(35), /* ||, reduce: NilLit */ + reduce(35), /* &&, reduce: NilLit */ + reduce(35), /* ==, reduce: NilLit */ + reduce(35), /* !=, reduce: NilLit */ + reduce(35), /* <, reduce: NilLit */ + reduce(35), /* <=, reduce: NilLit */ + reduce(35), /* >, reduce: NilLit */ + reduce(35), /* >=, reduce: NilLit */ + reduce(35), /* +, reduce: NilLit */ + reduce(35), /* -, reduce: NilLit */ + reduce(35), /* *, reduce: NilLit */ + reduce(35), /* /, reduce: NilLit */ + reduce(35), /* %, reduce: NilLit */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(35), /* ?, reduce: NilLit */ + reduce(35), /* :, reduce: NilLit */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S149 + actionRow{ // S186 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(22), /* ||, reduce: Expr5 */ - reduce(22), /* &&, reduce: Expr5 */ - reduce(22), /* ==, reduce: Expr5 */ - reduce(22), /* !=, reduce: Expr5 */ - reduce(22), /* <, reduce: Expr5 */ - reduce(22), /* <=, reduce: Expr5 */ - reduce(22), /* >, reduce: Expr5 */ - reduce(22), /* >=, reduce: Expr5 */ - reduce(22), /* +, reduce: Expr5 */ - reduce(22), /* -, reduce: Expr5 */ - reduce(22), /* *, reduce: Expr5 */ - reduce(22), /* /, reduce: Expr5 */ - reduce(22), /* %, reduce: Expr5 */ + reduce(36), /* ||, reduce: NilLit */ + reduce(36), /* &&, reduce: NilLit */ + reduce(36), /* ==, reduce: NilLit */ + reduce(36), /* !=, reduce: NilLit */ + reduce(36), /* <, reduce: NilLit */ + reduce(36), /* <=, reduce: NilLit */ + reduce(36), /* >, reduce: NilLit */ + reduce(36), /* >=, reduce: NilLit */ + reduce(36), /* +, reduce: NilLit */ + reduce(36), /* -, reduce: NilLit */ + reduce(36), /* *, reduce: NilLit */ + reduce(36), /* /, reduce: NilLit */ + reduce(36), /* %, reduce: NilLit */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(22), /* ), reduce: Expr5 */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(36), /* ?, reduce: NilLit */ + reduce(36), /* :, reduce: NilLit */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -5861,31 +7304,70 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S150 + actionRow{ // S187 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(23), /* ||, reduce: Expr5 */ - reduce(23), /* &&, reduce: Expr5 */ - reduce(23), /* ==, reduce: Expr5 */ - reduce(23), /* !=, reduce: Expr5 */ - reduce(23), /* <, reduce: Expr5 */ - reduce(23), /* <=, reduce: Expr5 */ - reduce(23), /* >, reduce: Expr5 */ - reduce(23), /* >=, reduce: Expr5 */ - reduce(23), /* +, reduce: Expr5 */ - reduce(23), /* -, reduce: Expr5 */ - reduce(23), /* *, reduce: Expr5 */ - reduce(23), /* /, reduce: Expr5 */ - reduce(23), /* %, reduce: Expr5 */ + reduce(37), /* ||, reduce: Literal */ + reduce(37), /* &&, reduce: Literal */ + reduce(37), /* ==, reduce: Literal */ + reduce(37), /* !=, reduce: Literal */ + reduce(37), /* <, reduce: Literal */ + reduce(37), /* <=, reduce: Literal */ + reduce(37), /* >, reduce: Literal */ + reduce(37), /* >=, reduce: Literal */ + reduce(37), /* +, reduce: Literal */ + reduce(37), /* -, reduce: Literal */ + reduce(37), /* *, reduce: Literal */ + reduce(37), /* /, reduce: Literal */ + reduce(37), /* %, reduce: Literal */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + nil, /* ) */ + nil, /* functionName */ + reduce(37), /* ?, reduce: Literal */ + reduce(37), /* :, reduce: Literal */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S188 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + reduce(38), /* ||, reduce: Literal */ + reduce(38), /* &&, reduce: Literal */ + reduce(38), /* ==, reduce: Literal */ + reduce(38), /* !=, reduce: Literal */ + reduce(38), /* <, reduce: Literal */ + reduce(38), /* <=, reduce: Literal */ + reduce(38), /* >, reduce: Literal */ + reduce(38), /* >=, reduce: Literal */ + reduce(38), /* +, reduce: Literal */ + reduce(38), /* -, reduce: Literal */ + reduce(38), /* *, reduce: Literal */ + reduce(38), /* /, reduce: Literal */ + reduce(38), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(23), /* ), reduce: Expr5 */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(38), /* ?, reduce: Literal */ + reduce(38), /* :, reduce: Literal */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -5900,70 +7382,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S151 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(114), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S152 + actionRow{ // S189 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - shift(135), /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - nil, /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + reduce(39), /* ||, reduce: Literal */ + reduce(39), /* &&, reduce: Literal */ + reduce(39), /* ==, reduce: Literal */ + reduce(39), /* !=, reduce: Literal */ + reduce(39), /* <, reduce: Literal */ + reduce(39), /* <=, reduce: Literal */ + reduce(39), /* >, reduce: Literal */ + reduce(39), /* >=, reduce: Literal */ + reduce(39), /* +, reduce: Literal */ + reduce(39), /* -, reduce: Literal */ + reduce(39), /* *, reduce: Literal */ + reduce(39), /* /, reduce: Literal */ + reduce(39), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(219), /* ) */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(39), /* ?, reduce: Literal */ + reduce(39), /* :, reduce: Literal */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -5978,7 +7421,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S153 + actionRow{ // S190 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -5992,53 +7435,14 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + nil, /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S154 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - reduce(39), /* ||, reduce: Literal */ - reduce(39), /* &&, reduce: Literal */ - reduce(39), /* ==, reduce: Literal */ - reduce(39), /* !=, reduce: Literal */ - reduce(39), /* <, reduce: Literal */ - reduce(39), /* <=, reduce: Literal */ - reduce(39), /* >, reduce: Literal */ - reduce(39), /* >=, reduce: Literal */ - reduce(39), /* +, reduce: Literal */ - reduce(39), /* -, reduce: Literal */ - reduce(39), /* *, reduce: Literal */ - reduce(39), /* /, reduce: Literal */ - reduce(39), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(39), /* ), reduce: Literal */ + nil, /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -6050,36 +7454,36 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - shift(221), /* selector */ - shift(222), /* index */ + shift(281), /* selector */ + shift(282), /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S155 + actionRow{ // S191 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(40), /* ||, reduce: Ref */ - reduce(40), /* &&, reduce: Ref */ - reduce(40), /* ==, reduce: Ref */ - reduce(40), /* !=, reduce: Ref */ - reduce(40), /* <, reduce: Ref */ - reduce(40), /* <=, reduce: Ref */ - reduce(40), /* >, reduce: Ref */ - reduce(40), /* >=, reduce: Ref */ - reduce(40), /* +, reduce: Ref */ - reduce(40), /* -, reduce: Ref */ - reduce(40), /* *, reduce: Ref */ - reduce(40), /* /, reduce: Ref */ - reduce(40), /* %, reduce: Ref */ + reduce(45), /* $, reduce: Ref */ + reduce(45), /* ||, reduce: Ref */ + reduce(45), /* &&, reduce: Ref */ + reduce(45), /* ==, reduce: Ref */ + reduce(45), /* !=, reduce: Ref */ + reduce(45), /* <, reduce: Ref */ + reduce(45), /* <=, reduce: Ref */ + reduce(45), /* >, reduce: Ref */ + reduce(45), /* >=, reduce: Ref */ + reduce(45), /* +, reduce: Ref */ + reduce(45), /* -, reduce: Ref */ + reduce(45), /* *, reduce: Ref */ + reduce(45), /* /, reduce: Ref */ + reduce(45), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(40), /* ), reduce: Ref */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(45), /* ?, reduce: Ref */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -6089,36 +7493,36 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(40), /* selector, reduce: Ref */ - reduce(40), /* index, reduce: Ref */ + reduce(45), /* selector, reduce: Ref */ + reduce(45), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S156 + actionRow{ // S192 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(41), /* ||, reduce: Ref */ - reduce(41), /* &&, reduce: Ref */ - reduce(41), /* ==, reduce: Ref */ - reduce(41), /* !=, reduce: Ref */ - reduce(41), /* <, reduce: Ref */ - reduce(41), /* <=, reduce: Ref */ - reduce(41), /* >, reduce: Ref */ - reduce(41), /* >=, reduce: Ref */ - reduce(41), /* +, reduce: Ref */ - reduce(41), /* -, reduce: Ref */ - reduce(41), /* *, reduce: Ref */ - reduce(41), /* /, reduce: Ref */ - reduce(41), /* %, reduce: Ref */ + reduce(46), /* $, reduce: Ref */ + reduce(46), /* ||, reduce: Ref */ + reduce(46), /* &&, reduce: Ref */ + reduce(46), /* ==, reduce: Ref */ + reduce(46), /* !=, reduce: Ref */ + reduce(46), /* <, reduce: Ref */ + reduce(46), /* <=, reduce: Ref */ + reduce(46), /* >, reduce: Ref */ + reduce(46), /* >=, reduce: Ref */ + reduce(46), /* +, reduce: Ref */ + reduce(46), /* -, reduce: Ref */ + reduce(46), /* *, reduce: Ref */ + reduce(46), /* /, reduce: Ref */ + reduce(46), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(41), /* ), reduce: Ref */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(46), /* ?, reduce: Ref */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -6128,13 +7532,13 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(41), /* selector, reduce: Ref */ - reduce(41), /* index, reduce: Ref */ + reduce(46), /* selector, reduce: Ref */ + reduce(46), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S157 + actionRow{ // S193 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -6148,149 +7552,188 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - nil, /* - */ + shift(94), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - shift(223), /* ) */ - nil, /* functionName */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S158 + actionRow{ // S194 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(42), /* $, reduce: Ref */ - reduce(42), /* ||, reduce: Ref */ - reduce(42), /* &&, reduce: Ref */ - reduce(42), /* ==, reduce: Ref */ - reduce(42), /* !=, reduce: Ref */ - reduce(42), /* <, reduce: Ref */ - reduce(42), /* <=, reduce: Ref */ - reduce(42), /* >, reduce: Ref */ - reduce(42), /* >=, reduce: Ref */ - reduce(42), /* +, reduce: Ref */ - reduce(42), /* -, reduce: Ref */ - reduce(42), /* *, reduce: Ref */ - reduce(42), /* /, reduce: Ref */ - reduce(42), /* %, reduce: Ref */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ nil, /* ) */ - nil, /* functionName */ - reduce(42), /* ?, reduce: Ref */ + shift(101), /* functionName */ + nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - reduce(42), /* selector, reduce: Ref */ - reduce(42), /* index, reduce: Ref */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S159 + actionRow{ // S195 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(43), /* $, reduce: Ref */ - reduce(43), /* ||, reduce: Ref */ - reduce(43), /* &&, reduce: Ref */ - reduce(43), /* ==, reduce: Ref */ - reduce(43), /* !=, reduce: Ref */ - reduce(43), /* <, reduce: Ref */ - reduce(43), /* <=, reduce: Ref */ - reduce(43), /* >, reduce: Ref */ - reduce(43), /* >=, reduce: Ref */ - reduce(43), /* +, reduce: Ref */ - reduce(43), /* -, reduce: Ref */ - reduce(43), /* *, reduce: Ref */ - reduce(43), /* /, reduce: Ref */ - reduce(43), /* %, reduce: Ref */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ nil, /* ) */ - nil, /* functionName */ - reduce(43), /* ?, reduce: Ref */ + shift(101), /* functionName */ + nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - reduce(43), /* selector, reduce: Ref */ - reduce(43), /* index, reduce: Ref */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S160 + actionRow{ // S196 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S197 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S161 + actionRow{ // S198 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -6304,500 +7747,305 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(230), /* - */ + shift(94), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ nil, /* ) */ - shift(237), /* functionName */ + shift(101), /* functionName */ nil, /* ? */ nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S162 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S163 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S164 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S165 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S166 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S167 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S168 + actionRow{ // S199 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S169 + actionRow{ // S200 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S170 + actionRow{ // S201 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S171 + actionRow{ // S202 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S172 + actionRow{ // S203 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S173 + actionRow{ // S204 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(78), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(81), /* ! */ - shift(83), /* ident */ - shift(84), /* ( */ - nil, /* ) */ - shift(85), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(88), /* true */ - shift(89), /* false */ - shift(91), /* nil */ - shift(92), /* null */ - shift(93), /* intLit */ - shift(94), /* floatLit */ - shift(95), /* stringLit */ - shift(96), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S174 + actionRow{ // S205 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ + nil, /* ) */ + shift(101), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S206 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -6818,10 +8066,10 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(22), /* ), reduce: Expr5 */ nil, /* functionName */ nil, /* ? */ - reduce(22), /* :, reduce: Expr5 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -6836,7 +8084,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S175 + actionRow{ // S207 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -6857,10 +8105,10 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(23), /* ), reduce: Expr5 */ nil, /* functionName */ nil, /* ? */ - reduce(23), /* :, reduce: Expr5 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -6875,7 +8123,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S176 + actionRow{ // S208 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -6889,37 +8137,37 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S177 + actionRow{ // S209 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - shift(135), /* || */ + shift(193), /* || */ nil, /* && */ nil, /* == */ nil, /* != */ @@ -6935,7 +8183,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(262), /* ) */ + shift(297), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -6953,7 +8201,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S178 + actionRow{ // S210 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -6967,56 +8215,56 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S179 + actionRow{ // S211 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(39), /* ||, reduce: Literal */ - reduce(39), /* &&, reduce: Literal */ - reduce(39), /* ==, reduce: Literal */ - reduce(39), /* !=, reduce: Literal */ - reduce(39), /* <, reduce: Literal */ - reduce(39), /* <=, reduce: Literal */ - reduce(39), /* >, reduce: Literal */ - reduce(39), /* >=, reduce: Literal */ - reduce(39), /* +, reduce: Literal */ - reduce(39), /* -, reduce: Literal */ - reduce(39), /* *, reduce: Literal */ - reduce(39), /* /, reduce: Literal */ - reduce(39), /* %, reduce: Literal */ + reduce(42), /* ||, reduce: Literal */ + reduce(42), /* &&, reduce: Literal */ + reduce(42), /* ==, reduce: Literal */ + reduce(42), /* !=, reduce: Literal */ + reduce(42), /* <, reduce: Literal */ + reduce(42), /* <=, reduce: Literal */ + reduce(42), /* >, reduce: Literal */ + reduce(42), /* >=, reduce: Literal */ + reduce(42), /* +, reduce: Literal */ + reduce(42), /* -, reduce: Literal */ + reduce(42), /* *, reduce: Literal */ + reduce(42), /* /, reduce: Literal */ + reduce(42), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(42), /* ), reduce: Literal */ nil, /* functionName */ nil, /* ? */ - reduce(39), /* :, reduce: Literal */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -7025,37 +8273,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - shift(264), /* selector */ - shift(265), /* index */ + shift(299), /* selector */ + shift(300), /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S180 + actionRow{ // S212 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(40), /* ||, reduce: Ref */ - reduce(40), /* &&, reduce: Ref */ - reduce(40), /* ==, reduce: Ref */ - reduce(40), /* !=, reduce: Ref */ - reduce(40), /* <, reduce: Ref */ - reduce(40), /* <=, reduce: Ref */ - reduce(40), /* >, reduce: Ref */ - reduce(40), /* >=, reduce: Ref */ - reduce(40), /* +, reduce: Ref */ - reduce(40), /* -, reduce: Ref */ - reduce(40), /* *, reduce: Ref */ - reduce(40), /* /, reduce: Ref */ - reduce(40), /* %, reduce: Ref */ + reduce(43), /* ||, reduce: Ref */ + reduce(43), /* &&, reduce: Ref */ + reduce(43), /* ==, reduce: Ref */ + reduce(43), /* !=, reduce: Ref */ + reduce(43), /* <, reduce: Ref */ + reduce(43), /* <=, reduce: Ref */ + reduce(43), /* >, reduce: Ref */ + reduce(43), /* >=, reduce: Ref */ + reduce(43), /* +, reduce: Ref */ + reduce(43), /* -, reduce: Ref */ + reduce(43), /* *, reduce: Ref */ + reduce(43), /* /, reduce: Ref */ + reduce(43), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(43), /* ), reduce: Ref */ nil, /* functionName */ nil, /* ? */ - reduce(40), /* :, reduce: Ref */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -7064,37 +8312,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(40), /* selector, reduce: Ref */ - reduce(40), /* index, reduce: Ref */ + reduce(43), /* selector, reduce: Ref */ + reduce(43), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S181 + actionRow{ // S213 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(41), /* ||, reduce: Ref */ - reduce(41), /* &&, reduce: Ref */ - reduce(41), /* ==, reduce: Ref */ - reduce(41), /* !=, reduce: Ref */ - reduce(41), /* <, reduce: Ref */ - reduce(41), /* <=, reduce: Ref */ - reduce(41), /* >, reduce: Ref */ - reduce(41), /* >=, reduce: Ref */ - reduce(41), /* +, reduce: Ref */ - reduce(41), /* -, reduce: Ref */ - reduce(41), /* *, reduce: Ref */ - reduce(41), /* /, reduce: Ref */ - reduce(41), /* %, reduce: Ref */ + reduce(44), /* ||, reduce: Ref */ + reduce(44), /* &&, reduce: Ref */ + reduce(44), /* ==, reduce: Ref */ + reduce(44), /* !=, reduce: Ref */ + reduce(44), /* <, reduce: Ref */ + reduce(44), /* <=, reduce: Ref */ + reduce(44), /* >, reduce: Ref */ + reduce(44), /* >=, reduce: Ref */ + reduce(44), /* +, reduce: Ref */ + reduce(44), /* -, reduce: Ref */ + reduce(44), /* *, reduce: Ref */ + reduce(44), /* /, reduce: Ref */ + reduce(44), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(44), /* ), reduce: Ref */ nil, /* functionName */ nil, /* ? */ - reduce(41), /* :, reduce: Ref */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -7103,13 +8351,13 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(41), /* selector, reduce: Ref */ - reduce(41), /* index, reduce: Ref */ + reduce(44), /* selector, reduce: Ref */ + reduce(44), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S182 + actionRow{ // S214 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7123,32 +8371,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S183 + actionRow{ // S215 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7162,32 +8410,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S184 + actionRow{ // S216 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7201,32 +8449,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S185 + actionRow{ // S217 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7240,32 +8488,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S186 + actionRow{ // S218 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7279,32 +8527,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S187 + actionRow{ // S219 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7318,32 +8566,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S188 + actionRow{ // S220 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7357,32 +8605,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S189 + actionRow{ // S221 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7396,32 +8644,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S190 + actionRow{ // S222 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7435,32 +8683,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S191 + actionRow{ // S223 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7474,32 +8722,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S192 + actionRow{ // S224 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7513,32 +8761,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S193 + actionRow{ // S225 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7552,32 +8800,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S194 + actionRow{ // S226 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7591,32 +8839,32 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S195 + actionRow{ // S227 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7655,7 +8903,7 @@ var actionTab = actionTable{ reduce(22), /* ,, reduce: Expr5 */ }, }, - actionRow{ // S196 + actionRow{ // S228 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7694,7 +8942,7 @@ var actionTab = actionTable{ reduce(23), /* ,, reduce: Expr5 */ }, }, - actionRow{ // S197 + actionRow{ // S229 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7708,37 +8956,37 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S198 + actionRow{ // S230 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - shift(135), /* || */ + shift(193), /* || */ nil, /* && */ nil, /* == */ nil, /* != */ @@ -7754,7 +9002,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(280), /* ) */ + shift(315), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -7772,7 +9020,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S199 + actionRow{ // S231 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7811,7 +9059,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S200 + actionRow{ // S232 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7825,53 +9073,53 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S201 + actionRow{ // S233 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(39), /* ||, reduce: Literal */ - reduce(39), /* &&, reduce: Literal */ - reduce(39), /* ==, reduce: Literal */ - reduce(39), /* !=, reduce: Literal */ - reduce(39), /* <, reduce: Literal */ - reduce(39), /* <=, reduce: Literal */ - reduce(39), /* >, reduce: Literal */ - reduce(39), /* >=, reduce: Literal */ - reduce(39), /* +, reduce: Literal */ - reduce(39), /* -, reduce: Literal */ - reduce(39), /* *, reduce: Literal */ - reduce(39), /* /, reduce: Literal */ - reduce(39), /* %, reduce: Literal */ + reduce(42), /* ||, reduce: Literal */ + reduce(42), /* &&, reduce: Literal */ + reduce(42), /* ==, reduce: Literal */ + reduce(42), /* !=, reduce: Literal */ + reduce(42), /* <, reduce: Literal */ + reduce(42), /* <=, reduce: Literal */ + reduce(42), /* >, reduce: Literal */ + reduce(42), /* >=, reduce: Literal */ + reduce(42), /* +, reduce: Literal */ + reduce(42), /* -, reduce: Literal */ + reduce(42), /* *, reduce: Literal */ + reduce(42), /* /, reduce: Literal */ + reduce(42), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(39), /* ), reduce: Literal */ + reduce(42), /* ), reduce: Literal */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -7883,34 +9131,34 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - shift(282), /* selector */ - shift(283), /* index */ + shift(317), /* selector */ + shift(318), /* index */ nil, /* empty */ - reduce(39), /* ,, reduce: Literal */ + reduce(42), /* ,, reduce: Literal */ }, }, - actionRow{ // S202 + actionRow{ // S234 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(40), /* ||, reduce: Ref */ - reduce(40), /* &&, reduce: Ref */ - reduce(40), /* ==, reduce: Ref */ - reduce(40), /* !=, reduce: Ref */ - reduce(40), /* <, reduce: Ref */ - reduce(40), /* <=, reduce: Ref */ - reduce(40), /* >, reduce: Ref */ - reduce(40), /* >=, reduce: Ref */ - reduce(40), /* +, reduce: Ref */ - reduce(40), /* -, reduce: Ref */ - reduce(40), /* *, reduce: Ref */ - reduce(40), /* /, reduce: Ref */ - reduce(40), /* %, reduce: Ref */ + reduce(43), /* ||, reduce: Ref */ + reduce(43), /* &&, reduce: Ref */ + reduce(43), /* ==, reduce: Ref */ + reduce(43), /* !=, reduce: Ref */ + reduce(43), /* <, reduce: Ref */ + reduce(43), /* <=, reduce: Ref */ + reduce(43), /* >, reduce: Ref */ + reduce(43), /* >=, reduce: Ref */ + reduce(43), /* +, reduce: Ref */ + reduce(43), /* -, reduce: Ref */ + reduce(43), /* *, reduce: Ref */ + reduce(43), /* /, reduce: Ref */ + reduce(43), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(40), /* ), reduce: Ref */ + reduce(43), /* ), reduce: Ref */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -7922,34 +9170,34 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(40), /* selector, reduce: Ref */ - reduce(40), /* index, reduce: Ref */ + reduce(43), /* selector, reduce: Ref */ + reduce(43), /* index, reduce: Ref */ nil, /* empty */ - reduce(40), /* ,, reduce: Ref */ + reduce(43), /* ,, reduce: Ref */ }, }, - actionRow{ // S203 + actionRow{ // S235 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(41), /* ||, reduce: Ref */ - reduce(41), /* &&, reduce: Ref */ - reduce(41), /* ==, reduce: Ref */ - reduce(41), /* !=, reduce: Ref */ - reduce(41), /* <, reduce: Ref */ - reduce(41), /* <=, reduce: Ref */ - reduce(41), /* >, reduce: Ref */ - reduce(41), /* >=, reduce: Ref */ - reduce(41), /* +, reduce: Ref */ - reduce(41), /* -, reduce: Ref */ - reduce(41), /* *, reduce: Ref */ - reduce(41), /* /, reduce: Ref */ - reduce(41), /* %, reduce: Ref */ + reduce(44), /* ||, reduce: Ref */ + reduce(44), /* &&, reduce: Ref */ + reduce(44), /* ==, reduce: Ref */ + reduce(44), /* !=, reduce: Ref */ + reduce(44), /* <, reduce: Ref */ + reduce(44), /* <=, reduce: Ref */ + reduce(44), /* >, reduce: Ref */ + reduce(44), /* >=, reduce: Ref */ + reduce(44), /* +, reduce: Ref */ + reduce(44), /* -, reduce: Ref */ + reduce(44), /* *, reduce: Ref */ + reduce(44), /* /, reduce: Ref */ + reduce(44), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(41), /* ), reduce: Ref */ + reduce(44), /* ), reduce: Ref */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -7961,13 +9209,13 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(41), /* selector, reduce: Ref */ - reduce(41), /* index, reduce: Ref */ + reduce(44), /* selector, reduce: Ref */ + reduce(44), /* index, reduce: Ref */ nil, /* empty */ - reduce(41), /* ,, reduce: Ref */ + reduce(44), /* ,, reduce: Ref */ }, }, - actionRow{ // S204 + actionRow{ // S236 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -7981,38 +9229,38 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + shift(118), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ nil, /* ) */ - shift(122), /* functionName */ + shift(126), /* functionName */ nil, /* ? */ nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S205 + actionRow{ // S237 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(3), /* ||, reduce: Expr */ - shift(137), /* && */ + shift(142), /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -8029,7 +9277,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(3), /* ), reduce: Expr */ nil, /* functionName */ - nil, /* ? */ + reduce(3), /* ?, reduce: Expr */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8045,19 +9293,19 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S206 + actionRow{ // S238 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(5), /* ||, reduce: Expr1 */ reduce(5), /* &&, reduce: Expr1 */ - shift(138), /* == */ - shift(139), /* != */ - shift(140), /* < */ - shift(141), /* <= */ - shift(142), /* > */ - shift(143), /* >= */ + shift(143), /* == */ + shift(144), /* != */ + shift(145), /* < */ + shift(146), /* <= */ + shift(147), /* > */ + shift(148), /* >= */ nil, /* + */ nil, /* - */ nil, /* * */ @@ -8068,7 +9316,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(5), /* ), reduce: Expr1 */ nil, /* functionName */ - nil, /* ? */ + reduce(5), /* ?, reduce: Expr1 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8084,7 +9332,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S207 + actionRow{ // S239 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8097,8 +9345,8 @@ var actionTab = actionTable{ reduce(7), /* <=, reduce: Expr2 */ reduce(7), /* >, reduce: Expr2 */ reduce(7), /* >=, reduce: Expr2 */ - shift(144), /* + */ - shift(145), /* - */ + shift(149), /* + */ + shift(150), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -8107,7 +9355,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(7), /* ), reduce: Expr2 */ nil, /* functionName */ - nil, /* ? */ + reduce(7), /* ?, reduce: Expr2 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8123,7 +9371,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S208 + actionRow{ // S240 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8136,8 +9384,8 @@ var actionTab = actionTable{ reduce(8), /* <=, reduce: Expr2 */ reduce(8), /* >, reduce: Expr2 */ reduce(8), /* >=, reduce: Expr2 */ - shift(144), /* + */ - shift(145), /* - */ + shift(149), /* + */ + shift(150), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -8146,7 +9394,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(8), /* ), reduce: Expr2 */ nil, /* functionName */ - nil, /* ? */ + reduce(8), /* ?, reduce: Expr2 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8162,7 +9410,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S209 + actionRow{ // S241 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8175,8 +9423,8 @@ var actionTab = actionTable{ reduce(9), /* <=, reduce: Expr2 */ reduce(9), /* >, reduce: Expr2 */ reduce(9), /* >=, reduce: Expr2 */ - shift(144), /* + */ - shift(145), /* - */ + shift(149), /* + */ + shift(150), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -8185,7 +9433,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(9), /* ), reduce: Expr2 */ nil, /* functionName */ - nil, /* ? */ + reduce(9), /* ?, reduce: Expr2 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8201,7 +9449,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S210 + actionRow{ // S242 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8214,8 +9462,8 @@ var actionTab = actionTable{ reduce(10), /* <=, reduce: Expr2 */ reduce(10), /* >, reduce: Expr2 */ reduce(10), /* >=, reduce: Expr2 */ - shift(144), /* + */ - shift(145), /* - */ + shift(149), /* + */ + shift(150), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -8224,7 +9472,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(10), /* ), reduce: Expr2 */ nil, /* functionName */ - nil, /* ? */ + reduce(10), /* ?, reduce: Expr2 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8240,7 +9488,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S211 + actionRow{ // S243 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8253,8 +9501,8 @@ var actionTab = actionTable{ reduce(11), /* <=, reduce: Expr2 */ reduce(11), /* >, reduce: Expr2 */ reduce(11), /* >=, reduce: Expr2 */ - shift(144), /* + */ - shift(145), /* - */ + shift(149), /* + */ + shift(150), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -8263,7 +9511,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(11), /* ), reduce: Expr2 */ nil, /* functionName */ - nil, /* ? */ + reduce(11), /* ?, reduce: Expr2 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8279,7 +9527,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S212 + actionRow{ // S244 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8292,8 +9540,8 @@ var actionTab = actionTable{ reduce(12), /* <=, reduce: Expr2 */ reduce(12), /* >, reduce: Expr2 */ reduce(12), /* >=, reduce: Expr2 */ - shift(144), /* + */ - shift(145), /* - */ + shift(149), /* + */ + shift(150), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -8302,7 +9550,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(12), /* ), reduce: Expr2 */ nil, /* functionName */ - nil, /* ? */ + reduce(12), /* ?, reduce: Expr2 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8318,7 +9566,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S213 + actionRow{ // S245 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8333,15 +9581,15 @@ var actionTab = actionTable{ reduce(14), /* >=, reduce: Expr3 */ reduce(14), /* +, reduce: Expr3 */ reduce(14), /* -, reduce: Expr3 */ - shift(146), /* * */ - shift(147), /* / */ - shift(148), /* % */ + shift(151), /* * */ + shift(152), /* / */ + shift(153), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ reduce(14), /* ), reduce: Expr3 */ nil, /* functionName */ - nil, /* ? */ + reduce(14), /* ?, reduce: Expr3 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8357,7 +9605,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S214 + actionRow{ // S246 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8372,15 +9620,15 @@ var actionTab = actionTable{ reduce(15), /* >=, reduce: Expr3 */ reduce(15), /* +, reduce: Expr3 */ reduce(15), /* -, reduce: Expr3 */ - shift(146), /* * */ - shift(147), /* / */ - shift(148), /* % */ + shift(151), /* * */ + shift(152), /* / */ + shift(153), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ reduce(15), /* ), reduce: Expr3 */ nil, /* functionName */ - nil, /* ? */ + reduce(15), /* ?, reduce: Expr3 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8396,7 +9644,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S215 + actionRow{ // S247 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8419,7 +9667,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(17), /* ), reduce: Expr4 */ nil, /* functionName */ - nil, /* ? */ + reduce(17), /* ?, reduce: Expr4 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8435,7 +9683,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S216 + actionRow{ // S248 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8458,7 +9706,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(18), /* ), reduce: Expr4 */ nil, /* functionName */ - nil, /* ? */ + reduce(18), /* ?, reduce: Expr4 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8474,7 +9722,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S217 + actionRow{ // S249 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8497,6 +9745,45 @@ var actionTab = actionTable{ nil, /* ( */ reduce(19), /* ), reduce: Expr4 */ nil, /* functionName */ + reduce(19), /* ?, reduce: Expr4 */ + nil, /* : */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S250 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + shift(193), /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ + shift(252), /* ) */ + nil, /* functionName */ nil, /* ? */ nil, /* : */ nil, /* true */ @@ -8513,7 +9800,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S218 + actionRow{ // S251 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8534,7 +9821,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(285), /* ) */ + shift(320), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -8552,7 +9839,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S219 + actionRow{ // S252 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8575,7 +9862,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(28), /* ), reduce: PrimaryExpr */ nil, /* functionName */ - nil, /* ? */ + reduce(28), /* ?, reduce: PrimaryExpr */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8591,7 +9878,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S220 + actionRow{ // S253 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8612,7 +9899,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(286), /* ) */ + shift(321), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -8630,31 +9917,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S221 + actionRow{ // S254 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(42), /* ||, reduce: Ref */ - reduce(42), /* &&, reduce: Ref */ - reduce(42), /* ==, reduce: Ref */ - reduce(42), /* !=, reduce: Ref */ - reduce(42), /* <, reduce: Ref */ - reduce(42), /* <=, reduce: Ref */ - reduce(42), /* >, reduce: Ref */ - reduce(42), /* >=, reduce: Ref */ - reduce(42), /* +, reduce: Ref */ - reduce(42), /* -, reduce: Ref */ - reduce(42), /* *, reduce: Ref */ - reduce(42), /* /, reduce: Ref */ - reduce(42), /* %, reduce: Ref */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(42), /* ), reduce: Ref */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + shift(278), /* ? */ + shift(322), /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -8663,36 +9950,36 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(42), /* selector, reduce: Ref */ - reduce(42), /* index, reduce: Ref */ + nil, /* selector */ + nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S222 + actionRow{ // S255 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(43), /* ||, reduce: Ref */ - reduce(43), /* &&, reduce: Ref */ - reduce(43), /* ==, reduce: Ref */ - reduce(43), /* !=, reduce: Ref */ - reduce(43), /* <, reduce: Ref */ - reduce(43), /* <=, reduce: Ref */ - reduce(43), /* >, reduce: Ref */ - reduce(43), /* >=, reduce: Ref */ - reduce(43), /* +, reduce: Ref */ - reduce(43), /* -, reduce: Ref */ - reduce(43), /* *, reduce: Ref */ - reduce(43), /* /, reduce: Ref */ - reduce(43), /* %, reduce: Ref */ + reduce(45), /* ||, reduce: Ref */ + reduce(45), /* &&, reduce: Ref */ + reduce(45), /* ==, reduce: Ref */ + reduce(45), /* !=, reduce: Ref */ + reduce(45), /* <, reduce: Ref */ + reduce(45), /* <=, reduce: Ref */ + reduce(45), /* >, reduce: Ref */ + reduce(45), /* >=, reduce: Ref */ + reduce(45), /* +, reduce: Ref */ + reduce(45), /* -, reduce: Ref */ + reduce(45), /* *, reduce: Ref */ + reduce(45), /* /, reduce: Ref */ + reduce(45), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(43), /* ), reduce: Ref */ + reduce(45), /* ), reduce: Ref */ nil, /* functionName */ - nil, /* ? */ + reduce(45), /* ?, reduce: Ref */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8702,36 +9989,36 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(43), /* selector, reduce: Ref */ - reduce(43), /* index, reduce: Ref */ + reduce(45), /* selector, reduce: Ref */ + reduce(45), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S223 + actionRow{ // S256 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(26), /* $, reduce: Expr6 */ - reduce(26), /* ||, reduce: Expr6 */ - reduce(26), /* &&, reduce: Expr6 */ - reduce(26), /* ==, reduce: Expr6 */ - reduce(26), /* !=, reduce: Expr6 */ - reduce(26), /* <, reduce: Expr6 */ - reduce(26), /* <=, reduce: Expr6 */ - reduce(26), /* >, reduce: Expr6 */ - reduce(26), /* >=, reduce: Expr6 */ - reduce(26), /* +, reduce: Expr6 */ - reduce(26), /* -, reduce: Expr6 */ - reduce(26), /* *, reduce: Expr6 */ - reduce(26), /* /, reduce: Expr6 */ - reduce(26), /* %, reduce: Expr6 */ + nil, /* $ */ + reduce(46), /* ||, reduce: Ref */ + reduce(46), /* &&, reduce: Ref */ + reduce(46), /* ==, reduce: Ref */ + reduce(46), /* !=, reduce: Ref */ + reduce(46), /* <, reduce: Ref */ + reduce(46), /* <=, reduce: Ref */ + reduce(46), /* >, reduce: Ref */ + reduce(46), /* >=, reduce: Ref */ + reduce(46), /* +, reduce: Ref */ + reduce(46), /* -, reduce: Ref */ + reduce(46), /* *, reduce: Ref */ + reduce(46), /* /, reduce: Ref */ + reduce(46), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(46), /* ), reduce: Ref */ nil, /* functionName */ - reduce(26), /* ?, reduce: Expr6 */ + reduce(46), /* ?, reduce: Ref */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -8741,37 +10028,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - nil, /* selector */ - nil, /* index */ + reduce(46), /* selector, reduce: Ref */ + reduce(46), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S224 + actionRow{ // S257 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(3), /* ||, reduce: Expr */ - shift(162), /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - nil, /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + reduce(26), /* $, reduce: Expr6 */ + reduce(26), /* ||, reduce: Expr6 */ + reduce(26), /* &&, reduce: Expr6 */ + reduce(26), /* ==, reduce: Expr6 */ + reduce(26), /* !=, reduce: Expr6 */ + reduce(26), /* <, reduce: Expr6 */ + reduce(26), /* <=, reduce: Expr6 */ + reduce(26), /* >, reduce: Expr6 */ + reduce(26), /* >=, reduce: Expr6 */ + reduce(26), /* +, reduce: Expr6 */ + reduce(26), /* -, reduce: Expr6 */ + reduce(26), /* *, reduce: Expr6 */ + reduce(26), /* /, reduce: Expr6 */ + reduce(26), /* %, reduce: Expr6 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - reduce(3), /* :, reduce: Expr */ + reduce(26), /* ?, reduce: Expr6 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -8786,12 +10073,12 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S225 + actionRow{ // S258 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(29), /* $, reduce: TernaryExpr */ - shift(287), /* || */ + nil, /* $ */ + nil, /* || */ nil, /* && */ nil, /* == */ nil, /* != */ @@ -8800,38 +10087,38 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - nil, /* - */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S226 + actionRow{ // S259 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(4), /* $, reduce: Expr */ - reduce(4), /* ||, reduce: Expr */ - shift(288), /* && */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -8839,149 +10126,149 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - nil, /* - */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S227 + actionRow{ // S260 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(6), /* $, reduce: Expr1 */ - reduce(6), /* ||, reduce: Expr1 */ - reduce(6), /* &&, reduce: Expr1 */ - shift(289), /* == */ - shift(290), /* != */ - shift(291), /* < */ - shift(292), /* <= */ - shift(293), /* > */ - shift(294), /* >= */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ nil, /* + */ - nil, /* - */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S228 + actionRow{ // S261 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(13), /* $, reduce: Expr2 */ - reduce(13), /* ||, reduce: Expr2 */ - reduce(13), /* &&, reduce: Expr2 */ - reduce(13), /* ==, reduce: Expr2 */ - reduce(13), /* !=, reduce: Expr2 */ - reduce(13), /* <, reduce: Expr2 */ - reduce(13), /* <=, reduce: Expr2 */ - reduce(13), /* >, reduce: Expr2 */ - reduce(13), /* >=, reduce: Expr2 */ - shift(295), /* + */ - shift(296), /* - */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S229 + actionRow{ // S262 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(16), /* $, reduce: Expr3 */ - reduce(16), /* ||, reduce: Expr3 */ - reduce(16), /* &&, reduce: Expr3 */ - reduce(16), /* ==, reduce: Expr3 */ - reduce(16), /* !=, reduce: Expr3 */ - reduce(16), /* <, reduce: Expr3 */ - reduce(16), /* <=, reduce: Expr3 */ - reduce(16), /* >, reduce: Expr3 */ - reduce(16), /* >=, reduce: Expr3 */ - reduce(16), /* +, reduce: Expr3 */ - reduce(16), /* -, reduce: Expr3 */ - shift(297), /* * */ - shift(298), /* / */ - shift(299), /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S230 + actionRow{ // S263 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -8995,110 +10282,110 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(230), /* - */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - shift(237), /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S231 + actionRow{ // S264 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(20), /* $, reduce: Expr4 */ - reduce(20), /* ||, reduce: Expr4 */ - reduce(20), /* &&, reduce: Expr4 */ - reduce(20), /* ==, reduce: Expr4 */ - reduce(20), /* !=, reduce: Expr4 */ - reduce(20), /* <, reduce: Expr4 */ - reduce(20), /* <=, reduce: Expr4 */ - reduce(20), /* >, reduce: Expr4 */ - reduce(20), /* >=, reduce: Expr4 */ - reduce(20), /* +, reduce: Expr4 */ - reduce(20), /* -, reduce: Expr4 */ - reduce(20), /* *, reduce: Expr4 */ - reduce(20), /* /, reduce: Expr4 */ - reduce(20), /* %, reduce: Expr4 */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S232 + actionRow{ // S265 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(21), /* $, reduce: Expr5 */ - reduce(21), /* ||, reduce: Expr5 */ - reduce(21), /* &&, reduce: Expr5 */ - reduce(21), /* ==, reduce: Expr5 */ - reduce(21), /* !=, reduce: Expr5 */ - reduce(21), /* <, reduce: Expr5 */ - reduce(21), /* <=, reduce: Expr5 */ - reduce(21), /* >, reduce: Expr5 */ - reduce(21), /* >=, reduce: Expr5 */ - reduce(21), /* +, reduce: Expr5 */ - reduce(21), /* -, reduce: Expr5 */ - reduce(21), /* *, reduce: Expr5 */ - reduce(21), /* /, reduce: Expr5 */ - reduce(21), /* %, reduce: Expr5 */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S233 + actionRow{ // S266 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9112,71 +10399,71 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(230), /* - */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - shift(237), /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S234 + actionRow{ // S267 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(24), /* $, reduce: Expr6 */ - reduce(24), /* ||, reduce: Expr6 */ - reduce(24), /* &&, reduce: Expr6 */ - reduce(24), /* ==, reduce: Expr6 */ - reduce(24), /* !=, reduce: Expr6 */ - reduce(24), /* <, reduce: Expr6 */ - reduce(24), /* <=, reduce: Expr6 */ - reduce(24), /* >, reduce: Expr6 */ - reduce(24), /* >=, reduce: Expr6 */ - reduce(24), /* +, reduce: Expr6 */ - reduce(24), /* -, reduce: Expr6 */ - reduce(24), /* *, reduce: Expr6 */ - reduce(24), /* /, reduce: Expr6 */ - reduce(24), /* %, reduce: Expr6 */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S235 + actionRow{ // S268 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9190,71 +10477,71 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - nil, /* - */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - nil, /* ! */ - nil, /* ident */ - shift(302), /* ( */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S236 + actionRow{ // S269 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(49), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(52), /* ! */ - shift(54), /* ident */ - shift(55), /* ( */ - nil, /* ) */ - shift(56), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(59), /* true */ - shift(60), /* false */ - shift(62), /* nil */ - shift(63), /* null */ - shift(64), /* intLit */ - shift(65), /* floatLit */ - shift(66), /* stringLit */ - shift(67), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ + nil, /* ) */ + shift(178), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ }, }, - actionRow{ // S237 + actionRow{ // S270 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9268,56 +10555,56 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - nil, /* - */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - nil, /* ! */ - nil, /* ident */ - shift(304), /* ( */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(272), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S238 + actionRow{ // S271 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(27), /* $, reduce: PrimaryExpr */ - reduce(27), /* ||, reduce: PrimaryExpr */ - reduce(27), /* &&, reduce: PrimaryExpr */ - reduce(27), /* ==, reduce: PrimaryExpr */ - reduce(27), /* !=, reduce: PrimaryExpr */ - reduce(27), /* <, reduce: PrimaryExpr */ - reduce(27), /* <=, reduce: PrimaryExpr */ - reduce(27), /* >, reduce: PrimaryExpr */ - reduce(27), /* >=, reduce: PrimaryExpr */ - reduce(27), /* +, reduce: PrimaryExpr */ - reduce(27), /* -, reduce: PrimaryExpr */ - reduce(27), /* *, reduce: PrimaryExpr */ - reduce(27), /* /, reduce: PrimaryExpr */ - reduce(27), /* %, reduce: PrimaryExpr */ + nil, /* $ */ + reduce(22), /* ||, reduce: Expr5 */ + reduce(22), /* &&, reduce: Expr5 */ + reduce(22), /* ==, reduce: Expr5 */ + reduce(22), /* !=, reduce: Expr5 */ + reduce(22), /* <, reduce: Expr5 */ + reduce(22), /* <=, reduce: Expr5 */ + reduce(22), /* >, reduce: Expr5 */ + reduce(22), /* >=, reduce: Expr5 */ + reduce(22), /* +, reduce: Expr5 */ + reduce(22), /* -, reduce: Expr5 */ + reduce(22), /* *, reduce: Expr5 */ + reduce(22), /* /, reduce: Expr5 */ + reduce(22), /* %, reduce: Expr5 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(22), /* ?, reduce: Expr5 */ + reduce(22), /* :, reduce: Expr5 */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9332,70 +10619,70 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S239 + actionRow{ // S272 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(37), /* $, reduce: Literal */ - reduce(37), /* ||, reduce: Literal */ - reduce(37), /* &&, reduce: Literal */ - reduce(37), /* ==, reduce: Literal */ - reduce(37), /* !=, reduce: Literal */ - reduce(37), /* <, reduce: Literal */ - reduce(37), /* <=, reduce: Literal */ - reduce(37), /* >, reduce: Literal */ - reduce(37), /* >=, reduce: Literal */ - reduce(37), /* +, reduce: Literal */ - reduce(37), /* -, reduce: Literal */ - reduce(37), /* *, reduce: Literal */ - reduce(37), /* /, reduce: Literal */ - reduce(37), /* %, reduce: Literal */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(94), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(97), /* ! */ + shift(99), /* ident */ + shift(100), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(101), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(104), /* true */ + shift(105), /* false */ + shift(107), /* nil */ + shift(108), /* null */ + shift(109), /* intLit */ + shift(110), /* floatLit */ + shift(111), /* stringLit */ + shift(112), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S240 + actionRow{ // S273 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(30), /* $, reduce: BoolLit */ - reduce(30), /* ||, reduce: BoolLit */ - reduce(30), /* &&, reduce: BoolLit */ - reduce(30), /* ==, reduce: BoolLit */ - reduce(30), /* !=, reduce: BoolLit */ - reduce(30), /* <, reduce: BoolLit */ - reduce(30), /* <=, reduce: BoolLit */ - reduce(30), /* >, reduce: BoolLit */ - reduce(30), /* >=, reduce: BoolLit */ - reduce(30), /* +, reduce: BoolLit */ - reduce(30), /* -, reduce: BoolLit */ - reduce(30), /* *, reduce: BoolLit */ - reduce(30), /* /, reduce: BoolLit */ - reduce(30), /* %, reduce: BoolLit */ + nil, /* $ */ + reduce(23), /* ||, reduce: Expr5 */ + reduce(23), /* &&, reduce: Expr5 */ + reduce(23), /* ==, reduce: Expr5 */ + reduce(23), /* !=, reduce: Expr5 */ + reduce(23), /* <, reduce: Expr5 */ + reduce(23), /* <=, reduce: Expr5 */ + reduce(23), /* >, reduce: Expr5 */ + reduce(23), /* >=, reduce: Expr5 */ + reduce(23), /* +, reduce: Expr5 */ + reduce(23), /* -, reduce: Expr5 */ + reduce(23), /* *, reduce: Expr5 */ + reduce(23), /* /, reduce: Expr5 */ + reduce(23), /* %, reduce: Expr5 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(23), /* ?, reduce: Expr5 */ + reduce(23), /* :, reduce: Expr5 */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9410,30 +10697,69 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S241 + actionRow{ // S274 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(118), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S275 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(31), /* $, reduce: BoolLit */ - reduce(31), /* ||, reduce: BoolLit */ - reduce(31), /* &&, reduce: BoolLit */ - reduce(31), /* ==, reduce: BoolLit */ - reduce(31), /* !=, reduce: BoolLit */ - reduce(31), /* <, reduce: BoolLit */ - reduce(31), /* <=, reduce: BoolLit */ - reduce(31), /* >, reduce: BoolLit */ - reduce(31), /* >=, reduce: BoolLit */ - reduce(31), /* +, reduce: BoolLit */ - reduce(31), /* -, reduce: BoolLit */ - reduce(31), /* *, reduce: BoolLit */ - reduce(31), /* /, reduce: BoolLit */ - reduce(31), /* %, reduce: BoolLit */ + nil, /* $ */ + shift(139), /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + shift(338), /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(30), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -9449,30 +10775,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S242 + actionRow{ // S276 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(38), /* $, reduce: Literal */ - reduce(38), /* ||, reduce: Literal */ - reduce(38), /* &&, reduce: Literal */ - reduce(38), /* ==, reduce: Literal */ - reduce(38), /* !=, reduce: Literal */ - reduce(38), /* <, reduce: Literal */ - reduce(38), /* <=, reduce: Literal */ - reduce(38), /* >, reduce: Literal */ - reduce(38), /* >=, reduce: Literal */ - reduce(38), /* +, reduce: Literal */ - reduce(38), /* -, reduce: Literal */ - reduce(38), /* *, reduce: Literal */ - reduce(38), /* /, reduce: Literal */ - reduce(38), /* %, reduce: Literal */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + shift(339), /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(31), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -9488,109 +10814,148 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S243 + actionRow{ // S277 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(32), /* $, reduce: NilLit */ - reduce(32), /* ||, reduce: NilLit */ - reduce(32), /* &&, reduce: NilLit */ - reduce(32), /* ==, reduce: NilLit */ - reduce(32), /* !=, reduce: NilLit */ - reduce(32), /* <, reduce: NilLit */ - reduce(32), /* <=, reduce: NilLit */ - reduce(32), /* >, reduce: NilLit */ - reduce(32), /* >=, reduce: NilLit */ - reduce(32), /* +, reduce: NilLit */ - reduce(32), /* -, reduce: NilLit */ - reduce(32), /* *, reduce: NilLit */ - reduce(32), /* /, reduce: NilLit */ - reduce(32), /* %, reduce: NilLit */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(118), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(121), /* ! */ + shift(123), /* ident */ + shift(124), /* ( */ + reduce(47), /* ), reduce: Args */ + shift(126), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(129), /* true */ + shift(130), /* false */ + shift(132), /* nil */ + shift(133), /* null */ + shift(134), /* intLit */ + shift(135), /* floatLit */ + shift(136), /* stringLit */ + shift(137), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S278 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(171), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(177), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S244 + actionRow{ // S279 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(33), /* $, reduce: NilLit */ - reduce(33), /* ||, reduce: NilLit */ - reduce(33), /* &&, reduce: NilLit */ - reduce(33), /* ==, reduce: NilLit */ - reduce(33), /* !=, reduce: NilLit */ - reduce(33), /* <, reduce: NilLit */ - reduce(33), /* <=, reduce: NilLit */ - reduce(33), /* >, reduce: NilLit */ - reduce(33), /* >=, reduce: NilLit */ - reduce(33), /* +, reduce: NilLit */ - reduce(33), /* -, reduce: NilLit */ - reduce(33), /* *, reduce: NilLit */ - reduce(33), /* /, reduce: NilLit */ - reduce(33), /* %, reduce: NilLit */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(8), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(11), /* ! */ + shift(13), /* ident */ + shift(344), /* ( */ nil, /* ) */ - nil, /* functionName */ + shift(15), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(19), /* true */ + shift(20), /* false */ + shift(22), /* nil */ + shift(23), /* null */ + shift(24), /* intLit */ + shift(25), /* floatLit */ + shift(26), /* stringLit */ + shift(27), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S245 + actionRow{ // S280 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(34), /* $, reduce: Literal */ - reduce(34), /* ||, reduce: Literal */ - reduce(34), /* &&, reduce: Literal */ - reduce(34), /* ==, reduce: Literal */ - reduce(34), /* !=, reduce: Literal */ - reduce(34), /* <, reduce: Literal */ - reduce(34), /* <=, reduce: Literal */ - reduce(34), /* >, reduce: Literal */ - reduce(34), /* >=, reduce: Literal */ - reduce(34), /* +, reduce: Literal */ - reduce(34), /* -, reduce: Literal */ - reduce(34), /* *, reduce: Literal */ - reduce(34), /* /, reduce: Literal */ - reduce(34), /* %, reduce: Literal */ + nil, /* $ */ + reduce(42), /* ||, reduce: Literal */ + reduce(42), /* &&, reduce: Literal */ + reduce(42), /* ==, reduce: Literal */ + reduce(42), /* !=, reduce: Literal */ + reduce(42), /* <, reduce: Literal */ + reduce(42), /* <=, reduce: Literal */ + reduce(42), /* >, reduce: Literal */ + reduce(42), /* >=, reduce: Literal */ + reduce(42), /* +, reduce: Literal */ + reduce(42), /* -, reduce: Literal */ + reduce(42), /* *, reduce: Literal */ + reduce(42), /* /, reduce: Literal */ + reduce(42), /* %, reduce: Literal */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(42), /* ?, reduce: Literal */ + reduce(42), /* :, reduce: Literal */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9599,37 +10964,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - nil, /* selector */ - nil, /* index */ + shift(346), /* selector */ + shift(347), /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S246 + actionRow{ // S281 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(35), /* $, reduce: Literal */ - reduce(35), /* ||, reduce: Literal */ - reduce(35), /* &&, reduce: Literal */ - reduce(35), /* ==, reduce: Literal */ - reduce(35), /* !=, reduce: Literal */ - reduce(35), /* <, reduce: Literal */ - reduce(35), /* <=, reduce: Literal */ - reduce(35), /* >, reduce: Literal */ - reduce(35), /* >=, reduce: Literal */ - reduce(35), /* +, reduce: Literal */ - reduce(35), /* -, reduce: Literal */ - reduce(35), /* *, reduce: Literal */ - reduce(35), /* /, reduce: Literal */ - reduce(35), /* %, reduce: Literal */ + nil, /* $ */ + reduce(43), /* ||, reduce: Ref */ + reduce(43), /* &&, reduce: Ref */ + reduce(43), /* ==, reduce: Ref */ + reduce(43), /* !=, reduce: Ref */ + reduce(43), /* <, reduce: Ref */ + reduce(43), /* <=, reduce: Ref */ + reduce(43), /* >, reduce: Ref */ + reduce(43), /* >=, reduce: Ref */ + reduce(43), /* +, reduce: Ref */ + reduce(43), /* -, reduce: Ref */ + reduce(43), /* *, reduce: Ref */ + reduce(43), /* /, reduce: Ref */ + reduce(43), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(43), /* ?, reduce: Ref */ + reduce(43), /* :, reduce: Ref */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9638,37 +11003,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - nil, /* selector */ - nil, /* index */ + reduce(43), /* selector, reduce: Ref */ + reduce(43), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S247 + actionRow{ // S282 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(36), /* $, reduce: Literal */ - reduce(36), /* ||, reduce: Literal */ - reduce(36), /* &&, reduce: Literal */ - reduce(36), /* ==, reduce: Literal */ - reduce(36), /* !=, reduce: Literal */ - reduce(36), /* <, reduce: Literal */ - reduce(36), /* <=, reduce: Literal */ - reduce(36), /* >, reduce: Literal */ - reduce(36), /* >=, reduce: Literal */ - reduce(36), /* +, reduce: Literal */ - reduce(36), /* -, reduce: Literal */ - reduce(36), /* *, reduce: Literal */ - reduce(36), /* /, reduce: Literal */ - reduce(36), /* %, reduce: Literal */ + nil, /* $ */ + reduce(44), /* ||, reduce: Ref */ + reduce(44), /* &&, reduce: Ref */ + reduce(44), /* ==, reduce: Ref */ + reduce(44), /* !=, reduce: Ref */ + reduce(44), /* <, reduce: Ref */ + reduce(44), /* <=, reduce: Ref */ + reduce(44), /* >, reduce: Ref */ + reduce(44), /* >=, reduce: Ref */ + reduce(44), /* +, reduce: Ref */ + reduce(44), /* -, reduce: Ref */ + reduce(44), /* *, reduce: Ref */ + reduce(44), /* /, reduce: Ref */ + reduce(44), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(44), /* ?, reduce: Ref */ + reduce(44), /* :, reduce: Ref */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9677,19 +11042,19 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - nil, /* selector */ - nil, /* index */ + reduce(44), /* selector, reduce: Ref */ + reduce(44), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S248 + actionRow{ // S283 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ + reduce(3), /* ||, reduce: Expr */ + shift(194), /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -9704,7 +11069,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(3), /* ), reduce: Expr */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -9716,25 +11081,25 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - shift(306), /* selector */ - shift(307), /* index */ + nil, /* selector */ + nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S249 + actionRow{ // S284 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(5), /* ||, reduce: Expr1 */ reduce(5), /* &&, reduce: Expr1 */ - shift(163), /* == */ - shift(164), /* != */ - shift(165), /* < */ - shift(166), /* <= */ - shift(167), /* > */ - shift(168), /* >= */ + shift(195), /* == */ + shift(196), /* != */ + shift(197), /* < */ + shift(198), /* <= */ + shift(199), /* > */ + shift(200), /* >= */ nil, /* + */ nil, /* - */ nil, /* * */ @@ -9743,10 +11108,10 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(5), /* ), reduce: Expr1 */ nil, /* functionName */ nil, /* ? */ - reduce(5), /* :, reduce: Expr1 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9761,7 +11126,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S250 + actionRow{ // S285 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9774,18 +11139,18 @@ var actionTab = actionTable{ reduce(7), /* <=, reduce: Expr2 */ reduce(7), /* >, reduce: Expr2 */ reduce(7), /* >=, reduce: Expr2 */ - shift(169), /* + */ - shift(170), /* - */ + shift(201), /* + */ + shift(202), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(7), /* ), reduce: Expr2 */ nil, /* functionName */ nil, /* ? */ - reduce(7), /* :, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9800,7 +11165,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S251 + actionRow{ // S286 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9813,18 +11178,18 @@ var actionTab = actionTable{ reduce(8), /* <=, reduce: Expr2 */ reduce(8), /* >, reduce: Expr2 */ reduce(8), /* >=, reduce: Expr2 */ - shift(169), /* + */ - shift(170), /* - */ + shift(201), /* + */ + shift(202), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(8), /* ), reduce: Expr2 */ nil, /* functionName */ nil, /* ? */ - reduce(8), /* :, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9839,7 +11204,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S252 + actionRow{ // S287 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9852,18 +11217,18 @@ var actionTab = actionTable{ reduce(9), /* <=, reduce: Expr2 */ reduce(9), /* >, reduce: Expr2 */ reduce(9), /* >=, reduce: Expr2 */ - shift(169), /* + */ - shift(170), /* - */ + shift(201), /* + */ + shift(202), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(9), /* ), reduce: Expr2 */ nil, /* functionName */ nil, /* ? */ - reduce(9), /* :, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9878,7 +11243,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S253 + actionRow{ // S288 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9891,18 +11256,18 @@ var actionTab = actionTable{ reduce(10), /* <=, reduce: Expr2 */ reduce(10), /* >, reduce: Expr2 */ reduce(10), /* >=, reduce: Expr2 */ - shift(169), /* + */ - shift(170), /* - */ + shift(201), /* + */ + shift(202), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(10), /* ), reduce: Expr2 */ nil, /* functionName */ nil, /* ? */ - reduce(10), /* :, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9917,7 +11282,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S254 + actionRow{ // S289 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9930,18 +11295,18 @@ var actionTab = actionTable{ reduce(11), /* <=, reduce: Expr2 */ reduce(11), /* >, reduce: Expr2 */ reduce(11), /* >=, reduce: Expr2 */ - shift(169), /* + */ - shift(170), /* - */ + shift(201), /* + */ + shift(202), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(11), /* ), reduce: Expr2 */ nil, /* functionName */ nil, /* ? */ - reduce(11), /* :, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9956,7 +11321,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S255 + actionRow{ // S290 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -9969,18 +11334,18 @@ var actionTab = actionTable{ reduce(12), /* <=, reduce: Expr2 */ reduce(12), /* >, reduce: Expr2 */ reduce(12), /* >=, reduce: Expr2 */ - shift(169), /* + */ - shift(170), /* - */ + shift(201), /* + */ + shift(202), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(12), /* ), reduce: Expr2 */ nil, /* functionName */ nil, /* ? */ - reduce(12), /* :, reduce: Expr2 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -9995,7 +11360,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S256 + actionRow{ // S291 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10010,16 +11375,16 @@ var actionTab = actionTable{ reduce(14), /* >=, reduce: Expr3 */ reduce(14), /* +, reduce: Expr3 */ reduce(14), /* -, reduce: Expr3 */ - shift(171), /* * */ - shift(172), /* / */ - shift(173), /* % */ + shift(203), /* * */ + shift(204), /* / */ + shift(205), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(14), /* ), reduce: Expr3 */ nil, /* functionName */ nil, /* ? */ - reduce(14), /* :, reduce: Expr3 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -10034,7 +11399,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S257 + actionRow{ // S292 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10049,16 +11414,16 @@ var actionTab = actionTable{ reduce(15), /* >=, reduce: Expr3 */ reduce(15), /* +, reduce: Expr3 */ reduce(15), /* -, reduce: Expr3 */ - shift(171), /* * */ - shift(172), /* / */ - shift(173), /* % */ + shift(203), /* * */ + shift(204), /* / */ + shift(205), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(15), /* ), reduce: Expr3 */ nil, /* functionName */ nil, /* ? */ - reduce(15), /* :, reduce: Expr3 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -10073,7 +11438,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S258 + actionRow{ // S293 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10094,10 +11459,10 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(17), /* ), reduce: Expr4 */ nil, /* functionName */ nil, /* ? */ - reduce(17), /* :, reduce: Expr4 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -10112,7 +11477,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S259 + actionRow{ // S294 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10133,10 +11498,10 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(18), /* ), reduce: Expr4 */ nil, /* functionName */ nil, /* ? */ - reduce(18), /* :, reduce: Expr4 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -10151,7 +11516,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S260 + actionRow{ // S295 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10172,10 +11537,10 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(19), /* ), reduce: Expr4 */ nil, /* functionName */ nil, /* ? */ - reduce(19), /* :, reduce: Expr4 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -10190,7 +11555,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S261 + actionRow{ // S296 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10211,7 +11576,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(308), /* ) */ + shift(348), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -10229,7 +11594,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S262 + actionRow{ // S297 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10250,10 +11615,10 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(28), /* ), reduce: PrimaryExpr */ nil, /* functionName */ nil, /* ? */ - reduce(28), /* :, reduce: PrimaryExpr */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -10268,7 +11633,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S263 + actionRow{ // S298 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10289,7 +11654,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(309), /* ) */ + shift(349), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -10307,31 +11672,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S264 + actionRow{ // S299 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(42), /* ||, reduce: Ref */ - reduce(42), /* &&, reduce: Ref */ - reduce(42), /* ==, reduce: Ref */ - reduce(42), /* !=, reduce: Ref */ - reduce(42), /* <, reduce: Ref */ - reduce(42), /* <=, reduce: Ref */ - reduce(42), /* >, reduce: Ref */ - reduce(42), /* >=, reduce: Ref */ - reduce(42), /* +, reduce: Ref */ - reduce(42), /* -, reduce: Ref */ - reduce(42), /* *, reduce: Ref */ - reduce(42), /* /, reduce: Ref */ - reduce(42), /* %, reduce: Ref */ + reduce(45), /* ||, reduce: Ref */ + reduce(45), /* &&, reduce: Ref */ + reduce(45), /* ==, reduce: Ref */ + reduce(45), /* !=, reduce: Ref */ + reduce(45), /* <, reduce: Ref */ + reduce(45), /* <=, reduce: Ref */ + reduce(45), /* >, reduce: Ref */ + reduce(45), /* >=, reduce: Ref */ + reduce(45), /* +, reduce: Ref */ + reduce(45), /* -, reduce: Ref */ + reduce(45), /* *, reduce: Ref */ + reduce(45), /* /, reduce: Ref */ + reduce(45), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(45), /* ), reduce: Ref */ nil, /* functionName */ nil, /* ? */ - reduce(42), /* :, reduce: Ref */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -10340,37 +11705,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(42), /* selector, reduce: Ref */ - reduce(42), /* index, reduce: Ref */ + reduce(45), /* selector, reduce: Ref */ + reduce(45), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S265 + actionRow{ // S300 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(43), /* ||, reduce: Ref */ - reduce(43), /* &&, reduce: Ref */ - reduce(43), /* ==, reduce: Ref */ - reduce(43), /* !=, reduce: Ref */ - reduce(43), /* <, reduce: Ref */ - reduce(43), /* <=, reduce: Ref */ - reduce(43), /* >, reduce: Ref */ - reduce(43), /* >=, reduce: Ref */ - reduce(43), /* +, reduce: Ref */ - reduce(43), /* -, reduce: Ref */ - reduce(43), /* *, reduce: Ref */ - reduce(43), /* /, reduce: Ref */ - reduce(43), /* %, reduce: Ref */ + reduce(46), /* ||, reduce: Ref */ + reduce(46), /* &&, reduce: Ref */ + reduce(46), /* ==, reduce: Ref */ + reduce(46), /* !=, reduce: Ref */ + reduce(46), /* <, reduce: Ref */ + reduce(46), /* <=, reduce: Ref */ + reduce(46), /* >, reduce: Ref */ + reduce(46), /* >=, reduce: Ref */ + reduce(46), /* +, reduce: Ref */ + reduce(46), /* -, reduce: Ref */ + reduce(46), /* *, reduce: Ref */ + reduce(46), /* /, reduce: Ref */ + reduce(46), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(46), /* ), reduce: Ref */ nil, /* functionName */ nil, /* ? */ - reduce(43), /* :, reduce: Ref */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -10379,19 +11744,19 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(43), /* selector, reduce: Ref */ - reduce(43), /* index, reduce: Ref */ + reduce(46), /* selector, reduce: Ref */ + reduce(46), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S266 + actionRow{ // S301 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(3), /* ||, reduce: Expr */ - shift(183), /* && */ + shift(215), /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -10424,19 +11789,19 @@ var actionTab = actionTable{ reduce(3), /* ,, reduce: Expr */ }, }, - actionRow{ // S267 + actionRow{ // S302 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ reduce(5), /* ||, reduce: Expr1 */ reduce(5), /* &&, reduce: Expr1 */ - shift(184), /* == */ - shift(185), /* != */ - shift(186), /* < */ - shift(187), /* <= */ - shift(188), /* > */ - shift(189), /* >= */ + shift(216), /* == */ + shift(217), /* != */ + shift(218), /* < */ + shift(219), /* <= */ + shift(220), /* > */ + shift(221), /* >= */ nil, /* + */ nil, /* - */ nil, /* * */ @@ -10463,7 +11828,7 @@ var actionTab = actionTable{ reduce(5), /* ,, reduce: Expr1 */ }, }, - actionRow{ // S268 + actionRow{ // S303 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10476,8 +11841,8 @@ var actionTab = actionTable{ reduce(7), /* <=, reduce: Expr2 */ reduce(7), /* >, reduce: Expr2 */ reduce(7), /* >=, reduce: Expr2 */ - shift(190), /* + */ - shift(191), /* - */ + shift(222), /* + */ + shift(223), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -10502,7 +11867,7 @@ var actionTab = actionTable{ reduce(7), /* ,, reduce: Expr2 */ }, }, - actionRow{ // S269 + actionRow{ // S304 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10515,8 +11880,8 @@ var actionTab = actionTable{ reduce(8), /* <=, reduce: Expr2 */ reduce(8), /* >, reduce: Expr2 */ reduce(8), /* >=, reduce: Expr2 */ - shift(190), /* + */ - shift(191), /* - */ + shift(222), /* + */ + shift(223), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -10541,7 +11906,7 @@ var actionTab = actionTable{ reduce(8), /* ,, reduce: Expr2 */ }, }, - actionRow{ // S270 + actionRow{ // S305 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10554,8 +11919,8 @@ var actionTab = actionTable{ reduce(9), /* <=, reduce: Expr2 */ reduce(9), /* >, reduce: Expr2 */ reduce(9), /* >=, reduce: Expr2 */ - shift(190), /* + */ - shift(191), /* - */ + shift(222), /* + */ + shift(223), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -10580,7 +11945,7 @@ var actionTab = actionTable{ reduce(9), /* ,, reduce: Expr2 */ }, }, - actionRow{ // S271 + actionRow{ // S306 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10593,8 +11958,8 @@ var actionTab = actionTable{ reduce(10), /* <=, reduce: Expr2 */ reduce(10), /* >, reduce: Expr2 */ reduce(10), /* >=, reduce: Expr2 */ - shift(190), /* + */ - shift(191), /* - */ + shift(222), /* + */ + shift(223), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -10619,7 +11984,7 @@ var actionTab = actionTable{ reduce(10), /* ,, reduce: Expr2 */ }, }, - actionRow{ // S272 + actionRow{ // S307 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10632,8 +11997,8 @@ var actionTab = actionTable{ reduce(11), /* <=, reduce: Expr2 */ reduce(11), /* >, reduce: Expr2 */ reduce(11), /* >=, reduce: Expr2 */ - shift(190), /* + */ - shift(191), /* - */ + shift(222), /* + */ + shift(223), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -10658,7 +12023,7 @@ var actionTab = actionTable{ reduce(11), /* ,, reduce: Expr2 */ }, }, - actionRow{ // S273 + actionRow{ // S308 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10671,8 +12036,8 @@ var actionTab = actionTable{ reduce(12), /* <=, reduce: Expr2 */ reduce(12), /* >, reduce: Expr2 */ reduce(12), /* >=, reduce: Expr2 */ - shift(190), /* + */ - shift(191), /* - */ + shift(222), /* + */ + shift(223), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ @@ -10697,7 +12062,7 @@ var actionTab = actionTable{ reduce(12), /* ,, reduce: Expr2 */ }, }, - actionRow{ // S274 + actionRow{ // S309 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10712,9 +12077,9 @@ var actionTab = actionTable{ reduce(14), /* >=, reduce: Expr3 */ reduce(14), /* +, reduce: Expr3 */ reduce(14), /* -, reduce: Expr3 */ - shift(192), /* * */ - shift(193), /* / */ - shift(194), /* % */ + shift(224), /* * */ + shift(225), /* / */ + shift(226), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ @@ -10736,7 +12101,7 @@ var actionTab = actionTable{ reduce(14), /* ,, reduce: Expr3 */ }, }, - actionRow{ // S275 + actionRow{ // S310 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10751,9 +12116,9 @@ var actionTab = actionTable{ reduce(15), /* >=, reduce: Expr3 */ reduce(15), /* +, reduce: Expr3 */ reduce(15), /* -, reduce: Expr3 */ - shift(192), /* * */ - shift(193), /* / */ - shift(194), /* % */ + shift(224), /* * */ + shift(225), /* / */ + shift(226), /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ @@ -10775,7 +12140,7 @@ var actionTab = actionTable{ reduce(15), /* ,, reduce: Expr3 */ }, }, - actionRow{ // S276 + actionRow{ // S311 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10814,7 +12179,7 @@ var actionTab = actionTable{ reduce(17), /* ,, reduce: Expr4 */ }, }, - actionRow{ // S277 + actionRow{ // S312 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10853,7 +12218,7 @@ var actionTab = actionTable{ reduce(18), /* ,, reduce: Expr4 */ }, }, - actionRow{ // S278 + actionRow{ // S313 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10892,7 +12257,7 @@ var actionTab = actionTable{ reduce(19), /* ,, reduce: Expr4 */ }, }, - actionRow{ // S279 + actionRow{ // S314 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10913,7 +12278,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(310), /* ) */ + shift(350), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -10931,7 +12296,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S280 + actionRow{ // S315 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10970,7 +12335,7 @@ var actionTab = actionTable{ reduce(28), /* ,, reduce: PrimaryExpr */ }, }, - actionRow{ // S281 + actionRow{ // S316 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -10991,7 +12356,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(311), /* ) */ + shift(351), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -11009,28 +12374,28 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S282 + actionRow{ // S317 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(42), /* ||, reduce: Ref */ - reduce(42), /* &&, reduce: Ref */ - reduce(42), /* ==, reduce: Ref */ - reduce(42), /* !=, reduce: Ref */ - reduce(42), /* <, reduce: Ref */ - reduce(42), /* <=, reduce: Ref */ - reduce(42), /* >, reduce: Ref */ - reduce(42), /* >=, reduce: Ref */ - reduce(42), /* +, reduce: Ref */ - reduce(42), /* -, reduce: Ref */ - reduce(42), /* *, reduce: Ref */ - reduce(42), /* /, reduce: Ref */ - reduce(42), /* %, reduce: Ref */ + reduce(45), /* ||, reduce: Ref */ + reduce(45), /* &&, reduce: Ref */ + reduce(45), /* ==, reduce: Ref */ + reduce(45), /* !=, reduce: Ref */ + reduce(45), /* <, reduce: Ref */ + reduce(45), /* <=, reduce: Ref */ + reduce(45), /* >, reduce: Ref */ + reduce(45), /* >=, reduce: Ref */ + reduce(45), /* +, reduce: Ref */ + reduce(45), /* -, reduce: Ref */ + reduce(45), /* *, reduce: Ref */ + reduce(45), /* /, reduce: Ref */ + reduce(45), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(42), /* ), reduce: Ref */ + reduce(45), /* ), reduce: Ref */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -11042,34 +12407,34 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(42), /* selector, reduce: Ref */ - reduce(42), /* index, reduce: Ref */ + reduce(45), /* selector, reduce: Ref */ + reduce(45), /* index, reduce: Ref */ nil, /* empty */ - reduce(42), /* ,, reduce: Ref */ + reduce(45), /* ,, reduce: Ref */ }, }, - actionRow{ // S283 + actionRow{ // S318 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(43), /* ||, reduce: Ref */ - reduce(43), /* &&, reduce: Ref */ - reduce(43), /* ==, reduce: Ref */ - reduce(43), /* !=, reduce: Ref */ - reduce(43), /* <, reduce: Ref */ - reduce(43), /* <=, reduce: Ref */ - reduce(43), /* >, reduce: Ref */ - reduce(43), /* >=, reduce: Ref */ - reduce(43), /* +, reduce: Ref */ - reduce(43), /* -, reduce: Ref */ - reduce(43), /* *, reduce: Ref */ - reduce(43), /* /, reduce: Ref */ - reduce(43), /* %, reduce: Ref */ + reduce(46), /* ||, reduce: Ref */ + reduce(46), /* &&, reduce: Ref */ + reduce(46), /* ==, reduce: Ref */ + reduce(46), /* !=, reduce: Ref */ + reduce(46), /* <, reduce: Ref */ + reduce(46), /* <=, reduce: Ref */ + reduce(46), /* >, reduce: Ref */ + reduce(46), /* >=, reduce: Ref */ + reduce(46), /* +, reduce: Ref */ + reduce(46), /* -, reduce: Ref */ + reduce(46), /* *, reduce: Ref */ + reduce(46), /* /, reduce: Ref */ + reduce(46), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(43), /* ), reduce: Ref */ + reduce(46), /* ), reduce: Ref */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -11081,18 +12446,18 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(43), /* selector, reduce: Ref */ - reduce(43), /* index, reduce: Ref */ + reduce(46), /* selector, reduce: Ref */ + reduce(46), /* index, reduce: Ref */ nil, /* empty */ - reduce(43), /* ,, reduce: Ref */ + reduce(46), /* ,, reduce: Ref */ }, }, - actionRow{ // S284 + actionRow{ // S319 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - shift(182), /* || */ + shift(214), /* || */ nil, /* && */ nil, /* == */ nil, /* != */ @@ -11108,7 +12473,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(47), /* ), reduce: ExprList */ + reduce(50), /* ), reduce: ExprList */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -11123,10 +12488,10 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(47), /* ,, reduce: ExprList */ + reduce(50), /* ,, reduce: ExprList */ }, }, - actionRow{ // S285 + actionRow{ // S320 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -11149,7 +12514,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(25), /* ), reduce: Expr6 */ nil, /* functionName */ - nil, /* ? */ + reduce(25), /* ?, reduce: Expr6 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -11165,7 +12530,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S286 + actionRow{ // S321 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -11188,7 +12553,7 @@ var actionTab = actionTable{ nil, /* ( */ reduce(26), /* ), reduce: Expr6 */ nil, /* functionName */ - nil, /* ? */ + reduce(26), /* ?, reduce: Expr6 */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -11204,46 +12569,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S287 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ - nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S288 + actionRow{ // S322 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -11257,38 +12583,38 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(230), /* - */ + shift(51), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(354), /* ( */ nil, /* ) */ - shift(237), /* functionName */ + shift(58), /* functionName */ nil, /* ? */ nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S289 + actionRow{ // S323 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ + reduce(3), /* ||, reduce: Expr */ + shift(259), /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -11296,446 +12622,446 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(230), /* - */ + nil, /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(3), /* ?, reduce: Expr */ + reduce(3), /* :, reduce: Expr */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S290 + actionRow{ // S324 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ + reduce(5), /* ||, reduce: Expr1 */ + reduce(5), /* &&, reduce: Expr1 */ + shift(260), /* == */ + shift(261), /* != */ + shift(262), /* < */ + shift(263), /* <= */ + shift(264), /* > */ + shift(265), /* >= */ nil, /* + */ - shift(230), /* - */ + nil, /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(5), /* ?, reduce: Expr1 */ + reduce(5), /* :, reduce: Expr1 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S291 + actionRow{ // S325 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ + reduce(7), /* ||, reduce: Expr2 */ + reduce(7), /* &&, reduce: Expr2 */ + reduce(7), /* ==, reduce: Expr2 */ + reduce(7), /* !=, reduce: Expr2 */ + reduce(7), /* <, reduce: Expr2 */ + reduce(7), /* <=, reduce: Expr2 */ + reduce(7), /* >, reduce: Expr2 */ + reduce(7), /* >=, reduce: Expr2 */ + shift(266), /* + */ + shift(267), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(7), /* ?, reduce: Expr2 */ + reduce(7), /* :, reduce: Expr2 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S292 + actionRow{ // S326 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ + reduce(8), /* ||, reduce: Expr2 */ + reduce(8), /* &&, reduce: Expr2 */ + reduce(8), /* ==, reduce: Expr2 */ + reduce(8), /* !=, reduce: Expr2 */ + reduce(8), /* <, reduce: Expr2 */ + reduce(8), /* <=, reduce: Expr2 */ + reduce(8), /* >, reduce: Expr2 */ + reduce(8), /* >=, reduce: Expr2 */ + shift(266), /* + */ + shift(267), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(8), /* ?, reduce: Expr2 */ + reduce(8), /* :, reduce: Expr2 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S293 + actionRow{ // S327 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ + reduce(9), /* ||, reduce: Expr2 */ + reduce(9), /* &&, reduce: Expr2 */ + reduce(9), /* ==, reduce: Expr2 */ + reduce(9), /* !=, reduce: Expr2 */ + reduce(9), /* <, reduce: Expr2 */ + reduce(9), /* <=, reduce: Expr2 */ + reduce(9), /* >, reduce: Expr2 */ + reduce(9), /* >=, reduce: Expr2 */ + shift(266), /* + */ + shift(267), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(9), /* ?, reduce: Expr2 */ + reduce(9), /* :, reduce: Expr2 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S294 + actionRow{ // S328 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ + reduce(10), /* ||, reduce: Expr2 */ + reduce(10), /* &&, reduce: Expr2 */ + reduce(10), /* ==, reduce: Expr2 */ + reduce(10), /* !=, reduce: Expr2 */ + reduce(10), /* <, reduce: Expr2 */ + reduce(10), /* <=, reduce: Expr2 */ + reduce(10), /* >, reduce: Expr2 */ + reduce(10), /* >=, reduce: Expr2 */ + shift(266), /* + */ + shift(267), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(10), /* ?, reduce: Expr2 */ + reduce(10), /* :, reduce: Expr2 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S295 + actionRow{ // S329 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ + reduce(11), /* ||, reduce: Expr2 */ + reduce(11), /* &&, reduce: Expr2 */ + reduce(11), /* ==, reduce: Expr2 */ + reduce(11), /* !=, reduce: Expr2 */ + reduce(11), /* <, reduce: Expr2 */ + reduce(11), /* <=, reduce: Expr2 */ + reduce(11), /* >, reduce: Expr2 */ + reduce(11), /* >=, reduce: Expr2 */ + shift(266), /* + */ + shift(267), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(11), /* ?, reduce: Expr2 */ + reduce(11), /* :, reduce: Expr2 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S296 + actionRow{ // S330 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ + reduce(12), /* ||, reduce: Expr2 */ + reduce(12), /* &&, reduce: Expr2 */ + reduce(12), /* ==, reduce: Expr2 */ + reduce(12), /* !=, reduce: Expr2 */ + reduce(12), /* <, reduce: Expr2 */ + reduce(12), /* <=, reduce: Expr2 */ + reduce(12), /* >, reduce: Expr2 */ + reduce(12), /* >=, reduce: Expr2 */ + shift(266), /* + */ + shift(267), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(12), /* ?, reduce: Expr2 */ + reduce(12), /* :, reduce: Expr2 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S297 + actionRow{ // S331 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + reduce(14), /* ||, reduce: Expr3 */ + reduce(14), /* &&, reduce: Expr3 */ + reduce(14), /* ==, reduce: Expr3 */ + reduce(14), /* !=, reduce: Expr3 */ + reduce(14), /* <, reduce: Expr3 */ + reduce(14), /* <=, reduce: Expr3 */ + reduce(14), /* >, reduce: Expr3 */ + reduce(14), /* >=, reduce: Expr3 */ + reduce(14), /* +, reduce: Expr3 */ + reduce(14), /* -, reduce: Expr3 */ + shift(268), /* * */ + shift(269), /* / */ + shift(270), /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(14), /* ?, reduce: Expr3 */ + reduce(14), /* :, reduce: Expr3 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S298 + actionRow{ // S332 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + reduce(15), /* ||, reduce: Expr3 */ + reduce(15), /* &&, reduce: Expr3 */ + reduce(15), /* ==, reduce: Expr3 */ + reduce(15), /* !=, reduce: Expr3 */ + reduce(15), /* <, reduce: Expr3 */ + reduce(15), /* <=, reduce: Expr3 */ + reduce(15), /* >, reduce: Expr3 */ + reduce(15), /* >=, reduce: Expr3 */ + reduce(15), /* +, reduce: Expr3 */ + reduce(15), /* -, reduce: Expr3 */ + shift(268), /* * */ + shift(269), /* / */ + shift(270), /* % */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(15), /* ?, reduce: Expr3 */ + reduce(15), /* :, reduce: Expr3 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S299 + actionRow{ // S333 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(230), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(233), /* ! */ - shift(235), /* ident */ - shift(236), /* ( */ + reduce(17), /* ||, reduce: Expr4 */ + reduce(17), /* &&, reduce: Expr4 */ + reduce(17), /* ==, reduce: Expr4 */ + reduce(17), /* !=, reduce: Expr4 */ + reduce(17), /* <, reduce: Expr4 */ + reduce(17), /* <=, reduce: Expr4 */ + reduce(17), /* >, reduce: Expr4 */ + reduce(17), /* >=, reduce: Expr4 */ + reduce(17), /* +, reduce: Expr4 */ + reduce(17), /* -, reduce: Expr4 */ + reduce(17), /* *, reduce: Expr4 */ + reduce(17), /* /, reduce: Expr4 */ + reduce(17), /* %, reduce: Expr4 */ + nil, /* ! */ + nil, /* ident */ + nil, /* ( */ nil, /* ) */ - shift(237), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(240), /* true */ - shift(241), /* false */ - shift(243), /* nil */ - shift(244), /* null */ - shift(245), /* intLit */ - shift(246), /* floatLit */ - shift(247), /* stringLit */ - shift(248), /* ref */ + nil, /* functionName */ + reduce(17), /* ?, reduce: Expr4 */ + reduce(17), /* :, reduce: Expr4 */ + nil, /* true */ + nil, /* false */ + nil, /* nil */ + nil, /* null */ + nil, /* intLit */ + nil, /* floatLit */ + nil, /* stringLit */ + nil, /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S300 + actionRow{ // S334 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(22), /* $, reduce: Expr5 */ - reduce(22), /* ||, reduce: Expr5 */ - reduce(22), /* &&, reduce: Expr5 */ - reduce(22), /* ==, reduce: Expr5 */ - reduce(22), /* !=, reduce: Expr5 */ - reduce(22), /* <, reduce: Expr5 */ - reduce(22), /* <=, reduce: Expr5 */ - reduce(22), /* >, reduce: Expr5 */ - reduce(22), /* >=, reduce: Expr5 */ - reduce(22), /* +, reduce: Expr5 */ - reduce(22), /* -, reduce: Expr5 */ - reduce(22), /* *, reduce: Expr5 */ - reduce(22), /* /, reduce: Expr5 */ - reduce(22), /* %, reduce: Expr5 */ + nil, /* $ */ + reduce(18), /* ||, reduce: Expr4 */ + reduce(18), /* &&, reduce: Expr4 */ + reduce(18), /* ==, reduce: Expr4 */ + reduce(18), /* !=, reduce: Expr4 */ + reduce(18), /* <, reduce: Expr4 */ + reduce(18), /* <=, reduce: Expr4 */ + reduce(18), /* >, reduce: Expr4 */ + reduce(18), /* >=, reduce: Expr4 */ + reduce(18), /* +, reduce: Expr4 */ + reduce(18), /* -, reduce: Expr4 */ + reduce(18), /* *, reduce: Expr4 */ + reduce(18), /* /, reduce: Expr4 */ + reduce(18), /* %, reduce: Expr4 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(18), /* ?, reduce: Expr4 */ + reduce(18), /* :, reduce: Expr4 */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -11750,31 +13076,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S301 + actionRow{ // S335 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(23), /* $, reduce: Expr5 */ - reduce(23), /* ||, reduce: Expr5 */ - reduce(23), /* &&, reduce: Expr5 */ - reduce(23), /* ==, reduce: Expr5 */ - reduce(23), /* !=, reduce: Expr5 */ - reduce(23), /* <, reduce: Expr5 */ - reduce(23), /* <=, reduce: Expr5 */ - reduce(23), /* >, reduce: Expr5 */ - reduce(23), /* >=, reduce: Expr5 */ - reduce(23), /* +, reduce: Expr5 */ - reduce(23), /* -, reduce: Expr5 */ - reduce(23), /* *, reduce: Expr5 */ - reduce(23), /* /, reduce: Expr5 */ - reduce(23), /* %, reduce: Expr5 */ + nil, /* $ */ + reduce(19), /* ||, reduce: Expr4 */ + reduce(19), /* &&, reduce: Expr4 */ + reduce(19), /* ==, reduce: Expr4 */ + reduce(19), /* !=, reduce: Expr4 */ + reduce(19), /* <, reduce: Expr4 */ + reduce(19), /* <=, reduce: Expr4 */ + reduce(19), /* >, reduce: Expr4 */ + reduce(19), /* >=, reduce: Expr4 */ + reduce(19), /* +, reduce: Expr4 */ + reduce(19), /* -, reduce: Expr4 */ + reduce(19), /* *, reduce: Expr4 */ + reduce(19), /* /, reduce: Expr4 */ + reduce(19), /* %, reduce: Expr4 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(19), /* ?, reduce: Expr4 */ + reduce(19), /* :, reduce: Expr4 */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -11789,51 +13115,12 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S302 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - nil, /* $ */ - nil, /* || */ - nil, /* && */ - nil, /* == */ - nil, /* != */ - nil, /* < */ - nil, /* <= */ - nil, /* > */ - nil, /* >= */ - nil, /* + */ - shift(114), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S303 + actionRow{ // S336 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - shift(135), /* || */ + shift(193), /* || */ nil, /* && */ nil, /* == */ nil, /* != */ @@ -11849,7 +13136,7 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(326), /* ) */ + shift(338), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -11867,7 +13154,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S304 + actionRow{ // S337 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -11881,92 +13168,14 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - shift(114), /* - */ + nil, /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - shift(117), /* ! */ - shift(119), /* ident */ - shift(120), /* ( */ - reduce(44), /* ), reduce: Args */ - shift(122), /* functionName */ - nil, /* ? */ - nil, /* : */ - shift(125), /* true */ - shift(126), /* false */ - shift(128), /* nil */ - shift(129), /* null */ - shift(130), /* intLit */ - shift(131), /* floatLit */ - shift(132), /* stringLit */ - shift(133), /* ref */ - nil, /* selector */ - nil, /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S305 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(39), /* $, reduce: Literal */ - reduce(39), /* ||, reduce: Literal */ - reduce(39), /* &&, reduce: Literal */ - reduce(39), /* ==, reduce: Literal */ - reduce(39), /* !=, reduce: Literal */ - reduce(39), /* <, reduce: Literal */ - reduce(39), /* <=, reduce: Literal */ - reduce(39), /* >, reduce: Literal */ - reduce(39), /* >=, reduce: Literal */ - reduce(39), /* +, reduce: Literal */ - reduce(39), /* -, reduce: Literal */ - reduce(39), /* *, reduce: Literal */ - reduce(39), /* /, reduce: Literal */ - reduce(39), /* %, reduce: Literal */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - nil, /* ? */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - shift(328), /* selector */ - shift(329), /* index */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S306 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(40), /* $, reduce: Ref */ - reduce(40), /* ||, reduce: Ref */ - reduce(40), /* &&, reduce: Ref */ - reduce(40), /* ==, reduce: Ref */ - reduce(40), /* !=, reduce: Ref */ - reduce(40), /* <, reduce: Ref */ - reduce(40), /* <=, reduce: Ref */ - reduce(40), /* >, reduce: Ref */ - reduce(40), /* >=, reduce: Ref */ - reduce(40), /* +, reduce: Ref */ - reduce(40), /* -, reduce: Ref */ - reduce(40), /* *, reduce: Ref */ - reduce(40), /* /, reduce: Ref */ - reduce(40), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + shift(356), /* ) */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -11978,37 +13187,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(40), /* selector, reduce: Ref */ - reduce(40), /* index, reduce: Ref */ + nil, /* selector */ + nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S307 + actionRow{ // S338 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(41), /* $, reduce: Ref */ - reduce(41), /* ||, reduce: Ref */ - reduce(41), /* &&, reduce: Ref */ - reduce(41), /* ==, reduce: Ref */ - reduce(41), /* !=, reduce: Ref */ - reduce(41), /* <, reduce: Ref */ - reduce(41), /* <=, reduce: Ref */ - reduce(41), /* >, reduce: Ref */ - reduce(41), /* >=, reduce: Ref */ - reduce(41), /* +, reduce: Ref */ - reduce(41), /* -, reduce: Ref */ - reduce(41), /* *, reduce: Ref */ - reduce(41), /* /, reduce: Ref */ - reduce(41), /* %, reduce: Ref */ + nil, /* $ */ + reduce(28), /* ||, reduce: PrimaryExpr */ + reduce(28), /* &&, reduce: PrimaryExpr */ + reduce(28), /* ==, reduce: PrimaryExpr */ + reduce(28), /* !=, reduce: PrimaryExpr */ + reduce(28), /* <, reduce: PrimaryExpr */ + reduce(28), /* <=, reduce: PrimaryExpr */ + reduce(28), /* >, reduce: PrimaryExpr */ + reduce(28), /* >=, reduce: PrimaryExpr */ + reduce(28), /* +, reduce: PrimaryExpr */ + reduce(28), /* -, reduce: PrimaryExpr */ + reduce(28), /* *, reduce: PrimaryExpr */ + reduce(28), /* /, reduce: PrimaryExpr */ + reduce(28), /* %, reduce: PrimaryExpr */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(28), /* ?, reduce: PrimaryExpr */ + reduce(28), /* :, reduce: PrimaryExpr */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12017,37 +13226,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(41), /* selector, reduce: Ref */ - reduce(41), /* index, reduce: Ref */ + nil, /* selector */ + nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S308 + actionRow{ // S339 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(25), /* ||, reduce: Expr6 */ - reduce(25), /* &&, reduce: Expr6 */ - reduce(25), /* ==, reduce: Expr6 */ - reduce(25), /* !=, reduce: Expr6 */ - reduce(25), /* <, reduce: Expr6 */ - reduce(25), /* <=, reduce: Expr6 */ - reduce(25), /* >, reduce: Expr6 */ - reduce(25), /* >=, reduce: Expr6 */ - reduce(25), /* +, reduce: Expr6 */ - reduce(25), /* -, reduce: Expr6 */ - reduce(25), /* *, reduce: Expr6 */ - reduce(25), /* /, reduce: Expr6 */ - reduce(25), /* %, reduce: Expr6 */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - reduce(25), /* :, reduce: Expr6 */ + reduce(32), /* ?, reduce: TernaryArgument */ + reduce(32), /* :, reduce: TernaryArgument */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12062,31 +13271,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S309 + actionRow{ // S340 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(26), /* ||, reduce: Expr6 */ - reduce(26), /* &&, reduce: Expr6 */ - reduce(26), /* ==, reduce: Expr6 */ - reduce(26), /* !=, reduce: Expr6 */ - reduce(26), /* <, reduce: Expr6 */ - reduce(26), /* <=, reduce: Expr6 */ - reduce(26), /* >, reduce: Expr6 */ - reduce(26), /* >=, reduce: Expr6 */ - reduce(26), /* +, reduce: Expr6 */ - reduce(26), /* -, reduce: Expr6 */ - reduce(26), /* *, reduce: Expr6 */ - reduce(26), /* /, reduce: Expr6 */ - reduce(26), /* %, reduce: Expr6 */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + shift(357), /* ) */ nil, /* functionName */ nil, /* ? */ - reduce(26), /* :, reduce: Expr6 */ + nil, /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12101,31 +13310,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S310 + actionRow{ // S341 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ nil, /* $ */ - reduce(25), /* ||, reduce: Expr6 */ - reduce(25), /* &&, reduce: Expr6 */ - reduce(25), /* ==, reduce: Expr6 */ - reduce(25), /* !=, reduce: Expr6 */ - reduce(25), /* <, reduce: Expr6 */ - reduce(25), /* <=, reduce: Expr6 */ - reduce(25), /* >, reduce: Expr6 */ - reduce(25), /* >=, reduce: Expr6 */ - reduce(25), /* +, reduce: Expr6 */ - reduce(25), /* -, reduce: Expr6 */ - reduce(25), /* *, reduce: Expr6 */ - reduce(25), /* /, reduce: Expr6 */ - reduce(25), /* %, reduce: Expr6 */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(25), /* ), reduce: Expr6 */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + shift(278), /* ? */ + shift(358), /* : */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12137,33 +13346,33 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(25), /* ,, reduce: Expr6 */ + nil, /* , */ }, }, - actionRow{ // S311 + actionRow{ // S342 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - nil, /* $ */ - reduce(26), /* ||, reduce: Expr6 */ - reduce(26), /* &&, reduce: Expr6 */ - reduce(26), /* ==, reduce: Expr6 */ - reduce(26), /* !=, reduce: Expr6 */ - reduce(26), /* <, reduce: Expr6 */ - reduce(26), /* <=, reduce: Expr6 */ - reduce(26), /* >, reduce: Expr6 */ - reduce(26), /* >=, reduce: Expr6 */ - reduce(26), /* +, reduce: Expr6 */ - reduce(26), /* -, reduce: Expr6 */ - reduce(26), /* *, reduce: Expr6 */ - reduce(26), /* /, reduce: Expr6 */ - reduce(26), /* %, reduce: Expr6 */ + reduce(30), /* $, reduce: TernaryArgument */ + shift(28), /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - reduce(26), /* ), reduce: Expr6 */ + nil, /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(30), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12176,16 +13385,16 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - reduce(26), /* ,, reduce: Expr6 */ + nil, /* , */ }, }, - actionRow{ // S312 + actionRow{ // S343 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(3), /* $, reduce: Expr */ - reduce(3), /* ||, reduce: Expr */ - shift(288), /* && */ + reduce(31), /* $, reduce: TernaryArgument */ + nil, /* || */ + nil, /* && */ nil, /* == */ nil, /* != */ nil, /* < */ @@ -12202,7 +13411,7 @@ var actionTab = actionTable{ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(31), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12218,19 +13427,58 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S313 + actionRow{ // S344 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(57), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S345 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(5), /* $, reduce: Expr1 */ - reduce(5), /* ||, reduce: Expr1 */ - reduce(5), /* &&, reduce: Expr1 */ - shift(289), /* == */ - shift(290), /* != */ - shift(291), /* < */ - shift(292), /* <= */ - shift(293), /* > */ - shift(294), /* >= */ + reduce(29), /* $, reduce: TernaryExpr */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ nil, /* + */ nil, /* - */ nil, /* * */ @@ -12241,7 +13489,7 @@ var actionTab = actionTable{ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ + shift(72), /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12257,31 +13505,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S314 + actionRow{ // S346 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(7), /* $, reduce: Expr2 */ - reduce(7), /* ||, reduce: Expr2 */ - reduce(7), /* &&, reduce: Expr2 */ - reduce(7), /* ==, reduce: Expr2 */ - reduce(7), /* !=, reduce: Expr2 */ - reduce(7), /* <, reduce: Expr2 */ - reduce(7), /* <=, reduce: Expr2 */ - reduce(7), /* >, reduce: Expr2 */ - reduce(7), /* >=, reduce: Expr2 */ - shift(295), /* + */ - shift(296), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(45), /* ||, reduce: Ref */ + reduce(45), /* &&, reduce: Ref */ + reduce(45), /* ==, reduce: Ref */ + reduce(45), /* !=, reduce: Ref */ + reduce(45), /* <, reduce: Ref */ + reduce(45), /* <=, reduce: Ref */ + reduce(45), /* >, reduce: Ref */ + reduce(45), /* >=, reduce: Ref */ + reduce(45), /* +, reduce: Ref */ + reduce(45), /* -, reduce: Ref */ + reduce(45), /* *, reduce: Ref */ + reduce(45), /* /, reduce: Ref */ + reduce(45), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(45), /* ?, reduce: Ref */ + reduce(45), /* :, reduce: Ref */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12290,37 +13538,37 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - nil, /* selector */ - nil, /* index */ + reduce(45), /* selector, reduce: Ref */ + reduce(45), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S315 + actionRow{ // S347 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(8), /* $, reduce: Expr2 */ - reduce(8), /* ||, reduce: Expr2 */ - reduce(8), /* &&, reduce: Expr2 */ - reduce(8), /* ==, reduce: Expr2 */ - reduce(8), /* !=, reduce: Expr2 */ - reduce(8), /* <, reduce: Expr2 */ - reduce(8), /* <=, reduce: Expr2 */ - reduce(8), /* >, reduce: Expr2 */ - reduce(8), /* >=, reduce: Expr2 */ - shift(295), /* + */ - shift(296), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(46), /* ||, reduce: Ref */ + reduce(46), /* &&, reduce: Ref */ + reduce(46), /* ==, reduce: Ref */ + reduce(46), /* !=, reduce: Ref */ + reduce(46), /* <, reduce: Ref */ + reduce(46), /* <=, reduce: Ref */ + reduce(46), /* >, reduce: Ref */ + reduce(46), /* >=, reduce: Ref */ + reduce(46), /* +, reduce: Ref */ + reduce(46), /* -, reduce: Ref */ + reduce(46), /* *, reduce: Ref */ + reduce(46), /* /, reduce: Ref */ + reduce(46), /* %, reduce: Ref */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(46), /* ?, reduce: Ref */ + reduce(46), /* :, reduce: Ref */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12329,34 +13577,34 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - nil, /* selector */ - nil, /* index */ + reduce(46), /* selector, reduce: Ref */ + reduce(46), /* index, reduce: Ref */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S316 + actionRow{ // S348 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(9), /* $, reduce: Expr2 */ - reduce(9), /* ||, reduce: Expr2 */ - reduce(9), /* &&, reduce: Expr2 */ - reduce(9), /* ==, reduce: Expr2 */ - reduce(9), /* !=, reduce: Expr2 */ - reduce(9), /* <, reduce: Expr2 */ - reduce(9), /* <=, reduce: Expr2 */ - reduce(9), /* >, reduce: Expr2 */ - reduce(9), /* >=, reduce: Expr2 */ - shift(295), /* + */ - shift(296), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(25), /* ||, reduce: Expr6 */ + reduce(25), /* &&, reduce: Expr6 */ + reduce(25), /* ==, reduce: Expr6 */ + reduce(25), /* !=, reduce: Expr6 */ + reduce(25), /* <, reduce: Expr6 */ + reduce(25), /* <=, reduce: Expr6 */ + reduce(25), /* >, reduce: Expr6 */ + reduce(25), /* >=, reduce: Expr6 */ + reduce(25), /* +, reduce: Expr6 */ + reduce(25), /* -, reduce: Expr6 */ + reduce(25), /* *, reduce: Expr6 */ + reduce(25), /* /, reduce: Expr6 */ + reduce(25), /* %, reduce: Expr6 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(25), /* ), reduce: Expr6 */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -12374,28 +13622,28 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S317 + actionRow{ // S349 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(10), /* $, reduce: Expr2 */ - reduce(10), /* ||, reduce: Expr2 */ - reduce(10), /* &&, reduce: Expr2 */ - reduce(10), /* ==, reduce: Expr2 */ - reduce(10), /* !=, reduce: Expr2 */ - reduce(10), /* <, reduce: Expr2 */ - reduce(10), /* <=, reduce: Expr2 */ - reduce(10), /* >, reduce: Expr2 */ - reduce(10), /* >=, reduce: Expr2 */ - shift(295), /* + */ - shift(296), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(26), /* ||, reduce: Expr6 */ + reduce(26), /* &&, reduce: Expr6 */ + reduce(26), /* ==, reduce: Expr6 */ + reduce(26), /* !=, reduce: Expr6 */ + reduce(26), /* <, reduce: Expr6 */ + reduce(26), /* <=, reduce: Expr6 */ + reduce(26), /* >, reduce: Expr6 */ + reduce(26), /* >=, reduce: Expr6 */ + reduce(26), /* +, reduce: Expr6 */ + reduce(26), /* -, reduce: Expr6 */ + reduce(26), /* *, reduce: Expr6 */ + reduce(26), /* /, reduce: Expr6 */ + reduce(26), /* %, reduce: Expr6 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(26), /* ), reduce: Expr6 */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -12413,28 +13661,28 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S318 + actionRow{ // S350 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(11), /* $, reduce: Expr2 */ - reduce(11), /* ||, reduce: Expr2 */ - reduce(11), /* &&, reduce: Expr2 */ - reduce(11), /* ==, reduce: Expr2 */ - reduce(11), /* !=, reduce: Expr2 */ - reduce(11), /* <, reduce: Expr2 */ - reduce(11), /* <=, reduce: Expr2 */ - reduce(11), /* >, reduce: Expr2 */ - reduce(11), /* >=, reduce: Expr2 */ - shift(295), /* + */ - shift(296), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(25), /* ||, reduce: Expr6 */ + reduce(25), /* &&, reduce: Expr6 */ + reduce(25), /* ==, reduce: Expr6 */ + reduce(25), /* !=, reduce: Expr6 */ + reduce(25), /* <, reduce: Expr6 */ + reduce(25), /* <=, reduce: Expr6 */ + reduce(25), /* >, reduce: Expr6 */ + reduce(25), /* >=, reduce: Expr6 */ + reduce(25), /* +, reduce: Expr6 */ + reduce(25), /* -, reduce: Expr6 */ + reduce(25), /* *, reduce: Expr6 */ + reduce(25), /* /, reduce: Expr6 */ + reduce(25), /* %, reduce: Expr6 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(25), /* ), reduce: Expr6 */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -12449,31 +13697,31 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - nil, /* , */ + reduce(25), /* ,, reduce: Expr6 */ }, }, - actionRow{ // S319 + actionRow{ // S351 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(12), /* $, reduce: Expr2 */ - reduce(12), /* ||, reduce: Expr2 */ - reduce(12), /* &&, reduce: Expr2 */ - reduce(12), /* ==, reduce: Expr2 */ - reduce(12), /* !=, reduce: Expr2 */ - reduce(12), /* <, reduce: Expr2 */ - reduce(12), /* <=, reduce: Expr2 */ - reduce(12), /* >, reduce: Expr2 */ - reduce(12), /* >=, reduce: Expr2 */ - shift(295), /* + */ - shift(296), /* - */ - nil, /* * */ - nil, /* / */ - nil, /* % */ + nil, /* $ */ + reduce(26), /* ||, reduce: Expr6 */ + reduce(26), /* &&, reduce: Expr6 */ + reduce(26), /* ==, reduce: Expr6 */ + reduce(26), /* !=, reduce: Expr6 */ + reduce(26), /* <, reduce: Expr6 */ + reduce(26), /* <=, reduce: Expr6 */ + reduce(26), /* >, reduce: Expr6 */ + reduce(26), /* >=, reduce: Expr6 */ + reduce(26), /* +, reduce: Expr6 */ + reduce(26), /* -, reduce: Expr6 */ + reduce(26), /* *, reduce: Expr6 */ + reduce(26), /* /, reduce: Expr6 */ + reduce(26), /* %, reduce: Expr6 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(26), /* ), reduce: Expr6 */ nil, /* functionName */ nil, /* ? */ nil, /* : */ @@ -12488,33 +13736,33 @@ var actionTab = actionTable{ nil, /* selector */ nil, /* index */ nil, /* empty */ - nil, /* , */ + reduce(26), /* ,, reduce: Expr6 */ }, }, - actionRow{ // S320 + actionRow{ // S352 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(14), /* $, reduce: Expr3 */ - reduce(14), /* ||, reduce: Expr3 */ - reduce(14), /* &&, reduce: Expr3 */ - reduce(14), /* ==, reduce: Expr3 */ - reduce(14), /* !=, reduce: Expr3 */ - reduce(14), /* <, reduce: Expr3 */ - reduce(14), /* <=, reduce: Expr3 */ - reduce(14), /* >, reduce: Expr3 */ - reduce(14), /* >=, reduce: Expr3 */ - reduce(14), /* +, reduce: Expr3 */ - reduce(14), /* -, reduce: Expr3 */ - shift(297), /* * */ - shift(298), /* / */ - shift(299), /* % */ + nil, /* $ */ + shift(139), /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(30), /* ), reduce: TernaryArgument */ nil, /* functionName */ - nil, /* ? */ + reduce(30), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12530,30 +13778,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S321 + actionRow{ // S353 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(15), /* $, reduce: Expr3 */ - reduce(15), /* ||, reduce: Expr3 */ - reduce(15), /* &&, reduce: Expr3 */ - reduce(15), /* ==, reduce: Expr3 */ - reduce(15), /* !=, reduce: Expr3 */ - reduce(15), /* <, reduce: Expr3 */ - reduce(15), /* <=, reduce: Expr3 */ - reduce(15), /* >, reduce: Expr3 */ - reduce(15), /* >=, reduce: Expr3 */ - reduce(15), /* +, reduce: Expr3 */ - reduce(15), /* -, reduce: Expr3 */ - shift(297), /* * */ - shift(298), /* / */ - shift(299), /* % */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(31), /* ), reduce: TernaryArgument */ nil, /* functionName */ - nil, /* ? */ + reduce(31), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12569,30 +13817,69 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S322 + actionRow{ // S354 canRecover: false, actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(17), /* $, reduce: Expr4 */ - reduce(17), /* ||, reduce: Expr4 */ - reduce(17), /* &&, reduce: Expr4 */ - reduce(17), /* ==, reduce: Expr4 */ - reduce(17), /* !=, reduce: Expr4 */ - reduce(17), /* <, reduce: Expr4 */ - reduce(17), /* <=, reduce: Expr4 */ - reduce(17), /* >, reduce: Expr4 */ - reduce(17), /* >=, reduce: Expr4 */ - reduce(17), /* +, reduce: Expr4 */ - reduce(17), /* -, reduce: Expr4 */ - reduce(17), /* *, reduce: Expr4 */ - reduce(17), /* /, reduce: Expr4 */ - reduce(17), /* %, reduce: Expr4 */ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + shift(51), /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ + shift(54), /* ! */ + shift(56), /* ident */ + shift(57), /* ( */ + nil, /* ) */ + shift(58), /* functionName */ + nil, /* ? */ + nil, /* : */ + shift(62), /* true */ + shift(63), /* false */ + shift(65), /* nil */ + shift(66), /* null */ + shift(67), /* intLit */ + shift(68), /* floatLit */ + shift(69), /* stringLit */ + shift(70), /* ref */ + nil, /* selector */ + nil, /* index */ + nil, /* empty */ + nil, /* , */ + }, + }, + actionRow{ // S355 + canRecover: false, + actions: [numSymbols]action{ + nil, /* INVALID */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(29), /* ), reduce: TernaryExpr */ nil, /* functionName */ - nil, /* ? */ + shift(160), /* ? */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12608,31 +13895,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S323 + actionRow{ // S356 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(18), /* $, reduce: Expr4 */ - reduce(18), /* ||, reduce: Expr4 */ - reduce(18), /* &&, reduce: Expr4 */ - reduce(18), /* ==, reduce: Expr4 */ - reduce(18), /* !=, reduce: Expr4 */ - reduce(18), /* <, reduce: Expr4 */ - reduce(18), /* <=, reduce: Expr4 */ - reduce(18), /* >, reduce: Expr4 */ - reduce(18), /* >=, reduce: Expr4 */ - reduce(18), /* +, reduce: Expr4 */ - reduce(18), /* -, reduce: Expr4 */ - reduce(18), /* *, reduce: Expr4 */ - reduce(18), /* /, reduce: Expr4 */ - reduce(18), /* %, reduce: Expr4 */ + nil, /* $ */ + reduce(25), /* ||, reduce: Expr6 */ + reduce(25), /* &&, reduce: Expr6 */ + reduce(25), /* ==, reduce: Expr6 */ + reduce(25), /* !=, reduce: Expr6 */ + reduce(25), /* <, reduce: Expr6 */ + reduce(25), /* <=, reduce: Expr6 */ + reduce(25), /* >, reduce: Expr6 */ + reduce(25), /* >=, reduce: Expr6 */ + reduce(25), /* +, reduce: Expr6 */ + reduce(25), /* -, reduce: Expr6 */ + reduce(25), /* *, reduce: Expr6 */ + reduce(25), /* /, reduce: Expr6 */ + reduce(25), /* %, reduce: Expr6 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(25), /* ?, reduce: Expr6 */ + reduce(25), /* :, reduce: Expr6 */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12647,31 +13934,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S324 + actionRow{ // S357 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(19), /* $, reduce: Expr4 */ - reduce(19), /* ||, reduce: Expr4 */ - reduce(19), /* &&, reduce: Expr4 */ - reduce(19), /* ==, reduce: Expr4 */ - reduce(19), /* !=, reduce: Expr4 */ - reduce(19), /* <, reduce: Expr4 */ - reduce(19), /* <=, reduce: Expr4 */ - reduce(19), /* >, reduce: Expr4 */ - reduce(19), /* >=, reduce: Expr4 */ - reduce(19), /* +, reduce: Expr4 */ - reduce(19), /* -, reduce: Expr4 */ - reduce(19), /* *, reduce: Expr4 */ - reduce(19), /* /, reduce: Expr4 */ - reduce(19), /* %, reduce: Expr4 */ + nil, /* $ */ + reduce(26), /* ||, reduce: Expr6 */ + reduce(26), /* &&, reduce: Expr6 */ + reduce(26), /* ==, reduce: Expr6 */ + reduce(26), /* !=, reduce: Expr6 */ + reduce(26), /* <, reduce: Expr6 */ + reduce(26), /* <=, reduce: Expr6 */ + reduce(26), /* >, reduce: Expr6 */ + reduce(26), /* >=, reduce: Expr6 */ + reduce(26), /* +, reduce: Expr6 */ + reduce(26), /* -, reduce: Expr6 */ + reduce(26), /* *, reduce: Expr6 */ + reduce(26), /* /, reduce: Expr6 */ + reduce(26), /* %, reduce: Expr6 */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + reduce(26), /* ?, reduce: Expr6 */ + reduce(26), /* :, reduce: Expr6 */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12686,7 +13973,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S325 + actionRow{ // S358 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -12700,55 +13987,55 @@ var actionTab = actionTable{ nil, /* > */ nil, /* >= */ nil, /* + */ - nil, /* - */ + shift(171), /* - */ nil, /* * */ nil, /* / */ nil, /* % */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - shift(330), /* ) */ - nil, /* functionName */ + shift(174), /* ! */ + shift(176), /* ident */ + shift(177), /* ( */ + nil, /* ) */ + shift(178), /* functionName */ nil, /* ? */ nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ + shift(182), /* true */ + shift(183), /* false */ + shift(185), /* nil */ + shift(186), /* null */ + shift(187), /* intLit */ + shift(188), /* floatLit */ + shift(189), /* stringLit */ + shift(190), /* ref */ nil, /* selector */ nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S326 + actionRow{ // S359 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(28), /* $, reduce: PrimaryExpr */ - reduce(28), /* ||, reduce: PrimaryExpr */ - reduce(28), /* &&, reduce: PrimaryExpr */ - reduce(28), /* ==, reduce: PrimaryExpr */ - reduce(28), /* !=, reduce: PrimaryExpr */ - reduce(28), /* <, reduce: PrimaryExpr */ - reduce(28), /* <=, reduce: PrimaryExpr */ - reduce(28), /* >, reduce: PrimaryExpr */ - reduce(28), /* >=, reduce: PrimaryExpr */ - reduce(28), /* +, reduce: PrimaryExpr */ - reduce(28), /* -, reduce: PrimaryExpr */ - reduce(28), /* *, reduce: PrimaryExpr */ - reduce(28), /* /, reduce: PrimaryExpr */ - reduce(28), /* %, reduce: PrimaryExpr */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + shift(362), /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(31), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12764,7 +14051,7 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S327 + actionRow{ // S360 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ @@ -12785,9 +14072,9 @@ var actionTab = actionTable{ nil, /* ! */ nil, /* ident */ nil, /* ( */ - shift(331), /* ) */ + shift(363), /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(31), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12803,70 +14090,31 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S328 - canRecover: false, - actions: [numSymbols]action{ - nil, /* INVALID */ - reduce(42), /* $, reduce: Ref */ - reduce(42), /* ||, reduce: Ref */ - reduce(42), /* &&, reduce: Ref */ - reduce(42), /* ==, reduce: Ref */ - reduce(42), /* !=, reduce: Ref */ - reduce(42), /* <, reduce: Ref */ - reduce(42), /* <=, reduce: Ref */ - reduce(42), /* >, reduce: Ref */ - reduce(42), /* >=, reduce: Ref */ - reduce(42), /* +, reduce: Ref */ - reduce(42), /* -, reduce: Ref */ - reduce(42), /* *, reduce: Ref */ - reduce(42), /* /, reduce: Ref */ - reduce(42), /* %, reduce: Ref */ - nil, /* ! */ - nil, /* ident */ - nil, /* ( */ - nil, /* ) */ - nil, /* functionName */ - nil, /* ? */ - nil, /* : */ - nil, /* true */ - nil, /* false */ - nil, /* nil */ - nil, /* null */ - nil, /* intLit */ - nil, /* floatLit */ - nil, /* stringLit */ - nil, /* ref */ - reduce(42), /* selector, reduce: Ref */ - reduce(42), /* index, reduce: Ref */ - nil, /* empty */ - nil, /* , */ - }, - }, - actionRow{ // S329 + actionRow{ // S361 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(43), /* $, reduce: Ref */ - reduce(43), /* ||, reduce: Ref */ - reduce(43), /* &&, reduce: Ref */ - reduce(43), /* ==, reduce: Ref */ - reduce(43), /* !=, reduce: Ref */ - reduce(43), /* <, reduce: Ref */ - reduce(43), /* <=, reduce: Ref */ - reduce(43), /* >, reduce: Ref */ - reduce(43), /* >=, reduce: Ref */ - reduce(43), /* +, reduce: Ref */ - reduce(43), /* -, reduce: Ref */ - reduce(43), /* *, reduce: Ref */ - reduce(43), /* /, reduce: Ref */ - reduce(43), /* %, reduce: Ref */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ - nil, /* : */ + shift(278), /* ? */ + reduce(29), /* :, reduce: TernaryExpr */ nil, /* true */ nil, /* false */ nil, /* nil */ @@ -12875,36 +14123,36 @@ var actionTab = actionTable{ nil, /* floatLit */ nil, /* stringLit */ nil, /* ref */ - reduce(43), /* selector, reduce: Ref */ - reduce(43), /* index, reduce: Ref */ + nil, /* selector */ + nil, /* index */ nil, /* empty */ nil, /* , */ }, }, - actionRow{ // S330 + actionRow{ // S362 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(25), /* $, reduce: Expr6 */ - reduce(25), /* ||, reduce: Expr6 */ - reduce(25), /* &&, reduce: Expr6 */ - reduce(25), /* ==, reduce: Expr6 */ - reduce(25), /* !=, reduce: Expr6 */ - reduce(25), /* <, reduce: Expr6 */ - reduce(25), /* <=, reduce: Expr6 */ - reduce(25), /* >, reduce: Expr6 */ - reduce(25), /* >=, reduce: Expr6 */ - reduce(25), /* +, reduce: Expr6 */ - reduce(25), /* -, reduce: Expr6 */ - reduce(25), /* *, reduce: Expr6 */ - reduce(25), /* /, reduce: Expr6 */ - reduce(25), /* %, reduce: Expr6 */ + reduce(32), /* $, reduce: TernaryArgument */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ nil, /* ) */ nil, /* functionName */ - nil, /* ? */ + reduce(32), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ @@ -12920,30 +14168,30 @@ var actionTab = actionTable{ nil, /* , */ }, }, - actionRow{ // S331 + actionRow{ // S363 canRecover: false, actions: [numSymbols]action{ nil, /* INVALID */ - reduce(26), /* $, reduce: Expr6 */ - reduce(26), /* ||, reduce: Expr6 */ - reduce(26), /* &&, reduce: Expr6 */ - reduce(26), /* ==, reduce: Expr6 */ - reduce(26), /* !=, reduce: Expr6 */ - reduce(26), /* <, reduce: Expr6 */ - reduce(26), /* <=, reduce: Expr6 */ - reduce(26), /* >, reduce: Expr6 */ - reduce(26), /* >=, reduce: Expr6 */ - reduce(26), /* +, reduce: Expr6 */ - reduce(26), /* -, reduce: Expr6 */ - reduce(26), /* *, reduce: Expr6 */ - reduce(26), /* /, reduce: Expr6 */ - reduce(26), /* %, reduce: Expr6 */ + nil, /* $ */ + nil, /* || */ + nil, /* && */ + nil, /* == */ + nil, /* != */ + nil, /* < */ + nil, /* <= */ + nil, /* > */ + nil, /* >= */ + nil, /* + */ + nil, /* - */ + nil, /* * */ + nil, /* / */ + nil, /* % */ nil, /* ! */ nil, /* ident */ nil, /* ( */ - nil, /* ) */ + reduce(32), /* ), reduce: TernaryArgument */ nil, /* functionName */ - nil, /* ? */ + reduce(32), /* ?, reduce: TernaryArgument */ nil, /* : */ nil, /* true */ nil, /* false */ diff --git a/data/expression/script/gocc/parser/gototable.go b/data/expression/script/gocc/parser/gototable.go index ec2aa7ef..1f9cc4ea 100644 --- a/data/expression/script/gocc/parser/gototable.go +++ b/data/expression/script/gocc/parser/gototable.go @@ -2,7 +2,7 @@ package parser -const numNTSymbols = 17 +const numNTSymbols = 18 type ( gotoTable [numStates]gotoRow @@ -22,8 +22,9 @@ var gotoTab = gotoTable{ 10, // Expr6 12, // PrimaryExpr 3, // TernaryExpr - 17, // BoolLit - 20, // NilLit + 17, // TernaryArgument + 18, // BoolLit + 21, // NilLit 16, // Literal -1, // Ref -1, // Args @@ -41,6 +42,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -60,6 +62,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -79,6 +82,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -98,6 +102,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -117,6 +122,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -136,6 +142,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -155,6 +162,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -174,8 +182,9 @@ var gotoTab = gotoTable{ 10, // Expr6 12, // PrimaryExpr -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit 16, // Literal -1, // Ref -1, // Args @@ -193,6 +202,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -212,6 +222,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -227,12 +238,13 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 42, // Expr5 + 43, // Expr5 10, // Expr6 12, // PrimaryExpr -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit 16, // Literal -1, // Ref -1, // Args @@ -250,6 +262,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -269,6 +282,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -279,18 +293,19 @@ var gotoTab = gotoTable{ gotoRow{ // S14 -1, // S' -1, // Fscript - 44, // Expr - 45, // Expr1 - 46, // Expr2 - 47, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr - -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + 45, // Expr + 47, // Expr1 + 48, // Expr2 + 49, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + 46, // TernaryExpr + 60, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList @@ -307,6 +322,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -326,6 +342,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -345,6 +362,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -364,6 +382,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -383,6 +402,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -402,6 +422,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -421,6 +442,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -440,6 +462,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -459,6 +482,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -478,6 +502,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -497,6 +522,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -516,10 +542,11 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal - 69, // Ref + -1, // Ref -1, // Args -1, // ExprList }, @@ -527,36 +554,38 @@ var gotoTab = gotoTable{ -1, // S' -1, // Fscript -1, // Expr - 72, // Expr1 - 5, // Expr2 - 6, // Expr3 - 7, // Expr4 - 9, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + 73, // Ref -1, // Args -1, // ExprList }, gotoRow{ // S28 -1, // S' -1, // Fscript - 73, // Expr - 74, // Expr1 - 75, // Expr2 - 76, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + -1, // Expr + 76, // Expr1 + 5, // Expr2 + 6, // Expr3 + 7, // Expr4 + 9, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList @@ -566,15 +595,16 @@ var gotoTab = gotoTable{ -1, // Fscript -1, // Expr -1, // Expr1 - 97, // Expr2 + 77, // Expr2 6, // Expr3 7, // Expr4 9, // Expr5 10, // Expr6 12, // PrimaryExpr -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit 16, // Literal -1, // Ref -1, // Args @@ -586,14 +616,15 @@ var gotoTab = gotoTable{ -1, // Expr -1, // Expr1 -1, // Expr2 - 98, // Expr3 + 78, // Expr3 7, // Expr4 9, // Expr5 10, // Expr6 12, // PrimaryExpr -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit 16, // Literal -1, // Ref -1, // Args @@ -605,324 +636,141 @@ var gotoTab = gotoTable{ -1, // Expr -1, // Expr1 -1, // Expr2 - 99, // Expr3 + 79, // Expr3 7, // Expr4 9, // Expr5 10, // Expr6 12, // PrimaryExpr -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, gotoRow{ // S32 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 100, // Expr3 - 7, // Expr4 - 9, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S33 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 101, // Expr3 - 7, // Expr4 - 9, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S34 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 102, // Expr3 - 7, // Expr4 - 9, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S35 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 103, // Expr3 - 7, // Expr4 - 9, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S36 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - 104, // Expr4 - 9, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S37 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - 105, // Expr4 - 9, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S38 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 106, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S39 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 107, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S40 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 108, // Expr5 - 10, // Expr6 - 12, // PrimaryExpr - -1, // TernaryExpr - 17, // BoolLit - 20, // NilLit - 16, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S41 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr + 80, // Expr3 + 7, // Expr4 + 9, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S42 + gotoRow{ // S33 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr + 81, // Expr3 + 7, // Expr4 + 9, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S43 - -1, // S' - -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr - -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal - -1, // Ref - 121, // Args - 134, // ExprList - }, - gotoRow{ // S44 + gotoRow{ // S34 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr + 82, // Expr3 + 7, // Expr4 + 9, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S45 + gotoRow{ // S35 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr + 83, // Expr3 + 7, // Expr4 + 9, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S46 + gotoRow{ // S36 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr + 84, // Expr4 + 9, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S47 + gotoRow{ // S37 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + 85, // Expr4 + 9, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S48 + gotoRow{ // S38 -1, // S' -1, // Fscript -1, // Expr @@ -930,37 +778,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr + 86, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S49 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 149, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr - -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S50 + gotoRow{ // S39 -1, // S' -1, // Fscript -1, // Expr @@ -968,18 +798,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr + 87, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S51 + gotoRow{ // S40 -1, // S' -1, // Fscript -1, // Expr @@ -987,37 +818,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr + 88, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal + -1, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S52 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 150, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr - -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S53 + gotoRow{ // S41 -1, // S' -1, // Fscript -1, // Expr @@ -1029,6 +842,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1036,7 +850,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S54 + gotoRow{ // S42 + -1, // S' + -1, // Fscript + 89, // Expr + 90, // Expr1 + 91, // Expr2 + 92, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S43 -1, // S' -1, // Fscript -1, // Expr @@ -1048,6 +882,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1055,26 +890,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S55 + gotoRow{ // S44 -1, // S' -1, // Fscript - 152, // Expr - 45, // Expr1 - 46, // Expr2 - 47, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref - -1, // Args - -1, // ExprList + 125, // Args + 138, // ExprList }, - gotoRow{ // S56 + gotoRow{ // S45 -1, // S' -1, // Fscript -1, // Expr @@ -1086,6 +922,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1093,7 +930,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S57 + gotoRow{ // S46 -1, // S' -1, // Fscript -1, // Expr @@ -1105,6 +942,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1112,7 +950,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S58 + gotoRow{ // S47 -1, // S' -1, // Fscript -1, // Expr @@ -1124,6 +962,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1131,7 +970,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S59 + gotoRow{ // S48 -1, // S' -1, // Fscript -1, // Expr @@ -1143,6 +982,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1150,7 +990,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S60 + gotoRow{ // S49 -1, // S' -1, // Fscript -1, // Expr @@ -1162,6 +1002,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1169,7 +1010,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S61 + gotoRow{ // S50 -1, // S' -1, // Fscript -1, // Expr @@ -1181,6 +1022,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1188,7 +1030,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S62 + gotoRow{ // S51 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 154, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S52 -1, // S' -1, // Fscript -1, // Expr @@ -1200,6 +1062,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1207,7 +1070,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S63 + gotoRow{ // S53 -1, // S' -1, // Fscript -1, // Expr @@ -1219,6 +1082,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1226,7 +1090,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S64 + gotoRow{ // S54 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 156, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S55 -1, // S' -1, // Fscript -1, // Expr @@ -1238,6 +1122,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1245,7 +1130,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S65 + gotoRow{ // S56 -1, // S' -1, // Fscript -1, // Expr @@ -1257,6 +1142,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1264,7 +1150,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S66 + gotoRow{ // S57 + -1, // S' + -1, // Fscript + 158, // Expr + 47, // Expr1 + 48, // Expr2 + 49, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + 46, // TernaryExpr + 60, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S58 -1, // S' -1, // Fscript -1, // Expr @@ -1276,6 +1182,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1283,45 +1190,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S67 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal - 154, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S68 - -1, // S' - -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr - -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal - -1, // Ref - 157, // Args - 134, // ExprList - }, - gotoRow{ // S69 + gotoRow{ // S59 -1, // S' -1, // Fscript -1, // Expr @@ -1333,6 +1202,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1340,7 +1210,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S70 + gotoRow{ // S60 -1, // S' -1, // Fscript -1, // Expr @@ -1352,6 +1222,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1359,7 +1230,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S71 + gotoRow{ // S61 -1, // S' -1, // Fscript -1, // Expr @@ -1371,6 +1242,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1378,7 +1250,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S72 + gotoRow{ // S62 -1, // S' -1, // Fscript -1, // Expr @@ -1390,6 +1262,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1397,7 +1270,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S73 + gotoRow{ // S63 -1, // S' -1, // Fscript -1, // Expr @@ -1409,6 +1282,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1416,7 +1290,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S74 + gotoRow{ // S64 -1, // S' -1, // Fscript -1, // Expr @@ -1428,6 +1302,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1435,7 +1310,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S75 + gotoRow{ // S65 -1, // S' -1, // Fscript -1, // Expr @@ -1447,6 +1322,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1454,7 +1330,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S76 + gotoRow{ // S66 -1, // S' -1, // Fscript -1, // Expr @@ -1466,6 +1342,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1473,7 +1350,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S77 + gotoRow{ // S67 -1, // S' -1, // Fscript -1, // Expr @@ -1485,6 +1362,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1492,26 +1370,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S78 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 174, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr - -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S79 + gotoRow{ // S68 -1, // S' -1, // Fscript -1, // Expr @@ -1523,6 +1382,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1530,7 +1390,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S80 + gotoRow{ // S69 -1, // S' -1, // Fscript -1, // Expr @@ -1542,6 +1402,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1549,7 +1410,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S81 + gotoRow{ // S70 -1, // S' -1, // Fscript -1, // Expr @@ -1557,18 +1418,59 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 175, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + 161, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S71 + -1, // S' + -1, // Fscript + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal + -1, // Ref + 164, // Args + 138, // ExprList + }, + gotoRow{ // S72 + -1, // S' + -1, // Fscript + 165, // Expr + 167, // Expr1 + 168, // Expr2 + 169, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + 166, // TernaryExpr + 180, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S82 + gotoRow{ // S73 -1, // S' -1, // Fscript -1, // Expr @@ -1580,6 +1482,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1587,7 +1490,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S83 + gotoRow{ // S74 -1, // S' -1, // Fscript -1, // Expr @@ -1599,6 +1502,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1606,26 +1510,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S84 - -1, // S' - -1, // Fscript - 177, // Expr - 45, // Expr1 - 46, // Expr2 - 47, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr - -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S85 + gotoRow{ // S75 -1, // S' -1, // Fscript -1, // Expr @@ -1637,6 +1522,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1644,7 +1530,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S86 + gotoRow{ // S76 -1, // S' -1, // Fscript -1, // Expr @@ -1656,6 +1542,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1663,7 +1550,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S87 + gotoRow{ // S77 -1, // S' -1, // Fscript -1, // Expr @@ -1675,6 +1562,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1682,7 +1570,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S88 + gotoRow{ // S78 -1, // S' -1, // Fscript -1, // Expr @@ -1694,6 +1582,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1701,7 +1590,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S89 + gotoRow{ // S79 -1, // S' -1, // Fscript -1, // Expr @@ -1713,6 +1602,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1720,7 +1610,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S90 + gotoRow{ // S80 -1, // S' -1, // Fscript -1, // Expr @@ -1732,6 +1622,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1739,7 +1630,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S91 + gotoRow{ // S81 -1, // S' -1, // Fscript -1, // Expr @@ -1751,6 +1642,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1758,7 +1650,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S92 + gotoRow{ // S82 -1, // S' -1, // Fscript -1, // Expr @@ -1770,6 +1662,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1777,7 +1670,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S93 + gotoRow{ // S83 -1, // S' -1, // Fscript -1, // Expr @@ -1789,6 +1682,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1796,7 +1690,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S94 + gotoRow{ // S84 -1, // S' -1, // Fscript -1, // Expr @@ -1808,6 +1702,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1815,7 +1710,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S95 + gotoRow{ // S85 -1, // S' -1, // Fscript -1, // Expr @@ -1827,6 +1722,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1834,26 +1730,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S96 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal - 179, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S97 + gotoRow{ // S86 -1, // S' -1, // Fscript -1, // Expr @@ -1865,6 +1742,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1872,7 +1750,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S98 + gotoRow{ // S87 -1, // S' -1, // Fscript -1, // Expr @@ -1884,6 +1762,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1891,7 +1770,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S99 + gotoRow{ // S88 -1, // S' -1, // Fscript -1, // Expr @@ -1903,6 +1782,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1910,7 +1790,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S100 + gotoRow{ // S89 -1, // S' -1, // Fscript -1, // Expr @@ -1922,6 +1802,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1929,7 +1810,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S101 + gotoRow{ // S90 -1, // S' -1, // Fscript -1, // Expr @@ -1941,6 +1822,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1948,7 +1830,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S102 + gotoRow{ // S91 -1, // S' -1, // Fscript -1, // Expr @@ -1960,6 +1842,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1967,7 +1850,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S103 + gotoRow{ // S92 -1, // S' -1, // Fscript -1, // Expr @@ -1979,6 +1862,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -1986,7 +1870,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S104 + gotoRow{ // S93 -1, // S' -1, // Fscript -1, // Expr @@ -1998,6 +1882,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2005,7 +1890,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S105 + gotoRow{ // S94 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 206, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S95 -1, // S' -1, // Fscript -1, // Expr @@ -2017,6 +1922,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2024,7 +1930,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S106 + gotoRow{ // S96 -1, // S' -1, // Fscript -1, // Expr @@ -2036,6 +1942,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2043,7 +1950,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S107 + gotoRow{ // S97 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 207, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S98 -1, // S' -1, // Fscript -1, // Expr @@ -2055,6 +1982,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2062,7 +1990,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S108 + gotoRow{ // S99 -1, // S' -1, // Fscript -1, // Expr @@ -2074,6 +2002,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2081,7 +2010,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S109 + gotoRow{ // S100 + -1, // S' + -1, // Fscript + 209, // Expr + 90, // Expr1 + 91, // Expr2 + 92, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S101 -1, // S' -1, // Fscript -1, // Expr @@ -2093,6 +2042,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2100,7 +2050,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S110 + gotoRow{ // S102 -1, // S' -1, // Fscript -1, // Expr @@ -2112,6 +2062,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2119,7 +2070,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S111 + gotoRow{ // S103 -1, // S' -1, // Fscript -1, // Expr @@ -2131,6 +2082,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2138,7 +2090,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S112 + gotoRow{ // S104 -1, // S' -1, // Fscript -1, // Expr @@ -2150,6 +2102,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2157,7 +2110,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S113 + gotoRow{ // S105 -1, // S' -1, // Fscript -1, // Expr @@ -2169,6 +2122,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2176,26 +2130,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S114 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 195, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr - -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal - -1, // Ref - -1, // Args - -1, // ExprList + gotoRow{ // S106 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList }, - gotoRow{ // S115 + gotoRow{ // S107 -1, // S' -1, // Fscript -1, // Expr @@ -2207,6 +2162,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2214,7 +2170,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S116 + gotoRow{ // S108 -1, // S' -1, // Fscript -1, // Expr @@ -2226,6 +2182,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2233,26 +2190,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S117 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 196, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr - -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal - -1, // Ref - -1, // Args - -1, // ExprList + gotoRow{ // S109 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList }, - gotoRow{ // S118 + gotoRow{ // S110 -1, // S' -1, // Fscript -1, // Expr @@ -2264,6 +2222,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2271,7 +2230,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S119 + gotoRow{ // S111 -1, // S' -1, // Fscript -1, // Expr @@ -2283,6 +2242,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2290,26 +2250,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S120 + gotoRow{ // S112 -1, // S' -1, // Fscript - 198, // Expr - 45, // Expr1 - 46, // Expr2 - 47, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal - -1, // Ref + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + 211, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S121 + gotoRow{ // S113 -1, // S' -1, // Fscript -1, // Expr @@ -2321,6 +2282,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2328,7 +2290,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S122 + gotoRow{ // S114 -1, // S' -1, // Fscript -1, // Expr @@ -2340,6 +2302,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2347,7 +2310,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S123 + gotoRow{ // S115 -1, // S' -1, // Fscript -1, // Expr @@ -2359,6 +2322,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2366,7 +2330,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S124 + gotoRow{ // S116 -1, // S' -1, // Fscript -1, // Expr @@ -2378,6 +2342,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2385,7 +2350,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S125 + gotoRow{ // S117 -1, // S' -1, // Fscript -1, // Expr @@ -2397,6 +2362,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2404,7 +2370,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S126 + gotoRow{ // S118 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 227, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S119 -1, // S' -1, // Fscript -1, // Expr @@ -2416,6 +2402,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2423,7 +2410,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S127 + gotoRow{ // S120 -1, // S' -1, // Fscript -1, // Expr @@ -2435,6 +2422,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2442,7 +2430,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S128 + gotoRow{ // S121 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 228, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S122 -1, // S' -1, // Fscript -1, // Expr @@ -2454,6 +2462,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2461,7 +2470,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S129 + gotoRow{ // S123 -1, // S' -1, // Fscript -1, // Expr @@ -2473,6 +2482,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2480,7 +2490,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S130 + gotoRow{ // S124 + -1, // S' + -1, // Fscript + 230, // Expr + 90, // Expr1 + 91, // Expr2 + 92, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S125 -1, // S' -1, // Fscript -1, // Expr @@ -2492,6 +2522,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2499,7 +2530,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S131 + gotoRow{ // S126 -1, // S' -1, // Fscript -1, // Expr @@ -2511,6 +2542,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2518,7 +2550,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S132 + gotoRow{ // S127 -1, // S' -1, // Fscript -1, // Expr @@ -2530,6 +2562,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2537,26 +2570,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S133 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal - 201, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S134 + gotoRow{ // S128 -1, // S' -1, // Fscript -1, // Expr @@ -2568,6 +2582,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2575,26 +2590,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S135 - -1, // S' - -1, // Fscript - -1, // Expr - 205, // Expr1 - 46, // Expr2 - 47, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr - -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S136 + gotoRow{ // S129 -1, // S' -1, // Fscript -1, // Expr @@ -2606,6 +2602,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2613,178 +2610,427 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S137 - -1, // S' - -1, // Fscript - -1, // Expr + gotoRow{ // S130 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S131 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S132 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S133 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S134 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S135 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S136 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S137 + -1, // S' + -1, // Fscript + -1, // Expr -1, // Expr1 - 206, // Expr2 - 47, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal - -1, // Ref + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + 233, // Ref -1, // Args -1, // ExprList }, gotoRow{ // S138 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S139 + -1, // S' + -1, // Fscript + -1, // Expr + 237, // Expr1 + 48, // Expr2 + 49, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S140 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S141 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S142 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + 238, // Expr2 + 49, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S143 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 207, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 239, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S139 + gotoRow{ // S144 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 208, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 240, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S140 + gotoRow{ // S145 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 209, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 241, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S141 + gotoRow{ // S146 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 210, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 242, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S142 + gotoRow{ // S147 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 211, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 243, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S143 + gotoRow{ // S148 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 212, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 244, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S144 + gotoRow{ // S149 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 -1, // Expr3 - 213, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 245, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S145 + gotoRow{ // S150 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 -1, // Expr3 - 214, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 246, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S146 + gotoRow{ // S151 -1, // S' -1, // Fscript -1, // Expr @@ -2792,18 +3038,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 215, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 247, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S147 + gotoRow{ // S152 -1, // S' -1, // Fscript -1, // Expr @@ -2811,18 +3058,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 216, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 248, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S148 + gotoRow{ // S153 -1, // S' -1, // Fscript -1, // Expr @@ -2830,18 +3078,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 217, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr + 249, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal + -1, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S149 + gotoRow{ // S154 -1, // S' -1, // Fscript -1, // Expr @@ -2853,6 +3102,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2860,7 +3110,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S150 + gotoRow{ // S155 + -1, // S' + -1, // Fscript + 250, // Expr + 90, // Expr1 + 91, // Expr2 + 92, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S156 -1, // S' -1, // Fscript -1, // Expr @@ -2872,6 +3142,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2879,26 +3150,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S151 + gotoRow{ // S157 -1, // S' -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref - 218, // Args - 134, // ExprList + 251, // Args + 138, // ExprList }, - gotoRow{ // S152 + gotoRow{ // S158 -1, // S' -1, // Fscript -1, // Expr @@ -2910,6 +3182,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2917,26 +3190,47 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S153 + gotoRow{ // S159 -1, // S' -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref - 220, // Args - 134, // ExprList + 253, // Args + 138, // ExprList }, - gotoRow{ // S154 + gotoRow{ // S160 + -1, // S' + -1, // Fscript + 165, // Expr + 167, // Expr1 + 168, // Expr2 + 169, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + 166, // TernaryExpr + 254, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S161 -1, // S' -1, // Fscript -1, // Expr @@ -2948,6 +3242,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2955,7 +3250,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S155 + gotoRow{ // S162 -1, // S' -1, // Fscript -1, // Expr @@ -2967,6 +3262,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2974,7 +3270,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S156 + gotoRow{ // S163 -1, // S' -1, // Fscript -1, // Expr @@ -2986,6 +3282,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -2993,7 +3290,187 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S157 + gotoRow{ // S164 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S165 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S166 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S167 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S168 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S169 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S170 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S171 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 271, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S172 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S173 -1, // S' -1, // Fscript -1, // Expr @@ -3005,6 +3482,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3012,7 +3490,347 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S158 + gotoRow{ // S174 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 273, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S175 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S176 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S177 + -1, // S' + -1, // Fscript + 275, // Expr + 47, // Expr1 + 48, // Expr2 + 49, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + 276, // TernaryExpr + 60, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S178 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S179 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S180 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S181 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S182 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S183 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S184 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S185 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S186 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S187 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S188 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S189 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S190 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + 280, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S191 -1, // S' -1, // Fscript -1, // Expr @@ -3024,6 +3842,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3031,7 +3850,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S159 + gotoRow{ // S192 -1, // S' -1, // Fscript -1, // Expr @@ -3043,6 +3862,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3050,216 +3870,207 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S160 + gotoRow{ // S193 -1, // S' -1, // Fscript -1, // Expr - 224, // Expr1 - 75, // Expr2 - 76, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr - -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S161 - -1, // S' - -1, // Fscript - 225, // Expr - 226, // Expr1 - 227, // Expr2 - 228, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr + 283, // Expr1 + 91, // Expr2 + 92, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S162 + gotoRow{ // S194 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 - 249, // Expr2 - 76, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 284, // Expr2 + 92, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S163 + gotoRow{ // S195 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 250, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 285, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S164 + gotoRow{ // S196 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 251, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 286, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S165 + gotoRow{ // S197 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 252, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 287, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S166 + gotoRow{ // S198 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 253, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 288, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S167 + gotoRow{ // S199 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 254, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 289, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S168 + gotoRow{ // S200 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 255, // Expr3 - 77, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 290, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S169 + gotoRow{ // S201 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 -1, // Expr3 - 256, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 291, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S170 + gotoRow{ // S202 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 -1, // Expr3 - 257, // Expr4 - 79, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 292, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S171 + gotoRow{ // S203 -1, // S' -1, // Fscript -1, // Expr @@ -3267,18 +4078,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 258, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 293, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S172 + gotoRow{ // S204 -1, // S' -1, // Fscript -1, // Expr @@ -3286,18 +4098,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 259, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 294, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S173 + gotoRow{ // S205 -1, // S' -1, // Fscript -1, // Expr @@ -3305,18 +4118,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 260, // Expr5 - 80, // Expr6 - 82, // PrimaryExpr + 295, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr -1, // TernaryExpr - 87, // BoolLit - 90, // NilLit - 86, // Literal + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S174 + gotoRow{ // S206 -1, // S' -1, // Fscript -1, // Expr @@ -3328,6 +4142,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3335,7 +4150,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S175 + gotoRow{ // S207 -1, // S' -1, // Fscript -1, // Expr @@ -3347,6 +4162,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3354,26 +4170,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S176 + gotoRow{ // S208 -1, // S' -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref - 261, // Args - 134, // ExprList + 296, // Args + 138, // ExprList }, - gotoRow{ // S177 + gotoRow{ // S209 -1, // S' -1, // Fscript -1, // Expr @@ -3385,6 +4202,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3392,26 +4210,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S178 + gotoRow{ // S210 -1, // S' -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref - 263, // Args - 134, // ExprList + 298, // Args + 138, // ExprList }, - gotoRow{ // S179 + gotoRow{ // S211 -1, // S' -1, // Fscript -1, // Expr @@ -3423,6 +4242,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3430,7 +4250,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S180 + gotoRow{ // S212 -1, // S' -1, // Fscript -1, // Expr @@ -3442,6 +4262,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3449,7 +4270,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S181 + gotoRow{ // S213 -1, // S' -1, // Fscript -1, // Expr @@ -3461,6 +4282,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3468,197 +4290,207 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S182 + gotoRow{ // S214 -1, // S' -1, // Fscript -1, // Expr - 266, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 301, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S183 + gotoRow{ // S215 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 - 267, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 302, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S184 + gotoRow{ // S216 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 268, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 303, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S185 + gotoRow{ // S217 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 269, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 304, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S186 + gotoRow{ // S218 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 270, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 305, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S187 + gotoRow{ // S219 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 271, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 306, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S188 + gotoRow{ // S220 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 272, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 307, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S189 + gotoRow{ // S221 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 - 273, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 308, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S190 + gotoRow{ // S222 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 -1, // Expr3 - 274, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 309, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S191 + gotoRow{ // S223 -1, // S' -1, // Fscript -1, // Expr -1, // Expr1 -1, // Expr2 -1, // Expr3 - 275, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 310, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S192 + gotoRow{ // S224 -1, // S' -1, // Fscript -1, // Expr @@ -3666,18 +4498,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 276, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 311, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S193 + gotoRow{ // S225 -1, // S' -1, // Fscript -1, // Expr @@ -3685,18 +4518,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 277, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 312, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S194 + gotoRow{ // S226 -1, // S' -1, // Fscript -1, // Expr @@ -3704,18 +4538,19 @@ var gotoTab = gotoTable{ -1, // Expr2 -1, // Expr3 -1, // Expr4 - 278, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 313, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S195 + gotoRow{ // S227 -1, // S' -1, // Fscript -1, // Expr @@ -3727,6 +4562,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3734,7 +4570,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S196 + gotoRow{ // S228 -1, // S' -1, // Fscript -1, // Expr @@ -3746,6 +4582,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3753,26 +4590,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S197 + gotoRow{ // S229 -1, // S' -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref - 279, // Args - 134, // ExprList + 314, // Args + 138, // ExprList }, - gotoRow{ // S198 + gotoRow{ // S230 -1, // S' -1, // Fscript -1, // Expr @@ -3784,6 +4622,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3791,7 +4630,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S199 + gotoRow{ // S231 -1, // S' -1, // Fscript -1, // Expr @@ -3803,6 +4642,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3810,26 +4650,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S200 + gotoRow{ // S232 -1, // S' -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref - 281, // Args - 134, // ExprList + 316, // Args + 138, // ExprList }, - gotoRow{ // S201 + gotoRow{ // S233 -1, // S' -1, // Fscript -1, // Expr @@ -3841,6 +4682,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3848,7 +4690,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S202 + gotoRow{ // S234 -1, // S' -1, // Fscript -1, // Expr @@ -3860,6 +4702,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3867,7 +4710,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S203 + gotoRow{ // S235 -1, // S' -1, // Fscript -1, // Expr @@ -3879,6 +4722,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3886,26 +4730,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S204 + gotoRow{ // S236 -1, // S' -1, // Fscript - 284, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr + 319, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S205 + gotoRow{ // S237 -1, // S' -1, // Fscript -1, // Expr @@ -3917,6 +4762,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3924,7 +4770,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S206 + gotoRow{ // S238 -1, // S' -1, // Fscript -1, // Expr @@ -3936,6 +4782,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3943,7 +4790,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S207 + gotoRow{ // S239 -1, // S' -1, // Fscript -1, // Expr @@ -3955,6 +4802,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3962,7 +4810,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S208 + gotoRow{ // S240 -1, // S' -1, // Fscript -1, // Expr @@ -3974,6 +4822,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -3981,7 +4830,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S209 + gotoRow{ // S241 -1, // S' -1, // Fscript -1, // Expr @@ -3993,6 +4842,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4000,7 +4850,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S210 + gotoRow{ // S242 -1, // S' -1, // Fscript -1, // Expr @@ -4012,6 +4862,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4019,7 +4870,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S211 + gotoRow{ // S243 -1, // S' -1, // Fscript -1, // Expr @@ -4031,6 +4882,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4038,7 +4890,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S212 + gotoRow{ // S244 -1, // S' -1, // Fscript -1, // Expr @@ -4050,6 +4902,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4057,7 +4910,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S213 + gotoRow{ // S245 -1, // S' -1, // Fscript -1, // Expr @@ -4069,6 +4922,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4076,7 +4930,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S214 + gotoRow{ // S246 -1, // S' -1, // Fscript -1, // Expr @@ -4088,6 +4942,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4095,7 +4950,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S215 + gotoRow{ // S247 -1, // S' -1, // Fscript -1, // Expr @@ -4107,6 +4962,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4114,7 +4970,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S216 + gotoRow{ // S248 -1, // S' -1, // Fscript -1, // Expr @@ -4126,6 +4982,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4133,7 +4990,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S217 + gotoRow{ // S249 -1, // S' -1, // Fscript -1, // Expr @@ -4145,6 +5002,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4152,7 +5010,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S218 + gotoRow{ // S250 -1, // S' -1, // Fscript -1, // Expr @@ -4164,6 +5022,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4171,7 +5030,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S219 + gotoRow{ // S251 -1, // S' -1, // Fscript -1, // Expr @@ -4183,6 +5042,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4190,7 +5050,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S220 + gotoRow{ // S252 -1, // S' -1, // Fscript -1, // Expr @@ -4202,6 +5062,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4209,7 +5070,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S221 + gotoRow{ // S253 -1, // S' -1, // Fscript -1, // Expr @@ -4221,6 +5082,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4228,7 +5090,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S222 + gotoRow{ // S254 -1, // S' -1, // Fscript -1, // Expr @@ -4240,6 +5102,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4247,7 +5110,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S223 + gotoRow{ // S255 -1, // S' -1, // Fscript -1, // Expr @@ -4259,6 +5122,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4266,7 +5130,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S224 + gotoRow{ // S256 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + -1, // Expr5 + -1, // Expr6 + -1, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + -1, // BoolLit + -1, // NilLit + -1, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S257 -1, // S' -1, // Fscript -1, // Expr @@ -4278,6 +5162,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4285,64 +5170,267 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S225 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal - -1, // Ref - -1, // Args - -1, // ExprList + gotoRow{ // S258 + -1, // S' + -1, // Fscript + -1, // Expr + 323, // Expr1 + 168, // Expr2 + 169, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S259 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + 324, // Expr2 + 169, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S260 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + 325, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S261 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + 326, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S262 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + 327, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S263 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + 328, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S264 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + 329, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S265 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + 330, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S266 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + 331, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S267 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + 332, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList }, - gotoRow{ // S226 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal - -1, // Ref - -1, // Args - -1, // ExprList + gotoRow{ // S268 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 333, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList }, - gotoRow{ // S227 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal - -1, // Ref - -1, // Args - -1, // ExprList + gotoRow{ // S269 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 334, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList }, - gotoRow{ // S228 + gotoRow{ // S270 + -1, // S' + -1, // Fscript + -1, // Expr + -1, // Expr1 + -1, // Expr2 + -1, // Expr3 + -1, // Expr4 + 335, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S271 -1, // S' -1, // Fscript -1, // Expr @@ -4354,6 +5442,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4361,7 +5450,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S229 + gotoRow{ // S272 + -1, // S' + -1, // Fscript + 336, // Expr + 90, // Expr1 + 91, // Expr2 + 92, // Expr3 + 93, // Expr4 + 95, // Expr5 + 96, // Expr6 + 98, // PrimaryExpr + -1, // TernaryExpr + -1, // TernaryArgument + 103, // BoolLit + 106, // NilLit + 102, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S273 -1, // S' -1, // Fscript -1, // Expr @@ -4373,6 +5482,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4380,26 +5490,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S230 + gotoRow{ // S274 -1, // S' -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 300, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal -1, // Ref - -1, // Args - -1, // ExprList + 337, // Args + 138, // ExprList }, - gotoRow{ // S231 + gotoRow{ // S275 -1, // S' -1, // Fscript -1, // Expr @@ -4411,6 +5522,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4418,7 +5530,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S232 + gotoRow{ // S276 -1, // S' -1, // Fscript -1, // Expr @@ -4430,6 +5542,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4437,45 +5550,67 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S233 + gotoRow{ // S277 -1, // S' -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 301, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr + 113, // Expr + 114, // Expr1 + 115, // Expr2 + 116, // Expr3 + 117, // Expr4 + 119, // Expr5 + 120, // Expr6 + 122, // PrimaryExpr -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal + -1, // TernaryArgument + 128, // BoolLit + 131, // NilLit + 127, // Literal + -1, // Ref + 340, // Args + 138, // ExprList + }, + gotoRow{ // S278 + -1, // S' + -1, // Fscript + 165, // Expr + 167, // Expr1 + 168, // Expr2 + 169, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + 166, // TernaryExpr + 341, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal -1, // Ref -1, // Args -1, // ExprList }, - gotoRow{ // S234 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal - -1, // Ref - -1, // Args - -1, // ExprList + gotoRow{ // S279 + -1, // S' + -1, // Fscript + 342, // Expr + 4, // Expr1 + 5, // Expr2 + 6, // Expr3 + 7, // Expr4 + 9, // Expr5 + 10, // Expr6 + 12, // PrimaryExpr + 343, // TernaryExpr + 345, // TernaryArgument + 18, // BoolLit + 21, // NilLit + 16, // Literal + -1, // Ref + -1, // Args + -1, // ExprList }, - gotoRow{ // S235 + gotoRow{ // S280 -1, // S' -1, // Fscript -1, // Expr @@ -4487,6 +5622,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4494,26 +5630,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S236 - -1, // S' - -1, // Fscript - 303, // Expr - 45, // Expr1 - 46, // Expr2 - 47, // Expr3 - 48, // Expr4 - 50, // Expr5 - 51, // Expr6 - 53, // PrimaryExpr - -1, // TernaryExpr - 58, // BoolLit - 61, // NilLit - 57, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S237 + gotoRow{ // S281 -1, // S' -1, // Fscript -1, // Expr @@ -4525,6 +5642,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4532,7 +5650,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S238 + gotoRow{ // S282 -1, // S' -1, // Fscript -1, // Expr @@ -4544,6 +5662,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4551,7 +5670,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S239 + gotoRow{ // S283 -1, // S' -1, // Fscript -1, // Expr @@ -4563,6 +5682,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4570,7 +5690,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S240 + gotoRow{ // S284 -1, // S' -1, // Fscript -1, // Expr @@ -4582,6 +5702,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4589,7 +5710,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S241 + gotoRow{ // S285 -1, // S' -1, // Fscript -1, // Expr @@ -4601,6 +5722,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4608,7 +5730,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S242 + gotoRow{ // S286 -1, // S' -1, // Fscript -1, // Expr @@ -4620,6 +5742,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4627,7 +5750,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S243 + gotoRow{ // S287 -1, // S' -1, // Fscript -1, // Expr @@ -4639,6 +5762,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4646,7 +5770,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S244 + gotoRow{ // S288 -1, // S' -1, // Fscript -1, // Expr @@ -4658,6 +5782,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4665,7 +5790,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S245 + gotoRow{ // S289 -1, // S' -1, // Fscript -1, // Expr @@ -4677,6 +5802,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4684,7 +5810,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S246 + gotoRow{ // S290 -1, // S' -1, // Fscript -1, // Expr @@ -4696,6 +5822,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4703,7 +5830,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S247 + gotoRow{ // S291 -1, // S' -1, // Fscript -1, // Expr @@ -4715,6 +5842,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4722,26 +5850,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S248 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - -1, // Expr5 - -1, // Expr6 - -1, // PrimaryExpr - -1, // TernaryExpr - -1, // BoolLit - -1, // NilLit - -1, // Literal - 305, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S249 + gotoRow{ // S292 -1, // S' -1, // Fscript -1, // Expr @@ -4753,6 +5862,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4760,7 +5870,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S250 + gotoRow{ // S293 -1, // S' -1, // Fscript -1, // Expr @@ -4772,6 +5882,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4779,7 +5890,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S251 + gotoRow{ // S294 -1, // S' -1, // Fscript -1, // Expr @@ -4791,6 +5902,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4798,7 +5910,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S252 + gotoRow{ // S295 -1, // S' -1, // Fscript -1, // Expr @@ -4810,6 +5922,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4817,7 +5930,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S253 + gotoRow{ // S296 -1, // S' -1, // Fscript -1, // Expr @@ -4829,6 +5942,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4836,7 +5950,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S254 + gotoRow{ // S297 -1, // S' -1, // Fscript -1, // Expr @@ -4848,6 +5962,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4855,7 +5970,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S255 + gotoRow{ // S298 -1, // S' -1, // Fscript -1, // Expr @@ -4867,6 +5982,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4874,7 +5990,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S256 + gotoRow{ // S299 -1, // S' -1, // Fscript -1, // Expr @@ -4886,6 +6002,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4893,7 +6010,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S257 + gotoRow{ // S300 -1, // S' -1, // Fscript -1, // Expr @@ -4905,6 +6022,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4912,7 +6030,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S258 + gotoRow{ // S301 -1, // S' -1, // Fscript -1, // Expr @@ -4924,6 +6042,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4931,7 +6050,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S259 + gotoRow{ // S302 -1, // S' -1, // Fscript -1, // Expr @@ -4943,6 +6062,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4950,7 +6070,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S260 + gotoRow{ // S303 -1, // S' -1, // Fscript -1, // Expr @@ -4962,6 +6082,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4969,7 +6090,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S261 + gotoRow{ // S304 -1, // S' -1, // Fscript -1, // Expr @@ -4981,6 +6102,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -4988,7 +6110,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S262 + gotoRow{ // S305 -1, // S' -1, // Fscript -1, // Expr @@ -5000,6 +6122,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5007,7 +6130,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S263 + gotoRow{ // S306 -1, // S' -1, // Fscript -1, // Expr @@ -5019,6 +6142,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5026,7 +6150,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S264 + gotoRow{ // S307 -1, // S' -1, // Fscript -1, // Expr @@ -5038,6 +6162,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5045,7 +6170,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S265 + gotoRow{ // S308 -1, // S' -1, // Fscript -1, // Expr @@ -5057,6 +6182,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5064,7 +6190,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S266 + gotoRow{ // S309 -1, // S' -1, // Fscript -1, // Expr @@ -5076,6 +6202,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5083,7 +6210,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S267 + gotoRow{ // S310 -1, // S' -1, // Fscript -1, // Expr @@ -5095,6 +6222,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5102,7 +6230,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S268 + gotoRow{ // S311 -1, // S' -1, // Fscript -1, // Expr @@ -5114,6 +6242,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5121,7 +6250,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S269 + gotoRow{ // S312 -1, // S' -1, // Fscript -1, // Expr @@ -5133,6 +6262,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5140,7 +6270,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S270 + gotoRow{ // S313 -1, // S' -1, // Fscript -1, // Expr @@ -5152,6 +6282,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5159,7 +6290,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S271 + gotoRow{ // S314 -1, // S' -1, // Fscript -1, // Expr @@ -5171,6 +6302,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5178,7 +6310,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S272 + gotoRow{ // S315 -1, // S' -1, // Fscript -1, // Expr @@ -5190,6 +6322,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5197,7 +6330,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S273 + gotoRow{ // S316 -1, // S' -1, // Fscript -1, // Expr @@ -5209,6 +6342,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5216,7 +6350,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S274 + gotoRow{ // S317 -1, // S' -1, // Fscript -1, // Expr @@ -5228,6 +6362,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5235,7 +6370,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S275 + gotoRow{ // S318 -1, // S' -1, // Fscript -1, // Expr @@ -5247,6 +6382,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5254,7 +6390,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S276 + gotoRow{ // S319 -1, // S' -1, // Fscript -1, // Expr @@ -5266,6 +6402,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5273,7 +6410,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S277 + gotoRow{ // S320 -1, // S' -1, // Fscript -1, // Expr @@ -5285,6 +6422,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5292,7 +6430,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S278 + gotoRow{ // S321 -1, // S' -1, // Fscript -1, // Expr @@ -5304,6 +6442,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5311,7 +6450,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S279 + gotoRow{ // S322 + -1, // S' + -1, // Fscript + 352, // Expr + 47, // Expr1 + 48, // Expr2 + 49, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + 353, // TernaryExpr + 355, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S323 -1, // S' -1, // Fscript -1, // Expr @@ -5323,6 +6482,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5330,7 +6490,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S280 + gotoRow{ // S324 -1, // S' -1, // Fscript -1, // Expr @@ -5342,6 +6502,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5349,7 +6510,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S281 + gotoRow{ // S325 -1, // S' -1, // Fscript -1, // Expr @@ -5361,6 +6522,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5368,7 +6530,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S282 + gotoRow{ // S326 -1, // S' -1, // Fscript -1, // Expr @@ -5380,6 +6542,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5387,7 +6550,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S283 + gotoRow{ // S327 -1, // S' -1, // Fscript -1, // Expr @@ -5399,6 +6562,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5406,7 +6570,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S284 + gotoRow{ // S328 -1, // S' -1, // Fscript -1, // Expr @@ -5418,6 +6582,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5425,7 +6590,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S285 + gotoRow{ // S329 -1, // S' -1, // Fscript -1, // Expr @@ -5437,6 +6602,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5444,7 +6610,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S286 + gotoRow{ // S330 -1, // S' -1, // Fscript -1, // Expr @@ -5456,6 +6622,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5463,254 +6630,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S287 - -1, // S' - -1, // Fscript - -1, // Expr - 312, // Expr1 - 227, // Expr2 - 228, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S288 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - 313, // Expr2 - 228, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S289 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 314, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S290 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 315, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S291 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 316, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S292 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 317, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S293 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 318, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S294 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - 319, // Expr3 - 229, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S295 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - 320, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S296 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - 321, // Expr4 - 231, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S297 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 322, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S298 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 323, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S299 - -1, // S' - -1, // Fscript - -1, // Expr - -1, // Expr1 - -1, // Expr2 - -1, // Expr3 - -1, // Expr4 - 324, // Expr5 - 232, // Expr6 - 234, // PrimaryExpr - -1, // TernaryExpr - 239, // BoolLit - 242, // NilLit - 238, // Literal - -1, // Ref - -1, // Args - -1, // ExprList - }, - gotoRow{ // S300 + gotoRow{ // S331 -1, // S' -1, // Fscript -1, // Expr @@ -5722,6 +6642,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5729,7 +6650,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S301 + gotoRow{ // S332 -1, // S' -1, // Fscript -1, // Expr @@ -5741,6 +6662,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5748,26 +6670,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S302 - -1, // S' - -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr - -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal - -1, // Ref - 325, // Args - 134, // ExprList - }, - gotoRow{ // S303 + gotoRow{ // S333 -1, // S' -1, // Fscript -1, // Expr @@ -5779,6 +6682,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5786,26 +6690,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S304 - -1, // S' - -1, // Fscript - 109, // Expr - 110, // Expr1 - 111, // Expr2 - 112, // Expr3 - 113, // Expr4 - 115, // Expr5 - 116, // Expr6 - 118, // PrimaryExpr - -1, // TernaryExpr - 124, // BoolLit - 127, // NilLit - 123, // Literal - -1, // Ref - 327, // Args - 134, // ExprList - }, - gotoRow{ // S305 + gotoRow{ // S334 -1, // S' -1, // Fscript -1, // Expr @@ -5817,6 +6702,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5824,7 +6710,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S306 + gotoRow{ // S335 -1, // S' -1, // Fscript -1, // Expr @@ -5836,6 +6722,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5843,7 +6730,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S307 + gotoRow{ // S336 -1, // S' -1, // Fscript -1, // Expr @@ -5855,6 +6742,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5862,7 +6750,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S308 + gotoRow{ // S337 -1, // S' -1, // Fscript -1, // Expr @@ -5874,6 +6762,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5881,7 +6770,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S309 + gotoRow{ // S338 -1, // S' -1, // Fscript -1, // Expr @@ -5893,6 +6782,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5900,7 +6790,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S310 + gotoRow{ // S339 -1, // S' -1, // Fscript -1, // Expr @@ -5912,6 +6802,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5919,7 +6810,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S311 + gotoRow{ // S340 -1, // S' -1, // Fscript -1, // Expr @@ -5931,6 +6822,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5938,7 +6830,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S312 + gotoRow{ // S341 -1, // S' -1, // Fscript -1, // Expr @@ -5950,6 +6842,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5957,7 +6850,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S313 + gotoRow{ // S342 -1, // S' -1, // Fscript -1, // Expr @@ -5969,6 +6862,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5976,7 +6870,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S314 + gotoRow{ // S343 -1, // S' -1, // Fscript -1, // Expr @@ -5988,6 +6882,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -5995,7 +6890,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S315 + gotoRow{ // S344 + -1, // S' + -1, // Fscript + 45, // Expr + 47, // Expr1 + 48, // Expr2 + 49, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + 359, // TernaryExpr + 60, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S345 -1, // S' -1, // Fscript -1, // Expr @@ -6007,6 +6922,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6014,7 +6930,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S316 + gotoRow{ // S346 -1, // S' -1, // Fscript -1, // Expr @@ -6026,6 +6942,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6033,7 +6950,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S317 + gotoRow{ // S347 -1, // S' -1, // Fscript -1, // Expr @@ -6045,6 +6962,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6052,7 +6970,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S318 + gotoRow{ // S348 -1, // S' -1, // Fscript -1, // Expr @@ -6064,6 +6982,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6071,7 +6990,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S319 + gotoRow{ // S349 -1, // S' -1, // Fscript -1, // Expr @@ -6083,6 +7002,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6090,7 +7010,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S320 + gotoRow{ // S350 -1, // S' -1, // Fscript -1, // Expr @@ -6102,6 +7022,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6109,7 +7030,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S321 + gotoRow{ // S351 -1, // S' -1, // Fscript -1, // Expr @@ -6121,6 +7042,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6128,7 +7050,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S322 + gotoRow{ // S352 -1, // S' -1, // Fscript -1, // Expr @@ -6140,6 +7062,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6147,7 +7070,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S323 + gotoRow{ // S353 -1, // S' -1, // Fscript -1, // Expr @@ -6159,6 +7082,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6166,7 +7090,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S324 + gotoRow{ // S354 + -1, // S' + -1, // Fscript + 158, // Expr + 47, // Expr1 + 48, // Expr2 + 49, // Expr3 + 50, // Expr4 + 52, // Expr5 + 53, // Expr6 + 55, // PrimaryExpr + 360, // TernaryExpr + 60, // TernaryArgument + 61, // BoolLit + 64, // NilLit + 59, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S355 -1, // S' -1, // Fscript -1, // Expr @@ -6178,6 +7122,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6185,7 +7130,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S325 + gotoRow{ // S356 -1, // S' -1, // Fscript -1, // Expr @@ -6197,6 +7142,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6204,7 +7150,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S326 + gotoRow{ // S357 -1, // S' -1, // Fscript -1, // Expr @@ -6216,6 +7162,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6223,7 +7170,27 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S327 + gotoRow{ // S358 + -1, // S' + -1, // Fscript + 165, // Expr + 167, // Expr1 + 168, // Expr2 + 169, // Expr3 + 170, // Expr4 + 172, // Expr5 + 173, // Expr6 + 175, // PrimaryExpr + 166, // TernaryExpr + 361, // TernaryArgument + 181, // BoolLit + 184, // NilLit + 179, // Literal + -1, // Ref + -1, // Args + -1, // ExprList + }, + gotoRow{ // S359 -1, // S' -1, // Fscript -1, // Expr @@ -6235,6 +7202,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6242,7 +7210,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S328 + gotoRow{ // S360 -1, // S' -1, // Fscript -1, // Expr @@ -6254,6 +7222,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6261,7 +7230,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S329 + gotoRow{ // S361 -1, // S' -1, // Fscript -1, // Expr @@ -6273,6 +7242,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6280,7 +7250,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S330 + gotoRow{ // S362 -1, // S' -1, // Fscript -1, // Expr @@ -6292,6 +7262,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal @@ -6299,7 +7270,7 @@ var gotoTab = gotoTable{ -1, // Args -1, // ExprList }, - gotoRow{ // S331 + gotoRow{ // S363 -1, // S' -1, // Fscript -1, // Expr @@ -6311,6 +7282,7 @@ var gotoTab = gotoTable{ -1, // Expr6 -1, // PrimaryExpr -1, // TernaryExpr + -1, // TernaryArgument -1, // BoolLit -1, // NilLit -1, // Literal diff --git a/data/expression/script/gocc/parser/parser.go b/data/expression/script/gocc/parser/parser.go index a5914705..d173ab8c 100644 --- a/data/expression/script/gocc/parser/parser.go +++ b/data/expression/script/gocc/parser/parser.go @@ -11,9 +11,9 @@ import ( ) const ( - numProductions = 48 - numStates = 332 - numSymbols = 51 + numProductions = 51 + numStates = 364 + numSymbols = 52 ) // Stack diff --git a/data/expression/script/gocc/parser/productionstable.go b/data/expression/script/gocc/parser/productionstable.go index 3f964355..9510ee84 100644 --- a/data/expression/script/gocc/parser/productionstable.go +++ b/data/expression/script/gocc/parser/productionstable.go @@ -57,7 +57,7 @@ var productionsTable = ProdTab{ Index: 3, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewBoolExpr(X[0], X[1], X[2]) + return ast.NewBoolExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -77,7 +77,7 @@ var productionsTable = ProdTab{ Index: 5, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewBoolExpr(X[0], X[1], X[2]) + return ast.NewBoolExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -97,7 +97,7 @@ var productionsTable = ProdTab{ Index: 7, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -107,7 +107,7 @@ var productionsTable = ProdTab{ Index: 8, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -117,7 +117,7 @@ var productionsTable = ProdTab{ Index: 9, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -127,7 +127,7 @@ var productionsTable = ProdTab{ Index: 10, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -137,7 +137,7 @@ var productionsTable = ProdTab{ Index: 11, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -147,7 +147,7 @@ var productionsTable = ProdTab{ Index: 12, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -167,7 +167,7 @@ var productionsTable = ProdTab{ Index: 14, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -177,7 +177,7 @@ var productionsTable = ProdTab{ Index: 15, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -197,7 +197,7 @@ var productionsTable = ProdTab{ Index: 17, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -207,7 +207,7 @@ var productionsTable = ProdTab{ Index: 18, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -217,7 +217,7 @@ var productionsTable = ProdTab{ Index: 19, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -311,7 +311,7 @@ var productionsTable = ProdTab{ }, }, ProdTabEntry{ - String: `TernaryExpr : Expr "?" Expr ":" Expr << ast.NewTernaryExpr(X[0], X[2], X[4]) >>`, + String: `TernaryExpr : TernaryArgument "?" TernaryArgument ":" TernaryArgument << ast.NewTernaryExpr(X[0], X[2], X[4]) >>`, Id: "TernaryExpr", NTType: 10, Index: 29, @@ -321,8 +321,8 @@ var productionsTable = ProdTab{ }, }, ProdTabEntry{ - String: `BoolLit : "true" << >>`, - Id: "BoolLit", + String: `TernaryArgument : Expr << >>`, + Id: "TernaryArgument", NTType: 11, Index: 30, NumSymbols: 1, @@ -331,8 +331,8 @@ var productionsTable = ProdTab{ }, }, ProdTabEntry{ - String: `BoolLit : "false" << >>`, - Id: "BoolLit", + String: `TernaryArgument : TernaryExpr << >>`, + Id: "TernaryArgument", NTType: 11, Index: 31, NumSymbols: 1, @@ -340,11 +340,41 @@ var productionsTable = ProdTab{ return X[0], nil }, }, + ProdTabEntry{ + String: `TernaryArgument : "(" TernaryExpr ")" << ast.NewTernaryArgument(X[1]) >>`, + Id: "TernaryArgument", + NTType: 11, + Index: 32, + NumSymbols: 3, + ReduceFunc: func(X []Attrib) (Attrib, error) { + return ast.NewTernaryArgument(X[1]) + }, + }, + ProdTabEntry{ + String: `BoolLit : "true" << >>`, + Id: "BoolLit", + NTType: 12, + Index: 33, + NumSymbols: 1, + ReduceFunc: func(X []Attrib) (Attrib, error) { + return X[0], nil + }, + }, + ProdTabEntry{ + String: `BoolLit : "false" << >>`, + Id: "BoolLit", + NTType: 12, + Index: 34, + NumSymbols: 1, + ReduceFunc: func(X []Attrib) (Attrib, error) { + return X[0], nil + }, + }, ProdTabEntry{ String: `NilLit : "nil" << >>`, Id: "NilLit", - NTType: 12, - Index: 32, + NTType: 13, + Index: 35, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil @@ -353,8 +383,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `NilLit : "null" << >>`, Id: "NilLit", - NTType: 12, - Index: 33, + NTType: 13, + Index: 36, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil @@ -363,58 +393,58 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `Literal : intLit << ast.NewLiteral("int",X[0]) >>`, Id: "Literal", - NTType: 13, - Index: 34, + NTType: 14, + Index: 37, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("int", X[0]) + return ast.NewLiteral("int",X[0]) }, }, ProdTabEntry{ String: `Literal : floatLit << ast.NewLiteral("float",X[0]) >>`, Id: "Literal", - NTType: 13, - Index: 35, + NTType: 14, + Index: 38, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("float", X[0]) + return ast.NewLiteral("float",X[0]) }, }, ProdTabEntry{ String: `Literal : stringLit << ast.NewLiteral("string",X[0]) >>`, Id: "Literal", - NTType: 13, - Index: 36, + NTType: 14, + Index: 39, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("string", X[0]) + return ast.NewLiteral("string",X[0]) }, }, ProdTabEntry{ String: `Literal : BoolLit << ast.NewLiteral("bool",X[0]) >>`, Id: "Literal", - NTType: 13, - Index: 37, + NTType: 14, + Index: 40, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("bool", X[0]) + return ast.NewLiteral("bool",X[0]) }, }, ProdTabEntry{ String: `Literal : NilLit << ast.NewLiteral("nil",X[0]) >>`, Id: "Literal", - NTType: 13, - Index: 38, + NTType: 14, + Index: 41, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("nil", X[0]) + return ast.NewLiteral("nil",X[0]) }, }, ProdTabEntry{ String: `Literal : ref Ref << ast.NewRefExpr(X[0], X[1]) >>`, Id: "Literal", - NTType: 13, - Index: 39, + NTType: 14, + Index: 42, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewRefExpr(X[0], X[1]) @@ -423,8 +453,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `Ref : selector << ast.Concat(X[0]) >>`, Id: "Ref", - NTType: 14, - Index: 40, + NTType: 15, + Index: 43, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.Concat(X[0]) @@ -433,8 +463,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `Ref : index << ast.Concat(X[0]) >>`, Id: "Ref", - NTType: 14, - Index: 41, + NTType: 15, + Index: 44, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.Concat(X[0]) @@ -443,8 +473,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `Ref : Ref selector << ast.Concat(X[0], X[1]) >>`, Id: "Ref", - NTType: 14, - Index: 42, + NTType: 15, + Index: 45, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.Concat(X[0], X[1]) @@ -453,8 +483,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `Ref : Ref index << ast.Concat(X[0], X[1]) >>`, Id: "Ref", - NTType: 14, - Index: 43, + NTType: 15, + Index: 46, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.Concat(X[0], X[1]) @@ -463,8 +493,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `Args : empty << >>`, Id: "Args", - NTType: 15, - Index: 44, + NTType: 16, + Index: 47, NumSymbols: 0, ReduceFunc: func(X []Attrib) (Attrib, error) { return nil, nil @@ -473,8 +503,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `Args : ExprList << >>`, Id: "Args", - NTType: 15, - Index: 45, + NTType: 16, + Index: 48, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil @@ -483,8 +513,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `ExprList : Expr << ast.NewExprList(X[0]) >>`, Id: "ExprList", - NTType: 16, - Index: 46, + NTType: 17, + Index: 49, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewExprList(X[0]) @@ -493,8 +523,8 @@ var productionsTable = ProdTab{ ProdTabEntry{ String: `ExprList : ExprList "," Expr << ast.AppendToExprList(X[0], X[2]) >>`, Id: "ExprList", - NTType: 16, - Index: 47, + NTType: 17, + Index: 50, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.AppendToExprList(X[0], X[2]) From 4ceb11d3280c38aa2a5713b1b31a7652a95d0b90 Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Tue, 12 Feb 2019 21:12:07 -0600 Subject: [PATCH 07/20] Add testcases for nested expression as well as other expressions --- data/expression/script/expr_test.go | 69 +++++++++++++++++++++++++ data/expression/script/funcexpr_test.go | 40 ++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/data/expression/script/expr_test.go b/data/expression/script/expr_test.go index 35f1b1f6..2d5dbb54 100644 --- a/data/expression/script/expr_test.go +++ b/data/expression/script/expr_test.go @@ -3,6 +3,7 @@ package script import ( "encoding/json" "fmt" + "os" "testing" "github.com/project-flogo/core/data" @@ -661,6 +662,74 @@ func TestTernaryExpr(t *testing.T) { assert.Equal(t, 40, v) } +func TestExpression(t *testing.T) { + + scope := data.NewSimpleScope(map[string]interface{}{"queryParams": map[string]interface{}{"id": "helloworld"}}, nil) + factory := NewExprFactory(resolve.GetBasicResolver()) + os.Setenv("name", "flogo") + os.Setenv("address", "tibco") + + testcases := make(map[string]interface{}) + testcases[`1>2?tstring.concat("sss","ddddd"):"fff"`] = "fff" + testcases[`1<2?"helloworld":"fff"`] = "helloworld" + testcases["200>100?true:false"] = true + testcases["1 + 2 * 3 + 2 * 6"] = 19 + testcases[`tstring.length($.queryParams.id) == 0 ? "Query Id cannot be null" : tstring.length($.queryParams.id)`] = 10 + testcases[`tstring.length("helloworld")>11?"helloworld":"fff"`] = "fff" + testcases["123==456"] = false + testcases["123==123"] = true + testcases[`tstring.concat("123","456")=="123456"`] = true + testcases[`tstring.concat("123","456") == tstring.concat("12","3456")`] = true + testcases[`("dddddd" == "dddd3dd") && ("133" == "123")`] = false + testcases[`tstring.length("helloworld") == 10`] = true + testcases[`tstring.length("helloworld") > 10`] = false + testcases[`tstring.length("helloworld") >= 10`] = true + testcases[`tstring.length("helloworld") < 10`] = false + testcases[`tstring.length("helloworld") >= 10`] = true + testcases[`(tstring.length("sea") == 3) == true`] = true + + testcases[`(1&&1)==(1&&1)`] = true + testcases[`(true && true) == false`] = false + testcases[`nil==nil`] = true + + //Nested Ternary + testcases[`(tstring.length("1234") == 4 ? true : false) ? (2 >1 ? (3>2?"Yes":"nono"):"No") : "false"`] = "Yes" + testcases[`(4 == 4 ? true : false) ? "yes" : "no"`] = "yes" + testcases[`(4 == 4 ? true : false) ? 4 < 3 ? "good" :"false" : "no"`] = "false" + testcases[`4 > 3 ? 6<4 ? "good2" : "false2" : "false"`] = "false2" + testcases[`4 > 5 ? 6<4 ? "good2" : "false2" : 3>2?"ok":"notok"`] = "ok" + + //Int vs float + testcases[`1 == 1.23`] = false + testcases[`1 < 1.23`] = true + testcases[`1.23 == 1`] = false + testcases[`1.23 > 1`] = true + + //Operator + testcases[`1 + 2 * 3 + 2 * 6 / 2`] = 13 + testcases[` 1 + 4 * 5 + -6 `] = 15 + testcases[` 2 < 3 && 5 > 4 && 6 < 7 && 56 > 44`] = true + testcases[` 2 < 3 && 5 > 4 || 6 < 7 && 56 < 44`] = true + testcases[`3-2`] = 1 + testcases[`3 - 2`] = 1 + testcases[`3+-2`] = 1 + testcases[`3- -2`] = 5 + + //testcases[`tstring.length("helloworld")>11?$env[name]:$env[address]`] = "tibco" + //testcases[`$env[name] != nil`] = true + //testcases[`$env[name] == "flogo"`] = true + + for k, v := range testcases { + vv, err := factory.NewExpr(k) + assert.Nil(t, err) + result, err := vv.Eval(scope) + assert.Nil(t, err) + if !assert.ObjectsAreEqual(v, result) { + assert.Fail(t, fmt.Sprintf("test expr [%s] failed, expected [%+v] but actual [%+v]", k, v, result)) + } + } +} + var result interface{} func BenchmarkLit(b *testing.B) { diff --git a/data/expression/script/funcexpr_test.go b/data/expression/script/funcexpr_test.go index dc8a6f57..4ba149d4 100644 --- a/data/expression/script/funcexpr_test.go +++ b/data/expression/script/funcexpr_test.go @@ -3,6 +3,7 @@ package script import ( "bytes" "fmt" + "github.com/project-flogo/core/data/resolve" "testing" "github.com/project-flogo/core/data" @@ -51,6 +52,25 @@ func TestFuncExprNestedMultiSpace(t *testing.T) { assert.Equal(t, "This is Flogo", v.(string)) } +func TestFunctionWithRef(t *testing.T) { + + scope := data.NewSimpleScope(map[string]interface{}{"queryParams": map[string]interface{}{"id": "flogo"}}, nil) + factory := NewExprFactory(resolve.GetBasicResolver()) + testcases := make(map[string]interface{}) + testcases[`tstring.concat("This", " is ", $.queryParams.id)`] = "This is flogo" + + for k, v := range testcases { + vv, err := factory.NewExpr(k) + assert.Nil(t, err) + result, err := vv.Eval(scope) + assert.Nil(t, err) + if !assert.ObjectsAreEqual(v, result) { + assert.Fail(t, fmt.Sprintf("test function [%s] failed, expected [%+v] but actual [%+v]", k, v, result)) + } + } + +} + func init() { function.Register(&fnConcat{}) } @@ -86,3 +106,23 @@ func TestFuncExprSingleQuote(t *testing.T) { assert.Nil(t, err) assert.Equal(t, "abcdef", v) } + +func init() { + function.Register(&tLength{}) +} + +type tLength struct { +} + +func (tLength) Name() string { + return "tstring.length" +} + +func (tLength) Sig() (paramTypes []data.Type, isVariadic bool) { + return []data.Type{data.TypeString}, false +} + +func (tLength) Eval(params ...interface{}) (interface{}, error) { + p := params[0].(string) + return len(p), nil +} From eeec622dfaebed35c4a2a05c99c61a69521b5d48 Mon Sep 17 00:00:00 2001 From: Frank Martinez Date: Tue, 12 Feb 2019 22:20:33 -0500 Subject: [PATCH 08/20] fix bnf to support ref selector without quotes --- data/expression/script/expr_test.go | 15 +- data/expression/script/gocc/fs.bnf | 2 +- data/expression/script/gocc/lexer/acttab.go | 54 ++-- data/expression/script/gocc/lexer/lexer.go | 2 +- .../script/gocc/lexer/transitiontable.go | 268 ++++++++++-------- .../script/gocc/parser/productionstable.go | 36 +-- 6 files changed, 218 insertions(+), 159 deletions(-) diff --git a/data/expression/script/expr_test.go b/data/expression/script/expr_test.go index 35f1b1f6..10a199c1 100644 --- a/data/expression/script/expr_test.go +++ b/data/expression/script/expr_test.go @@ -3,6 +3,7 @@ package script import ( "encoding/json" "fmt" + "os" "testing" "github.com/project-flogo/core/data" @@ -10,7 +11,7 @@ import ( "github.com/stretchr/testify/assert" ) -var resolver = resolve.NewCompositeResolver(map[string]resolve.Resolver{"static": &TestStaticResolver{}, ".": &TestResolver{}}) +var resolver = resolve.NewCompositeResolver(map[string]resolve.Resolver{"static": &TestStaticResolver{}, ".": &TestResolver{}, "env": &resolve.EnvResolver{}}) var factory = NewExprFactory(resolver) func TestLitExprInt(t *testing.T) { @@ -151,6 +152,18 @@ func TestLitExprStaticRef(t *testing.T) { assert.Equal(t, "bar", v) } +func TestEnvResolve(t *testing.T) { + + os.Setenv("FOO","bar") + expr, err := factory.NewExpr(`$env[FOO]`) + assert.Nil(t, err) + assert.NotNil(t, expr) + + v, err := expr.Eval(nil) + assert.Nil(t, err) + assert.Equal(t, "bar", v) +} + func TestCmpExprEq(t *testing.T) { expr, err := factory.NewExpr(`123==123`) assert.Nil(t, err) diff --git a/data/expression/script/gocc/fs.bnf b/data/expression/script/gocc/fs.bnf index 561e6737..1c1909bb 100644 --- a/data/expression/script/gocc/fs.bnf +++ b/data/expression/script/gocc/fs.bnf @@ -36,7 +36,7 @@ ident : _ident ; ref : '$' [ _ident ]; selector : '.' _ident ; -index : '[' ( _dq_string | _sq_string | _lit_string | _decimals ) ']' ; +index : '[' ( _dq_string | _sq_string | _lit_string | _decimals | _ident) ']' ; // -- [ Functions ] diff --git a/data/expression/script/gocc/lexer/acttab.go b/data/expression/script/gocc/lexer/acttab.go index c77f76c1..136c4202 100644 --- a/data/expression/script/gocc/lexer/acttab.go +++ b/data/expression/script/gocc/lexer/acttab.go @@ -225,11 +225,11 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S51 - Accept: 28, + Accept: 0, Ignore: "", }, ActionRow{ // S52 - Accept: 16, + Accept: 28, Ignore: "", }, ActionRow{ // S53 @@ -245,19 +245,19 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S56 - Accept: 2, + Accept: 16, Ignore: "", }, ActionRow{ // S57 - Accept: 0, + Accept: 2, Ignore: "", }, ActionRow{ // S58 - Accept: 29, + Accept: 0, Ignore: "", }, ActionRow{ // S59 - Accept: 0, + Accept: 29, Ignore: "", }, ActionRow{ // S60 @@ -265,15 +265,15 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S61 - Accept: 30, + Accept: 0, Ignore: "", }, ActionRow{ // S62 - Accept: 27, + Accept: 30, Ignore: "", }, ActionRow{ // S63 - Accept: 0, + Accept: 27, Ignore: "", }, ActionRow{ // S64 @@ -281,11 +281,11 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S65 - Accept: 27, + Accept: 0, Ignore: "", }, ActionRow{ // S66 - Accept: 19, + Accept: 27, Ignore: "", }, ActionRow{ // S67 @@ -293,7 +293,7 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S68 - Accept: 0, + Accept: 19, Ignore: "", }, ActionRow{ // S69 @@ -309,19 +309,19 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S72 - Accept: 31, + Accept: 0, Ignore: "", }, ActionRow{ // S73 - Accept: 0, + Accept: 31, Ignore: "", }, ActionRow{ // S74 - Accept: 16, + Accept: 0, Ignore: "", }, ActionRow{ // S75 - Accept: 24, + Accept: 0, Ignore: "", }, ActionRow{ // S76 @@ -329,15 +329,15 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S77 - Accept: 16, + Accept: 24, Ignore: "", }, ActionRow{ // S78 - Accept: 0, + Accept: 16, Ignore: "", }, ActionRow{ // S79 - Accept: 27, + Accept: 16, Ignore: "", }, ActionRow{ // S80 @@ -353,22 +353,30 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S83 - Accept: 0, + Accept: 27, Ignore: "", }, ActionRow{ // S84 - Accept: 16, + Accept: 0, Ignore: "", }, ActionRow{ // S85 - Accept: 25, + Accept: 0, Ignore: "", }, ActionRow{ // S86 - Accept: 22, + Accept: 16, Ignore: "", }, ActionRow{ // S87 + Accept: 25, + Ignore: "", + }, + ActionRow{ // S88 + Accept: 22, + Ignore: "", + }, + ActionRow{ // S89 Accept: 23, Ignore: "", }, diff --git a/data/expression/script/gocc/lexer/lexer.go b/data/expression/script/gocc/lexer/lexer.go index b79055f6..6a1c30e1 100644 --- a/data/expression/script/gocc/lexer/lexer.go +++ b/data/expression/script/gocc/lexer/lexer.go @@ -11,7 +11,7 @@ import ( const ( NoState = -1 - NumStates = 88 + NumStates = 90 NumSymbols = 81 ) diff --git a/data/expression/script/gocc/lexer/transitiontable.go b/data/expression/script/gocc/lexer/transitiontable.go index 22d9f133..44f7debb 100644 --- a/data/expression/script/gocc/lexer/transitiontable.go +++ b/data/expression/script/gocc/lexer/transitiontable.go @@ -301,7 +301,13 @@ var TransTab = TransitionTable{ return 48 case 48 <= r && r <= 57: // ['0','9'] return 49 + case 65 <= r && r <= 90: // ['A','Z'] + return 50 + case r == 95: // ['_','_'] + return 50 case r == 96: // ['`','`'] + return 51 + case 97 <= r && r <= 122: // ['a','z'] return 50 } return NoState @@ -310,7 +316,7 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case r == 96: // ['`','`'] - return 51 + return 52 default: return 25 } @@ -327,7 +333,7 @@ var TransTab = TransitionTable{ case r == 95: // ['_','_'] return 23 case r == 97: // ['a','a'] - return 52 + return 53 case 98 <= r && r <= 122: // ['b','z'] return 23 } @@ -347,11 +353,11 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 104: // ['a','h'] return 23 case r == 105: // ['i','i'] - return 53 + return 54 case 106 <= r && r <= 116: // ['j','t'] return 23 case r == 117: // ['u','u'] - return 54 + return 55 case 118 <= r && r <= 122: // ['v','z'] return 23 } @@ -371,7 +377,7 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 113: // ['a','q'] return 23 case r == 114: // ['r','r'] - return 55 + return 56 case 115 <= r && r <= 122: // ['s','z'] return 23 } @@ -381,7 +387,7 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case r == 124: // ['|','|'] - return 56 + return 57 } return NoState }, @@ -403,11 +409,11 @@ var TransTab = TransitionTable{ case r == 34: // ['"','"'] return 3 case r == 110: // ['n','n'] - return 57 + return 58 case r == 114: // ['r','r'] - return 57 + return 58 case r == 116: // ['t','t'] - return 57 + return 58 } return NoState }, @@ -415,7 +421,7 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 58 + return 59 case 65 <= r && r <= 90: // ['A','Z'] return 33 case r == 95: // ['_','_'] @@ -443,11 +449,11 @@ var TransTab = TransitionTable{ case r == 39: // [''','''] return 7 case r == 110: // ['n','n'] - return 59 + return 60 case r == 114: // ['r','r'] - return 59 + return 60 case r == 116: // ['t','t'] - return 59 + return 60 } return NoState }, @@ -457,9 +463,9 @@ var TransTab = TransitionTable{ case 48 <= r && r <= 57: // ['0','9'] return 37 case r == 69: // ['E','E'] - return 60 + return 61 case r == 101: // ['e','e'] - return 60 + return 61 } return NoState }, @@ -467,7 +473,7 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 61 + return 62 case 65 <= r && r <= 90: // ['A','Z'] return 38 case r == 95: // ['_','_'] @@ -481,11 +487,11 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 62 - case r == 69: // ['E','E'] return 63 + case r == 69: // ['E','E'] + return 64 case r == 101: // ['e','e'] - return 63 + return 64 } return NoState }, @@ -507,11 +513,11 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case r == 43: // ['+','+'] - return 64 + return 65 case r == 45: // ['-','-'] - return 64 - case 48 <= r && r <= 57: // ['0','9'] return 65 + case 48 <= r && r <= 57: // ['0','9'] + return 66 } return NoState }, @@ -539,13 +545,13 @@ var TransTab = TransitionTable{ case r == 46: // ['.','.'] return 45 case 48 <= r && r <= 57: // ['0','9'] - return 66 - case 65 <= r && r <= 90: // ['A','Z'] return 67 + case 65 <= r && r <= 90: // ['A','Z'] + return 68 case r == 95: // ['_','_'] - return 67 + return 68 case 97 <= r && r <= 122: // ['a','z'] - return 67 + return 68 } return NoState }, @@ -569,9 +575,9 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case r == 34: // ['"','"'] - return 68 - case r == 92: // ['\','\'] return 69 + case r == 92: // ['\','\'] + return 70 default: return 47 } @@ -580,9 +586,9 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case r == 39: // [''','''] - return 70 - case r == 92: // ['\','\'] return 71 + case r == 92: // ['\','\'] + return 72 default: return 48 } @@ -593,26 +599,42 @@ var TransTab = TransitionTable{ case 48 <= r && r <= 57: // ['0','9'] return 49 case r == 93: // [']',']'] - return 72 + return 73 } return NoState }, // S50 func(r rune) int { switch { - case r == 96: // ['`','`'] + case 48 <= r && r <= 57: // ['0','9'] + return 74 + case 65 <= r && r <= 90: // ['A','Z'] + return 50 + case r == 93: // [']',']'] return 73 - default: + case r == 95: // ['_','_'] + return 50 + case 97 <= r && r <= 122: // ['a','z'] return 50 } + return NoState }, // S51 func(r rune) int { switch { + case r == 96: // ['`','`'] + return 75 + default: + return 51 } - return NoState }, // S52 + func(r rune) int { + switch { + } + return NoState + }, + // S53 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -626,13 +648,13 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 107: // ['a','k'] return 23 case r == 108: // ['l','l'] - return 74 + return 76 case 109 <= r && r <= 122: // ['m','z'] return 23 } return NoState }, - // S53 + // S54 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -646,13 +668,13 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 107: // ['a','k'] return 23 case r == 108: // ['l','l'] - return 75 + return 77 case 109 <= r && r <= 122: // ['m','z'] return 23 } return NoState }, - // S54 + // S55 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -666,13 +688,13 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 107: // ['a','k'] return 23 case r == 108: // ['l','l'] - return 76 + return 78 case 109 <= r && r <= 122: // ['m','z'] return 23 } return NoState }, - // S55 + // S56 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -686,19 +708,19 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 116: // ['a','t'] return 23 case r == 117: // ['u','u'] - return 77 + return 79 case 118 <= r && r <= 122: // ['v','z'] return 23 } return NoState }, - // S56 + // S57 func(r rune) int { switch { } return NoState }, - // S57 + // S58 func(r rune) int { switch { case r == 34: // ['"','"'] @@ -709,11 +731,11 @@ var TransTab = TransitionTable{ return 3 } }, - // S58 + // S59 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 58 + return 59 case 65 <= r && r <= 90: // ['A','Z'] return 33 case r == 95: // ['_','_'] @@ -723,7 +745,7 @@ var TransTab = TransitionTable{ } return NoState }, - // S59 + // S60 func(r rune) int { switch { case r == 39: // [''','''] @@ -734,23 +756,23 @@ var TransTab = TransitionTable{ return 7 } }, - // S60 + // S61 func(r rune) int { switch { case r == 43: // ['+','+'] - return 78 + return 80 case r == 45: // ['-','-'] - return 78 + return 80 case 48 <= r && r <= 57: // ['0','9'] - return 79 + return 81 } return NoState }, - // S61 + // S62 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 61 + return 62 case 65 <= r && r <= 90: // ['A','Z'] return 38 case r == 95: // ['_','_'] @@ -760,137 +782,153 @@ var TransTab = TransitionTable{ } return NoState }, - // S62 + // S63 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 62 - case r == 69: // ['E','E'] return 63 + case r == 69: // ['E','E'] + return 64 case r == 101: // ['e','e'] - return 63 + return 64 } return NoState }, - // S63 + // S64 func(r rune) int { switch { case r == 43: // ['+','+'] - return 80 + return 82 case r == 45: // ['-','-'] - return 80 + return 82 case 48 <= r && r <= 57: // ['0','9'] - return 81 + return 83 } return NoState }, - // S64 + // S65 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 65 + return 66 } return NoState }, - // S65 + // S66 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 65 + return 66 } return NoState }, - // S66 + // S67 func(r rune) int { switch { case r == 46: // ['.','.'] return 45 case 48 <= r && r <= 57: // ['0','9'] - return 66 - case 65 <= r && r <= 90: // ['A','Z'] return 67 + case 65 <= r && r <= 90: // ['A','Z'] + return 68 case r == 95: // ['_','_'] - return 67 + return 68 case 97 <= r && r <= 122: // ['a','z'] - return 67 + return 68 } return NoState }, - // S67 + // S68 func(r rune) int { switch { case r == 46: // ['.','.'] return 45 case 48 <= r && r <= 57: // ['0','9'] - return 66 - case 65 <= r && r <= 90: // ['A','Z'] return 67 + case 65 <= r && r <= 90: // ['A','Z'] + return 68 case r == 95: // ['_','_'] - return 67 + return 68 case 97 <= r && r <= 122: // ['a','z'] - return 67 + return 68 } return NoState }, - // S68 + // S69 func(r rune) int { switch { case r == 93: // [']',']'] - return 72 + return 73 } return NoState }, - // S69 + // S70 func(r rune) int { switch { case r == 34: // ['"','"'] return 47 case r == 110: // ['n','n'] - return 82 + return 84 case r == 114: // ['r','r'] - return 82 + return 84 case r == 116: // ['t','t'] - return 82 + return 84 } return NoState }, - // S70 + // S71 func(r rune) int { switch { case r == 93: // [']',']'] - return 72 + return 73 } return NoState }, - // S71 + // S72 func(r rune) int { switch { case r == 39: // [''','''] return 48 case r == 110: // ['n','n'] - return 83 + return 85 case r == 114: // ['r','r'] - return 83 + return 85 case r == 116: // ['t','t'] - return 83 + return 85 } return NoState }, - // S72 + // S73 func(r rune) int { switch { } return NoState }, - // S73 + // S74 func(r rune) int { switch { + case 48 <= r && r <= 57: // ['0','9'] + return 74 + case 65 <= r && r <= 90: // ['A','Z'] + return 50 case r == 93: // [']',']'] - return 72 + return 73 + case r == 95: // ['_','_'] + return 50 + case 97 <= r && r <= 122: // ['a','z'] + return 50 } return NoState }, - // S74 + // S75 + func(r rune) int { + switch { + case r == 93: // [']',']'] + return 73 + } + return NoState + }, + // S76 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -904,13 +942,13 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 114: // ['a','r'] return 23 case r == 115: // ['s','s'] - return 84 + return 86 case 116 <= r && r <= 122: // ['t','z'] return 23 } return NoState }, - // S75 + // S77 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -926,7 +964,7 @@ var TransTab = TransitionTable{ } return NoState }, - // S76 + // S78 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -940,13 +978,13 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 107: // ['a','k'] return 23 case r == 108: // ['l','l'] - return 85 + return 87 case 109 <= r && r <= 122: // ['m','z'] return 23 } return NoState }, - // S77 + // S79 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -960,67 +998,67 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 100: // ['a','d'] return 23 case r == 101: // ['e','e'] - return 86 + return 88 case 102 <= r && r <= 122: // ['f','z'] return 23 } return NoState }, - // S78 + // S80 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 79 + return 81 } return NoState }, - // S79 + // S81 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 79 + return 81 } return NoState }, - // S80 + // S82 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 81 + return 83 } return NoState }, - // S81 + // S83 func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 81 + return 83 } return NoState }, - // S82 + // S84 func(r rune) int { switch { case r == 34: // ['"','"'] - return 68 - case r == 92: // ['\','\'] return 69 + case r == 92: // ['\','\'] + return 70 default: return 47 } }, - // S83 + // S85 func(r rune) int { switch { case r == 39: // [''','''] - return 70 - case r == 92: // ['\','\'] return 71 + case r == 92: // ['\','\'] + return 72 default: return 48 } }, - // S84 + // S86 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -1034,13 +1072,13 @@ var TransTab = TransitionTable{ case 97 <= r && r <= 100: // ['a','d'] return 23 case r == 101: // ['e','e'] - return 87 + return 89 case 102 <= r && r <= 122: // ['f','z'] return 23 } return NoState }, - // S85 + // S87 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -1056,7 +1094,7 @@ var TransTab = TransitionTable{ } return NoState }, - // S86 + // S88 func(r rune) int { switch { case r == 46: // ['.','.'] @@ -1072,7 +1110,7 @@ var TransTab = TransitionTable{ } return NoState }, - // S87 + // S89 func(r rune) int { switch { case r == 46: // ['.','.'] diff --git a/data/expression/script/gocc/parser/productionstable.go b/data/expression/script/gocc/parser/productionstable.go index 3f964355..38c0338e 100644 --- a/data/expression/script/gocc/parser/productionstable.go +++ b/data/expression/script/gocc/parser/productionstable.go @@ -57,7 +57,7 @@ var productionsTable = ProdTab{ Index: 3, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewBoolExpr(X[0], X[1], X[2]) + return ast.NewBoolExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -77,7 +77,7 @@ var productionsTable = ProdTab{ Index: 5, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewBoolExpr(X[0], X[1], X[2]) + return ast.NewBoolExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -97,7 +97,7 @@ var productionsTable = ProdTab{ Index: 7, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -107,7 +107,7 @@ var productionsTable = ProdTab{ Index: 8, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -117,7 +117,7 @@ var productionsTable = ProdTab{ Index: 9, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -127,7 +127,7 @@ var productionsTable = ProdTab{ Index: 10, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -137,7 +137,7 @@ var productionsTable = ProdTab{ Index: 11, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -147,7 +147,7 @@ var productionsTable = ProdTab{ Index: 12, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewCmpExpr(X[0], X[1], X[2]) + return ast.NewCmpExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -167,7 +167,7 @@ var productionsTable = ProdTab{ Index: 14, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -177,7 +177,7 @@ var productionsTable = ProdTab{ Index: 15, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -197,7 +197,7 @@ var productionsTable = ProdTab{ Index: 17, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -207,7 +207,7 @@ var productionsTable = ProdTab{ Index: 18, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -217,7 +217,7 @@ var productionsTable = ProdTab{ Index: 19, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewArithExpr(X[0], X[1], X[2]) + return ast.NewArithExpr(X[0],X[1],X[2]) }, }, ProdTabEntry{ @@ -367,7 +367,7 @@ var productionsTable = ProdTab{ Index: 34, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("int", X[0]) + return ast.NewLiteral("int",X[0]) }, }, ProdTabEntry{ @@ -377,7 +377,7 @@ var productionsTable = ProdTab{ Index: 35, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("float", X[0]) + return ast.NewLiteral("float",X[0]) }, }, ProdTabEntry{ @@ -387,7 +387,7 @@ var productionsTable = ProdTab{ Index: 36, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("string", X[0]) + return ast.NewLiteral("string",X[0]) }, }, ProdTabEntry{ @@ -397,7 +397,7 @@ var productionsTable = ProdTab{ Index: 37, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("bool", X[0]) + return ast.NewLiteral("bool",X[0]) }, }, ProdTabEntry{ @@ -407,7 +407,7 @@ var productionsTable = ProdTab{ Index: 38, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return ast.NewLiteral("nil", X[0]) + return ast.NewLiteral("nil",X[0]) }, }, ProdTabEntry{ From 615799d1e40bb04c1c6989f722c235f50a32dd1c Mon Sep 17 00:00:00 2001 From: Andrew Snodgrass Date: Wed, 20 Feb 2019 11:47:28 -0700 Subject: [PATCH 09/20] Set channels global map to empty map on stop --- engine/channels/channels.go | 1 + 1 file changed, 1 insertion(+) diff --git a/engine/channels/channels.go b/engine/channels/channels.go index ba0dac44..20b80a24 100644 --- a/engine/channels/channels.go +++ b/engine/channels/channels.go @@ -75,6 +75,7 @@ func Stop() error { log.RootLogger().Warnf("error stopping channel '%s', error: %s", channel.name, err.Error()) } } + channels = make(map[string]*channelImpl) active = false From 2ec64e426f9820e8b439fa34c0f10163a51c1a59 Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Thu, 21 Feb 2019 12:29:10 -0600 Subject: [PATCH 10/20] handle object mapper and array mapping, array mapper part of object mapper --- data/mapper/array.go | 273 ------------------------------------- data/mapper/array_test.go | 246 --------------------------------- data/mapper/expr.go | 26 ++-- data/mapper/object.go | 244 +++++++++++++++++++++++++++++++++ data/mapper/object_test.go | 231 +++++++++++++++++++++++++++++++ data/resolve/composite.go | 1 + data/resolve/loop.go | 25 ++++ 7 files changed, 517 insertions(+), 529 deletions(-) delete mode 100644 data/mapper/array.go delete mode 100644 data/mapper/array_test.go create mode 100644 data/mapper/object.go create mode 100644 data/mapper/object_test.go create mode 100644 data/resolve/loop.go diff --git a/data/mapper/array.go b/data/mapper/array.go deleted file mode 100644 index 232d04f3..00000000 --- a/data/mapper/array.go +++ /dev/null @@ -1,273 +0,0 @@ -package mapper - -import ( - "encoding/json" - "fmt" - "github.com/project-flogo/core/data" - "github.com/project-flogo/core/data/coerce" - "github.com/project-flogo/core/data/expression" - "github.com/project-flogo/core/support/log" - "runtime/debug" - "strings" -) - -const ( - FOREACH = "foreach" - NEWARRAY = "NEWARRAY" -) - -type ArrayMapperFactory struct { - exprFactory expression.Factory -} - -func NewArrayMapperFactory(exprFactory expression.Factory) expression.Factory { - return &ArrayMapperFactory{exprFactory: exprFactory} -} - -type ArrayMapping struct { - From interface{} `json:"from"` - To string `json:"to"` - Type string `json:"type"` - Fields []*ArrayMapping `json:"fields,omitempty"` -} - -func ParseArrayMapping(arrayDatadata interface{}) (*ArrayMapping, error) { - amapping := &ArrayMapping{} - switch t := arrayDatadata.(type) { - case string: - err := json.Unmarshal([]byte(t), amapping) - if err != nil { - return nil, err - } - case interface{}: - s, err := coerce.ToString(t) - if err != nil { - return nil, fmt.Errorf("Convert array mapping value to string error, due to [%s]", err.Error()) - } - err = json.Unmarshal([]byte(s), amapping) - if err != nil { - return nil, err - } - } - return amapping, nil -} - -func IsArrayMapping(value interface{}) bool { - a, err := ParseArrayMapping(value) - if err != nil { - return false - } - - return a.Validate() == nil -} - -func (a *ArrayMapping) Validate() error { - //Validate root from/to field - if a.From == nil { - return fmt.Errorf("The array mapping validation failed for the mapping [%s]. Ensure valid array is mapped in the mapper. ", a.From) - } - - if a.To == "" || len(a.To) <= 0 { - return fmt.Errorf("The array mapping validation failed for the mapping [%s]. Ensure valid array is mapped in the mapper. ", a.To) - } - - if a.Type == FOREACH { - //Validate root from/to field - if a.From == NEWARRAY { - //Make sure no array ref fields exist - for _, field := range a.Fields { - if field.Type == FOREACH { - return field.Validate() - } - stringVal, ok := field.From.(string) - if ok && isArrayMapping(stringVal) { - return fmt.Errorf("The array mapping validation failed, invalid new array mapping [%s]", stringVal) - } - - } - } else { - for _, field := range a.Fields { - if field.Type == FOREACH { - return field.Validate() - } - } - } - } - - return nil -} - -func (am *ArrayMapperFactory) NewAnyExpr(value interface{}) (expression.Expr, error) { - aMapping, err := ParseArrayMapping(value) - if err != nil { - return nil, fmt.Errorf("parsing array mapping failed %s", err) - } - return &ArrayExpr{arrayMappings: aMapping, exprFactory: am.exprFactory}, nil -} - -func (am *ArrayMapperFactory) NewExpr(value string) (expression.Expr, error) { - return am.NewAnyExpr(value) -} - -func isArrayMapping(ref string) bool { - if ref != "" { - return strings.HasPrefix(ref, "$.") - } - return false -} - -type ArrayExpr struct { - arrayMappings *ArrayMapping - exprFactory expression.Factory -} - -func (am *ArrayExpr) Eval(inputScope data.Scope) (interface{}, error) { - defer func() { - if r := recover(); r != nil { - log.RootLogger().Error("%+v", r) - log.RootLogger().Debugf("StackTrace: %s", debug.Stack()) - } - }() - - arrayValue, err := am.arrayMappings.Run(am.exprFactory, inputScope) - if err != nil { - return nil, err - } - return arrayValue, nil -} - -func (a *ArrayMapping) Run(exprFactory expression.Factory, scope data.Scope) ([]interface{}, error) { - //First level must be foreach - if a.Type == FOREACH { - //First Level - var fromValue interface{} - var err error - - stringVal, ok := a.From.(string) - if !ok { - return nil, fmt.Errorf("Invalid mapping root from %s", a.From) - } - - if strings.EqualFold(stringVal, NEWARRAY) { - //log.Debugf("Init a new array for field", a.To) - fromValue = make([]interface{}, 1) - } else { - fromValue, err = getExpressionValue(nil, stringVal, exprFactory, scope) - if err != nil { - return nil, err - } - //fromValue, err = expr.Eval(scope) - } - - //Loop array - fromArrayvalues, err := coerce.ToArray(fromValue) - if err != nil { - return nil, fmt.Errorf("Failed to get array value from [%s], due to error- [%s] value not an array", a.From, a.From) - } - - targetArray := make([]interface{}, len(fromArrayvalues)) - for i, _ := range targetArray { - targetArray[i] = make(map[string]interface{}) - } - - //Check if fields is empty for primitive array mapping - if a.Fields == nil || len(a.Fields) <= 0 { - //Set value directlly to MapTo field - targetArray = fromArrayvalues - return targetArray, nil - } - - for i, arrayV := range fromArrayvalues { - err := a.Iterator(arrayV, targetArray[i].(map[string]interface{}), a.Fields, exprFactory, scope) - if err != nil { - log.Error(err) - return nil, err - } - } - return targetArray, nil - } - return nil, fmt.Errorf("array mapping root must be foreach") - -} - -func (a *ArrayMapping) Iterator(fromValue interface{}, targetValues map[string]interface{}, fields []*ArrayMapping, exprF expression.Factory, scope data.Scope) error { - for _, arrayField := range fields { - maptoKey := arrayField.To - if strings.HasPrefix(arrayField.To, "$.") || strings.HasPrefix(arrayField.To, "$$") { - maptoKey = arrayField.To[2:] - } - - switch arrayField.Type { - case FOREACH: - var fromArrayvalues []interface{} - if strings.EqualFold(arrayField.From.(string), NEWARRAY) { - //log.Debugf("Init a new array for field", arrayField.To) - fromArrayvalues = make([]interface{}, 1) - } else { - fValue, err := getExpressionValue(fromValue, arrayField.From, exprF, scope) - if err != nil { - return err - } - var ok bool - fromArrayvalues, ok = fValue.([]interface{}) - if !ok { - return fmt.Errorf("Failed to get array value from [%s], due to error- value not an array", fValue) - } - } - - objArray := make([]interface{}, len(fromArrayvalues)) - for i, _ := range objArray { - objArray[i] = make(map[string]interface{}) - } - - targetValues[maptoKey] = objArray - - //Check if fields is empty for primitive array mapping - if arrayField.Fields == nil || len(arrayField.Fields) <= 0 { - objArray = fromArrayvalues - continue - } - - for i, arrayV := range fromArrayvalues { - err := arrayField.Iterator(arrayV, objArray[i].(map[string]interface{}), arrayField.Fields, exprF, scope) - if err != nil { - log.Error(err) - return err - } - } - default: - value, err := getExpressionValue(fromValue, arrayField.From, exprF, scope) - if err != nil { - return err - } - targetValues[maptoKey] = value - } - } - return nil -} - -func getExpressionValue(fromValue, fromPath interface{}, exprF expression.Factory, scope data.Scope) (interface{}, error) { - var finalExpr expression.Expr - if isExpr(fromPath) { - var err error - finalExpr, err = exprF.NewExpr(fromPath.(string)[1:]) - if err != nil { - return nil, err - } - } else { - finalExpr = expression.NewLiteralExpr(fromPath) - } - //Add current from value to scope - if fromValue != nil { - scope = data.NewSimpleScope(fromValue.(map[string]interface{}), scope) - - } - return finalExpr.Eval(scope) -} - -func isExpr(value interface{}) bool { - if strVal, ok := value.(string); ok && len(strVal) > 0 && (strVal[0] == '=' || strVal[0] == '$') { - return true - } - return false -} diff --git a/data/mapper/array_test.go b/data/mapper/array_test.go deleted file mode 100644 index 6c8d3119..00000000 --- a/data/mapper/array_test.go +++ /dev/null @@ -1,246 +0,0 @@ -package mapper - -import ( - "github.com/project-flogo/core/data" - "github.com/project-flogo/core/data/resolve" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestArrayMapping(t *testing.T) { - mappingValue := `{ - "fields": [ - { - "from": "=$.street", - "to": "street", - "type": "primitive" - }, - { - "from": "=$.zipcode", - "to": "zipcode", - "type": "primitive" - }, - { - "from": "=$.state", - "to": "state", - "type": "primitive" - } - ], - "from": "=$.field.addresses", - "to": "addresses", - "type": "foreach" -}` - - arrayData := `{ - "person": "name", - "addresses": [ - { - "street": "street", - "zipcode": 77479, - "state": "tx" - } - ] -}` - - mappings := map[string]interface{}{"addresses": mappingValue} - factory := NewFactory(resolve.GetBasicResolver()) - mapper, err := factory.NewMapper(mappings) - - attrs := map[string]interface{}{"field": arrayData} - scope := data.NewSimpleScope(attrs, nil) - results, err := mapper.Apply(scope) - assert.Nil(t, err) - arr := results["addresses"] - - assert.Equal(t, "street", arr.([]interface{})[0].(map[string]interface{})["street"]) - assert.Equal(t, float64(77479), arr.([]interface{})[0].(map[string]interface{})["zipcode"]) - assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) - -} - -//8. array mappping with static function and leaf field -func TestArrayMappingWithFunction(t *testing.T) { - mappingValue := `{ - "fields": [ - { - "from": "=tstring.concat(\"this stree name: \", $.street)", - "to": "street", - "type": "primitive" - }, - { - "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", - "to": "zipcode", - "type": "primitive" - }, - { - "from": "=$.state", - "to": "state", - "type": "primitive" - } - ], - "from": "=$.field.addresses", - "to": "addresses", - "type": "foreach" -}` - - arrayData := `{ - "person": "name", - "addresses": [ - { - "street": "street", - "zipcode": 77479, - "state": "tx" - } - ] -}` - - mappings := map[string]interface{}{"addresses": mappingValue} - factory := NewFactory(resolve.GetBasicResolver()) - mapper, err := factory.NewMapper(mappings) - - attrs := map[string]interface{}{"field": arrayData} - scope := data.NewSimpleScope(attrs, nil) - results, err := mapper.Apply(scope) - assert.Nil(t, err) - arr := results["addresses"] - assert.Equal(t, "this stree name: street", arr.([]interface{})[0].(map[string]interface{})["street"]) - assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) - assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) - -} - -//9. array mapping with other activity output -func TestArrayMappingWithUpstreamingOutput(t *testing.T) { - mappingValue := `{ - "fields": [ - { - "from": "=tstring.concat(\"this stree name: \", $.field.person)", - "to": "street", - "type": "primitive" - }, - { - "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", - "to": "zipcode", - "type": "primitive" - }, - { - "from": "=$.state", - "to": "state", - "type": "primitive" - } - ], - "from": "=$.field.addresses", - "to": "addresses", - "type": "foreach" -}` - - arrayData := `{ - "person": "name", - "addresses": [ - { - "street": "street", - "zipcode": 77479, - "state": "tx" - } - ] -}` - mappings := map[string]interface{}{"addresses": mappingValue} - factory := NewFactory(resolve.GetBasicResolver()) - mapper, err := factory.NewMapper(mappings) - - attrs := map[string]interface{}{"field": arrayData} - scope := data.NewSimpleScope(attrs, nil) - results, err := mapper.Apply(scope) - assert.Nil(t, err) - arr := results["addresses"] - assert.Equal(t, "this stree name: name", arr.([]interface{})[0].(map[string]interface{})["street"]) - assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) - assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) - -} - -//9. array mapping with other activity output -func TestArrayMappingWithNest(t *testing.T) { - mappingValue := `{ - "fields": [ - { - "from": "=tstring.concat(\"this stree name: \", $.field.person)", - "to": "street", - "type": "primitive" - }, - { - "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", - "to": "zipcode", - "type": "primitive" - }, - { - "from": "=$.state", - "to": "state", - "type": "primitive" - }, - { - "from": "=$.array", - "to": "array", - "type": "foreach", - "fields":[ - { - "from": "=$.field1", - "to": "tofield1", - "type": "assign" - }, - { - "from": "=$.field2", - "to": "tofield2", - "type": "assign" - }, - { - "from": "wangzai", - "to": "tofield3", - "type": "assign" - } - ] - - } - ], - "from": "=$.field.addresses", - "to": "addresses", - "type": "foreach" -}` - - arrayData := `{ - "person": "name", - "addresses": [ - { - "street": "street", - "zipcode": 77479, - "state": "tx", - "array":[ - { - "field1":"field1value", - "field2":"field2value", - "field3":"field3value" - } - ] - } - ] -}` - - mappings := map[string]interface{}{"addresses": mappingValue} - factory := NewFactory(resolve.GetBasicResolver()) - mapper, err := factory.NewMapper(mappings) - - attrs := map[string]interface{}{"field": arrayData} - scope := data.NewSimpleScope(attrs, nil) - results, err := mapper.Apply(scope) - assert.Nil(t, err) - arr := results["addresses"] - assert.Equal(t, "this stree name: name", arr.([]interface{})[0].(map[string]interface{})["street"]) - assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) - assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) - - assert.Equal(t, "field1value", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield1"]) - assert.Equal(t, "field2value", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield2"]) - assert.Equal(t, "wangzai", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield3"]) - -} diff --git a/data/mapper/expr.go b/data/mapper/expr.go index d9eb8da3..42ffd69a 100644 --- a/data/mapper/expr.go +++ b/data/mapper/expr.go @@ -13,7 +13,7 @@ type ExprMapperFactory struct { func NewFactory(resolver resolve.CompositeResolver) Factory { exprFactory := expression.NewFactory(resolver) - arrayFactory := NewArrayMapperFactory(exprFactory) + arrayFactory := NewObjectMapperFactory(exprFactory) return &ExprMapperFactory{exprFactory: exprFactory, arrayFactory: arrayFactory} } @@ -26,19 +26,25 @@ func (mf *ExprMapperFactory) NewMapper(mappings map[string]interface{}) (Mapper, exprMappings := make(map[string]expression.Expr) for key, value := range mappings { if value != nil { - if strVal, ok := value.(string); ok && len(strVal) > 0 && strVal[0] == '=' { - expr, err := mf.exprFactory.NewExpr(strVal[1:]) - if err != nil { - return nil, err + switch t := value.(type) { + case string: + if len(t) > 0 && t[0] == '=' { + expr, err := mf.exprFactory.NewExpr(t[1:]) + if err != nil { + return nil, err + } + exprMappings[key] = expr + } else { + exprMappings[key] = expression.NewLiteralExpr(value) } - exprMappings[key] = expr - } else if IsArrayMapping(value) { - arrayExpr, err := mf.arrayFactory.(*ArrayMapperFactory).NewAnyExpr(value) + + case map[string]interface{}: + objectExpr, err := NewObjectMapperFactory(mf.exprFactory).(*ObjectMapperFactory).NewObjectMapper(t) if err != nil { return nil, err } - exprMappings[key] = arrayExpr - } else { + exprMappings[key] = objectExpr + default: exprMappings[key] = expression.NewLiteralExpr(value) } } diff --git a/data/mapper/object.go b/data/mapper/object.go new file mode 100644 index 00000000..52f659f3 --- /dev/null +++ b/data/mapper/object.go @@ -0,0 +1,244 @@ +package mapper + +import ( + "fmt" + "github.com/project-flogo/core/data" + "github.com/project-flogo/core/data/coerce" + "github.com/project-flogo/core/data/expression" + "github.com/project-flogo/core/support/log" + "runtime/debug" + "strconv" + "strings" +) + +const ( + FOREACH = "@foreach" + NEWARRAY = "NEWARRAY" +) + +type ObjectMapperFactory struct { + exprFactory expression.Factory +} + +func NewObjectMapperFactory(exprFactory expression.Factory) expression.Factory { + return &ObjectMapperFactory{exprFactory: exprFactory} +} + +func (am *ObjectMapperFactory) NewObjectMapper(value map[string]interface{}) (expression.Expr, error) { + return &ObjectMapper{mappings: value, exprFactory: am.exprFactory}, nil +} + +func (am *ObjectMapperFactory) NewExpr(value string) (expression.Expr, error) { + v, err := coerce.ToObject(value) + if err != nil { + return nil, fmt.Errorf("unexpected object mapping error, %s", err.Error()) + } + return am.NewObjectMapper(v) +} + +type ObjectMapper struct { + mappings map[string]interface{} + exprFactory expression.Factory +} + +func (am *ObjectMapper) Eval(inputScope data.Scope) (interface{}, error) { + defer func() { + if r := recover(); r != nil { + log.RootLogger().Error("%+v", r) + log.RootLogger().Debugf("StackTrace: %s", debug.Stack()) + } + }() + + return handleObjectMapping(am.mappings, am.exprFactory, inputScope) +} + +func getForeach(foreachpath string) (*foreach, error) { + foreachpath = strings.TrimSpace(foreachpath) + if strings.HasPrefix(foreachpath, FOREACH) && strings.Contains(foreachpath, "(") && strings.Contains(foreachpath, ")") { + paramsStr := foreachpath[strings.Index(foreachpath, "(")+1 : strings.Index(foreachpath, ")")] + params := strings.Split(paramsStr, ",") + if len(params) == 2 { + return &foreach{sourceFrom: strings.TrimSpace(params[0]), index: strings.TrimSpace(params[1])}, nil + } else { + return &foreach{sourceFrom: strings.TrimSpace(params[0])}, nil + } + } + return nil, fmt.Errorf("invalid foreach [%s], it must follow @foreach(sourceArray, optional)", foreachpath) +} + +type foreach struct { + sourceFrom string + index string +} + +func handleObjectMapping(mappings map[string]interface{}, exprF expression.Factory, inputScope data.Scope) (interface{}, error) { + var value interface{} + if len(mappings) > 0 { + for mk, mv := range mappings { + //Array mapping should be only @foreach node + if nxtVal, ok := mv.(map[string]interface{}); ok { + for foreachK, foreachV := range nxtVal { + if strings.HasPrefix(foreachK, FOREACH) { + //Array mapping + foreach, err := getForeach(foreachK) + if err != nil { + return nil, err + } + if foreach.sourceFrom == NEWARRAY { + newArrayValues := make([]interface{}, 1) + value = make([]interface{}, 1) + err := handleArray(value.([]interface{}), newArrayValues, foreachV.(map[string]interface{}), exprF, newLoopScope(newArrayValues, foreach.index, inputScope)) + if err != nil { + return nil, fmt.Errorf("new array mapping failed %s", err.Error()) + } + + } else { + fromValue, err := getExpressionValue("="+foreach.sourceFrom, exprF, inputScope) + if err != nil { + return nil, fmt.Errorf("get value from source array error, %s", err.Error()) + } + sourceValues, err := coerce.ToArray(fromValue) + if err != nil { + return nil, fmt.Errorf("source array not an array, error %s", err.Error()) + } + value = make([]interface{}, len(sourceValues)) + err = handleArray(value.([]interface{}), sourceValues, foreachV.(map[string]interface{}), exprF, newLoopScope(sourceValues, foreach.index, inputScope)) + if err != nil { + return nil, fmt.Errorf("array mapping failed %s", err.Error()) + } + } + + } else { + if value == nil { + value = make(map[string]interface{}) + } + err := handleObject(value, mk, mv, exprF, inputScope) + if err != nil { + return nil, err + } + } + } + } else { + //Object mapping + if value == nil { + value = make(map[string]interface{}) + } + err := handleObject(value, mk, mv, exprF, inputScope) + if err != nil { + return nil, err + } + } + } + } + return value, nil +} + +func handleObject(targetValue interface{}, targetName string, source interface{}, exprF expression.Factory, scope data.Scope) error { + if objValue, ok := targetValue.(map[string]interface{}); ok { + if isExpr(source) { + fromValue, err := getExpressionValue(source, exprF, scope) + if err != nil { + return fmt.Errorf("get expression failed %s", err.Error()) + } + objValue[targetName] = fromValue + } else { + objValue[targetName] = source + } + } + return nil +} + +func handleArray(targetValues []interface{}, sourceValues []interface{}, arrayMappingFields map[string]interface{}, exprF expression.Factory, inputScope data.Scope) error { + for i, sourceValue := range sourceValues { + for k, v := range arrayMappingFields { + if strings.HasPrefix(k, FOREACH) { + //Array mapping + foreach, err := getForeach(k) + if err != nil { + return err + } + if foreach.sourceFrom == NEWARRAY { + targetValues[i] = make([]interface{}, 1) + err := handleArray(targetValues[i].([]interface{}), []interface{}{}, v.(map[string]interface{}), exprF, newLoopScope([]interface{}{}, foreach.index, inputScope)) + if err != nil { + return fmt.Errorf("get expression failed %s", err.Error()) + } + + } else { + fromValue, err := getExpressionValueWithData(sourceValue, "="+foreach.sourceFrom, exprF, inputScope) + if err != nil { + return fmt.Errorf("get value from source array error, %s", err.Error()) + } + + sourceValues, err := coerce.ToArray(fromValue) + if err != nil { + return fmt.Errorf("source array not an array, error %s", err.Error()) + } + targetValues[i] = make([]interface{}, len(sourceValues)) + + err = handleArray(targetValues[i].([]interface{}), sourceValues, v.(map[string]interface{}), exprF, newLoopScope(sourceValues, foreach.index, inputScope)) + if err != nil { + return err + } + } + + } else { + //Array fields + if targetValues[i] == nil { + targetValues[i] = make(map[string]interface{}) + } + if objValue, ok := targetValues[i].(map[string]interface{}); ok { + if isExpr(v) { + fromValue, err := getExpressionValueWithData(sourceValue, v, exprF, inputScope) + if err != nil { + return fmt.Errorf("get expression failed %s", err.Error()) + } + objValue[k] = fromValue + } else { + objValue[k] = v + } + } + } + } + } + return nil + +} + +func getExpressionValueWithData(value, path interface{}, exprF expression.Factory, scope data.Scope) (interface{}, error) { + var finalExpr expression.Expr + if isExpr(path) { + var err error + finalExpr, err = exprF.NewExpr(path.(string)[1:]) + if err != nil { + return nil, err + } + } else { + finalExpr = expression.NewLiteralExpr(path) + } + //Add current from value to scope + if value != nil { + scope = data.NewSimpleScope(value.(map[string]interface{}), scope) + + } + return finalExpr.Eval(scope) +} + +func getExpressionValue(path interface{}, exprF expression.Factory, scope data.Scope) (interface{}, error) { + return getExpressionValueWithData(nil, path, exprF, scope) +} + +func isExpr(value interface{}) bool { + if strVal, ok := value.(string); ok && len(strVal) > 0 && (strVal[0] == '=' || strVal[0] == '$') { + return true + } + return false +} + +func newLoopScope(array []interface{}, indexName string, scope data.Scope) data.Scope { + values := make(map[string]interface{}) + for i, v := range array { + values["_L."+indexName+"."+strconv.Itoa(i)] = v + } + return data.NewSimpleScope(values, scope) +} diff --git a/data/mapper/object_test.go b/data/mapper/object_test.go new file mode 100644 index 00000000..28a31e1b --- /dev/null +++ b/data/mapper/object_test.go @@ -0,0 +1,231 @@ +package mapper + +import ( + "encoding/json" + "github.com/project-flogo/core/data" + "github.com/project-flogo/core/data/resolve" + "testing" + + "github.com/stretchr/testify/assert" +) + +// +//func TestArrayMapping(t *testing.T) { +// mappingValue := ` +//{ +// "persion2":"$" +// "@foreach[=$.field.addresses]":{ +// "street" : "=$.street", +// "zipcode" : "=$.zipcode", +// "state" : "=$.state" +// } +//} +// +//` +// +// arrayData := `{ +// "person": "name", +// "addresses": [ +// { +// "street": "street", +// "zipcode": 77479, +// "state": "tx" +// } +// ] +//}` +// +// var val interface{} +// err := json.Unmarshal([]byte(mappingValue), &val) +// assert.Nil(t, err) +// mappings := map[string]interface{}{"addresses": val} +// factory := NewFactory(resolve.GetBasicResolver()) +// mapper, err := factory.NewMapper(mappings) +// +// attrs := map[string]interface{}{"field": arrayData} +// scope := data.NewSimpleScope(attrs, nil) +// results, err := mapper.Apply(scope) +// assert.Nil(t, err) +// arr := results["addresses"] +// +// assert.Equal(t, "street", arr.([]interface{})[0].(map[string]interface{})["street"]) +// assert.Equal(t, float64(77479), arr.([]interface{})[0].(map[string]interface{})["zipcode"]) +// assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) +// +//} +// +////8. array mappping with static function and leaf field +//func TestArrayMappingWithFunction(t *testing.T) { +// mappingValue := `{ +// "fields": [ +// { +// "from": "=tstring.concat(\"this stree name: \", $.street)", +// "to": "street", +// "type": "primitive" +// }, +// { +// "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", +// "to": "zipcode", +// "type": "primitive" +// }, +// { +// "from": "=$.state", +// "to": "state", +// "type": "primitive" +// } +// ], +// "from": "=$.field.addresses", +// "to": "addresses", +// "type": "foreach" +//}` +// +// arrayData := `{ +// "person": "name", +// "addresses": [ +// { +// "street": "street", +// "zipcode": 77479, +// "state": "tx" +// } +// ] +//}` +// +// mappings := map[string]interface{}{"addresses": mappingValue} +// factory := NewFactory(resolve.GetBasicResolver()) +// mapper, err := factory.NewMapper(mappings) +// +// attrs := map[string]interface{}{"field": arrayData} +// scope := data.NewSimpleScope(attrs, nil) +// results, err := mapper.Apply(scope) +// assert.Nil(t, err) +// arr := results["addresses"] +// assert.Equal(t, "this stree name: street", arr.([]interface{})[0].(map[string]interface{})["street"]) +// assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) +// assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) +// +//} +// +////9. array mapping with other activity output +//func TestArrayMappingWithUpstreamingOutput(t *testing.T) { +// mappingValue := `{ +// "fields": [ +// { +// "from": "=tstring.concat(\"this stree name: \", $.field.person)", +// "to": "street", +// "type": "primitive" +// }, +// { +// "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", +// "to": "zipcode", +// "type": "primitive" +// }, +// { +// "from": "=$.state", +// "to": "state", +// "type": "primitive" +// } +// ], +// "from": "=$.field.addresses", +// "to": "addresses", +// "type": "foreach" +//}` +// +// arrayData := `{ +// "person": "name", +// "addresses": [ +// { +// "street": "street", +// "zipcode": 77479, +// "state": "tx" +// } +// ] +//}` +// mappings := map[string]interface{}{"addresses": mappingValue} +// factory := NewFactory(resolve.GetBasicResolver()) +// mapper, err := factory.NewMapper(mappings) +// +// attrs := map[string]interface{}{"field": arrayData} +// scope := data.NewSimpleScope(attrs, nil) +// results, err := mapper.Apply(scope) +// assert.Nil(t, err) +// arr := results["addresses"] +// assert.Equal(t, "this stree name: name", arr.([]interface{})[0].(map[string]interface{})["street"]) +// assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) +// assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) +// +//} + +//9. array mapping with other activity output +func TestArrayMappingWithNest(t *testing.T) { + mappingValue := `{ + "person2" : "person 2222", + "addresses": { + "@foreach($.field.addresses, index)": + { + "street" : "=$.street", + "zipcode" : "9999", + "state" : "$loop[index].state", + "addresses2": { + "@foreach($.array)":{ + "street2" : "=$loop[index].street", + "zipcode2" : "=$.field1", + "state2" : "=$.field3" + } + } + } + } + }` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx", + "array":[ + { + "field1":"field1value", + "field2":"field2value", + "field3":"field3value" + } + ] + } + ] +}` + + arrayMapping := make(map[string]interface{}) + err := json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"addresses": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + attrs := map[string]interface{}{"field": arrayData} + scope := data.NewSimpleScope(attrs, nil) + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["addresses"] + assert.Equal(t, "this stree name: name", arr.([]interface{})[0].(map[string]interface{})["street"]) + assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) + assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) + + assert.Equal(t, "field1value", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield1"]) + assert.Equal(t, "field2value", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield2"]) + assert.Equal(t, "wangzai", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield3"]) + +} + +func TestGetSource(t *testing.T) { + var s = "@foreach($activity[blah].out2)" + foreach, err := getForeach(s) + assert.Nil(t, err) + assert.Equal(t, "$activity[blah].out2", foreach.sourceFrom) + assert.Equal(t, "", foreach.index) + + s = "@foreach($activity[blah].out2, index)" + foreach, err = getForeach(s) + assert.Nil(t, err) + assert.Equal(t, "$activity[blah].out2", foreach.sourceFrom) + assert.Equal(t, "index", foreach.index) + +} diff --git a/data/resolve/composite.go b/data/resolve/composite.go index 43ebe14f..15018bcf 100644 --- a/data/resolve/composite.go +++ b/data/resolve/composite.go @@ -12,6 +12,7 @@ var defaultResolver = NewCompositeResolver(map[string]Resolver{ ".": &ScopeResolver{}, "env": &EnvResolver{}, "property": &PropertyResolver{}, + "loop": &LoopResolver{}, }) func GetBasicResolver() CompositeResolver { diff --git a/data/resolve/loop.go b/data/resolve/loop.go new file mode 100644 index 00000000..dc62b263 --- /dev/null +++ b/data/resolve/loop.go @@ -0,0 +1,25 @@ +package resolve + +import ( + "fmt" + "github.com/project-flogo/core/data" + "github.com/project-flogo/core/data/path" +) + +var loopResolverInfo = NewResolverInfo(false, true) + +type LoopResolver struct { +} + +func (*LoopResolver) GetResolverInfo() *ResolverInfo { + return loopResolverInfo +} + +//LoopResolver Loop Resolver $Loop[item] +func (*LoopResolver) Resolve(scope data.Scope, item string, field string) (interface{}, error) { + value, exists := scope.GetValue("_L." + item) + if !exists { + return nil, fmt.Errorf("failed to resolve Loop: '%s', ensure that Loop is configured in the application", item) + } + return path.GetValue(value, "."+field) +} From ac5f28a8f3f6d17113a928576adc96b917c2d8f6 Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Thu, 21 Feb 2019 20:56:55 -0600 Subject: [PATCH 11/20] Hanlde loop resolver and make object + array working. --- data/mapper/object.go | 229 +++++++++++++---------------- data/mapper/object_test.go | 287 ++++++++++++++++--------------------- data/resolve/loop.go | 2 +- 3 files changed, 225 insertions(+), 293 deletions(-) diff --git a/data/mapper/object.go b/data/mapper/object.go index 52f659f3..b53346ea 100644 --- a/data/mapper/object.go +++ b/data/mapper/object.go @@ -7,12 +7,37 @@ import ( "github.com/project-flogo/core/data/expression" "github.com/project-flogo/core/support/log" "runtime/debug" - "strconv" "strings" ) const ( - FOREACH = "@foreach" + //Foreach Handle array must start with @foreach. + /* + "input": { + + "val" : { + "a" : "=$activity[blah].out", + "addresses": { + "@foreach($activity[blah].out2, i)": + { + "street" : "=$.street", + "zipcode" : "9999", + "state" : "=$activity[test].state", + "addresses2": { + "@foreach($.addresses2)":{ + "street2" : "=$loop[i].street2", + "zipcode2" : "=$.zipcode", + "state2" : "=$activity[test].state" + } + } + } + } + } + } + + */ + FOREACH = "@foreach" + //NEWARRAY create one array element for target array NEWARRAY = "NEWARRAY" ) @@ -52,85 +77,79 @@ func (am *ObjectMapper) Eval(inputScope data.Scope) (interface{}, error) { return handleObjectMapping(am.mappings, am.exprFactory, inputScope) } -func getForeach(foreachpath string) (*foreach, error) { - foreachpath = strings.TrimSpace(foreachpath) - if strings.HasPrefix(foreachpath, FOREACH) && strings.Contains(foreachpath, "(") && strings.Contains(foreachpath, ")") { - paramsStr := foreachpath[strings.Index(foreachpath, "(")+1 : strings.Index(foreachpath, ")")] - params := strings.Split(paramsStr, ",") - if len(params) == 2 { - return &foreach{sourceFrom: strings.TrimSpace(params[0]), index: strings.TrimSpace(params[1])}, nil - } else { - return &foreach{sourceFrom: strings.TrimSpace(params[0])}, nil - } - } - return nil, fmt.Errorf("invalid foreach [%s], it must follow @foreach(sourceArray, optional)", foreachpath) -} - type foreach struct { - sourceFrom string - index string + sourceFrom string + index string + exprFactory expression.Factory } -func handleObjectMapping(mappings map[string]interface{}, exprF expression.Factory, inputScope data.Scope) (interface{}, error) { - var value interface{} - if len(mappings) > 0 { - for mk, mv := range mappings { - //Array mapping should be only @foreach node +func handleObjectMapping(objectMappings map[string]interface{}, exprF expression.Factory, inputScope data.Scope) (interface{}, error) { + objectVal := make(map[string]interface{}) + if len(objectMappings) > 0 { + for mk, mv := range objectMappings { + //Root level @foreach, it should be only itself + if strings.HasPrefix(mk, FOREACH) { + return newForeach(mk, exprF).handle(mv.(map[string]interface{}), inputScope) + } + if nxtVal, ok := mv.(map[string]interface{}); ok { + //second level object for foreachK, foreachV := range nxtVal { if strings.HasPrefix(foreachK, FOREACH) { - //Array mapping - foreach, err := getForeach(foreachK) + result, err := newForeach(foreachK, exprF).handle(foreachV.(map[string]interface{}), inputScope) if err != nil { return nil, err } - if foreach.sourceFrom == NEWARRAY { - newArrayValues := make([]interface{}, 1) - value = make([]interface{}, 1) - err := handleArray(value.([]interface{}), newArrayValues, foreachV.(map[string]interface{}), exprF, newLoopScope(newArrayValues, foreach.index, inputScope)) - if err != nil { - return nil, fmt.Errorf("new array mapping failed %s", err.Error()) - } - - } else { - fromValue, err := getExpressionValue("="+foreach.sourceFrom, exprF, inputScope) - if err != nil { - return nil, fmt.Errorf("get value from source array error, %s", err.Error()) - } - sourceValues, err := coerce.ToArray(fromValue) - if err != nil { - return nil, fmt.Errorf("source array not an array, error %s", err.Error()) - } - value = make([]interface{}, len(sourceValues)) - err = handleArray(value.([]interface{}), sourceValues, foreachV.(map[string]interface{}), exprF, newLoopScope(sourceValues, foreach.index, inputScope)) - if err != nil { - return nil, fmt.Errorf("array mapping failed %s", err.Error()) - } - } - + objectVal[mk] = result } else { - if value == nil { - value = make(map[string]interface{}) + secondMap, ok := objectVal[mk] + if !ok { + secondMap = make(map[string]interface{}) + objectVal[mk] = secondMap } - err := handleObject(value, mk, mv, exprF, inputScope) + err := handleObject(secondMap, foreachK, foreachV, exprF, inputScope) if err != nil { return nil, err } } } } else { - //Object mapping - if value == nil { - value = make(map[string]interface{}) - } - err := handleObject(value, mk, mv, exprF, inputScope) + err := handleObject(objectVal, mk, mv, exprF, inputScope) if err != nil { return nil, err } } } } - return value, nil + return objectVal, nil +} + +func (f *foreach) handle(arrayMappingFields map[string]interface{}, inputScope data.Scope) (interface{}, error) { + var newSourceArray []interface{} + if f.sourceFrom == NEWARRAY { + newSourceArray = make([]interface{}, 1) + } else { + fromValue, err := getExpressionValue("="+f.sourceFrom, f.exprFactory, inputScope) + if err != nil { + return nil, fmt.Errorf("get value from source array error, %s", err.Error()) + } + newSourceArray, err = coerce.ToArray(fromValue) + if err != nil { + return nil, fmt.Errorf("source array not an array, error %s", err.Error()) + } + } + + targetValues := make([]interface{}, len(newSourceArray)) + for i, sourceValue := range newSourceArray { + inputScope = newLoopScope(sourceValue, f.index, inputScope) + item, err := handleObjectMapping(arrayMappingFields, f.exprFactory, inputScope) + if err != nil { + return nil, err + } + targetValues[i] = item + } + return targetValues, nil + } func handleObject(targetValue interface{}, targetName string, source interface{}, exprF expression.Factory, scope data.Scope) error { @@ -148,64 +167,7 @@ func handleObject(targetValue interface{}, targetName string, source interface{} return nil } -func handleArray(targetValues []interface{}, sourceValues []interface{}, arrayMappingFields map[string]interface{}, exprF expression.Factory, inputScope data.Scope) error { - for i, sourceValue := range sourceValues { - for k, v := range arrayMappingFields { - if strings.HasPrefix(k, FOREACH) { - //Array mapping - foreach, err := getForeach(k) - if err != nil { - return err - } - if foreach.sourceFrom == NEWARRAY { - targetValues[i] = make([]interface{}, 1) - err := handleArray(targetValues[i].([]interface{}), []interface{}{}, v.(map[string]interface{}), exprF, newLoopScope([]interface{}{}, foreach.index, inputScope)) - if err != nil { - return fmt.Errorf("get expression failed %s", err.Error()) - } - - } else { - fromValue, err := getExpressionValueWithData(sourceValue, "="+foreach.sourceFrom, exprF, inputScope) - if err != nil { - return fmt.Errorf("get value from source array error, %s", err.Error()) - } - - sourceValues, err := coerce.ToArray(fromValue) - if err != nil { - return fmt.Errorf("source array not an array, error %s", err.Error()) - } - targetValues[i] = make([]interface{}, len(sourceValues)) - - err = handleArray(targetValues[i].([]interface{}), sourceValues, v.(map[string]interface{}), exprF, newLoopScope(sourceValues, foreach.index, inputScope)) - if err != nil { - return err - } - } - - } else { - //Array fields - if targetValues[i] == nil { - targetValues[i] = make(map[string]interface{}) - } - if objValue, ok := targetValues[i].(map[string]interface{}); ok { - if isExpr(v) { - fromValue, err := getExpressionValueWithData(sourceValue, v, exprF, inputScope) - if err != nil { - return fmt.Errorf("get expression failed %s", err.Error()) - } - objValue[k] = fromValue - } else { - objValue[k] = v - } - } - } - } - } - return nil - -} - -func getExpressionValueWithData(value, path interface{}, exprF expression.Factory, scope data.Scope) (interface{}, error) { +func getExpressionValue(path interface{}, exprF expression.Factory, scope data.Scope) (interface{}, error) { var finalExpr expression.Expr if isExpr(path) { var err error @@ -216,29 +178,38 @@ func getExpressionValueWithData(value, path interface{}, exprF expression.Factor } else { finalExpr = expression.NewLiteralExpr(path) } - //Add current from value to scope - if value != nil { - scope = data.NewSimpleScope(value.(map[string]interface{}), scope) - - } return finalExpr.Eval(scope) } -func getExpressionValue(path interface{}, exprF expression.Factory, scope data.Scope) (interface{}, error) { - return getExpressionValueWithData(nil, path, exprF, scope) +func newForeach(foreachpath string, exprF expression.Factory) *foreach { + foreach := &foreach{exprFactory: exprF} + foreachpath = strings.TrimSpace(foreachpath) + if strings.HasPrefix(foreachpath, FOREACH) && strings.Contains(foreachpath, "(") && strings.Contains(foreachpath, ")") { + paramsStr := foreachpath[strings.Index(foreachpath, "(")+1 : strings.Index(foreachpath, ")")] + params := strings.Split(paramsStr, ",") + if len(params) >= 2 { + foreach.sourceFrom = strings.TrimSpace(params[0]) + foreach.index = strings.TrimSpace(params[1]) + } else { + foreach.sourceFrom = strings.TrimSpace(params[0]) + } + } + return foreach } func isExpr(value interface{}) bool { - if strVal, ok := value.(string); ok && len(strVal) > 0 && (strVal[0] == '=' || strVal[0] == '$') { + if strVal, ok := value.(string); ok && len(strVal) > 0 && (strVal[0] == '=') { return true } return false } -func newLoopScope(array []interface{}, indexName string, scope data.Scope) data.Scope { - values := make(map[string]interface{}) - for i, v := range array { - values["_L."+indexName+"."+strconv.Itoa(i)] = v +func newLoopScope(arrayItem interface{}, indexName string, scope data.Scope) data.Scope { + if len(indexName) <= 0 { + return data.NewSimpleScope(arrayItem.(map[string]interface{}), scope) + } else { + values := arrayItem.(map[string]interface{}) + values[indexName] = arrayItem + return data.NewSimpleScope(values, scope) } - return data.NewSimpleScope(values, scope) } diff --git a/data/mapper/object_test.go b/data/mapper/object_test.go index 28a31e1b..c34661f3 100644 --- a/data/mapper/object_test.go +++ b/data/mapper/object_test.go @@ -9,166 +9,49 @@ import ( "github.com/stretchr/testify/assert" ) -// -//func TestArrayMapping(t *testing.T) { -// mappingValue := ` -//{ -// "persion2":"$" -// "@foreach[=$.field.addresses]":{ -// "street" : "=$.street", -// "zipcode" : "=$.zipcode", -// "state" : "=$.state" -// } -//} -// -//` -// -// arrayData := `{ -// "person": "name", -// "addresses": [ -// { -// "street": "street", -// "zipcode": 77479, -// "state": "tx" -// } -// ] -//}` -// -// var val interface{} -// err := json.Unmarshal([]byte(mappingValue), &val) -// assert.Nil(t, err) -// mappings := map[string]interface{}{"addresses": val} -// factory := NewFactory(resolve.GetBasicResolver()) -// mapper, err := factory.NewMapper(mappings) -// -// attrs := map[string]interface{}{"field": arrayData} -// scope := data.NewSimpleScope(attrs, nil) -// results, err := mapper.Apply(scope) -// assert.Nil(t, err) -// arr := results["addresses"] -// -// assert.Equal(t, "street", arr.([]interface{})[0].(map[string]interface{})["street"]) -// assert.Equal(t, float64(77479), arr.([]interface{})[0].(map[string]interface{})["zipcode"]) -// assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) -// -//} -// -////8. array mappping with static function and leaf field -//func TestArrayMappingWithFunction(t *testing.T) { -// mappingValue := `{ -// "fields": [ -// { -// "from": "=tstring.concat(\"this stree name: \", $.street)", -// "to": "street", -// "type": "primitive" -// }, -// { -// "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", -// "to": "zipcode", -// "type": "primitive" -// }, -// { -// "from": "=$.state", -// "to": "state", -// "type": "primitive" -// } -// ], -// "from": "=$.field.addresses", -// "to": "addresses", -// "type": "foreach" -//}` -// -// arrayData := `{ -// "person": "name", -// "addresses": [ -// { -// "street": "street", -// "zipcode": 77479, -// "state": "tx" -// } -// ] -//}` -// -// mappings := map[string]interface{}{"addresses": mappingValue} -// factory := NewFactory(resolve.GetBasicResolver()) -// mapper, err := factory.NewMapper(mappings) -// -// attrs := map[string]interface{}{"field": arrayData} -// scope := data.NewSimpleScope(attrs, nil) -// results, err := mapper.Apply(scope) -// assert.Nil(t, err) -// arr := results["addresses"] -// assert.Equal(t, "this stree name: street", arr.([]interface{})[0].(map[string]interface{})["street"]) -// assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) -// assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) -// -//} -// -////9. array mapping with other activity output -//func TestArrayMappingWithUpstreamingOutput(t *testing.T) { -// mappingValue := `{ -// "fields": [ -// { -// "from": "=tstring.concat(\"this stree name: \", $.field.person)", -// "to": "street", -// "type": "primitive" -// }, -// { -// "from": "=tstring.concat(\"The zipcode is: \",$.zipcode)", -// "to": "zipcode", -// "type": "primitive" -// }, -// { -// "from": "=$.state", -// "to": "state", -// "type": "primitive" -// } -// ], -// "from": "=$.field.addresses", -// "to": "addresses", -// "type": "foreach" -//}` -// -// arrayData := `{ -// "person": "name", -// "addresses": [ -// { -// "street": "street", -// "zipcode": 77479, -// "state": "tx" -// } -// ] -//}` -// mappings := map[string]interface{}{"addresses": mappingValue} -// factory := NewFactory(resolve.GetBasicResolver()) -// mapper, err := factory.NewMapper(mappings) -// -// attrs := map[string]interface{}{"field": arrayData} -// scope := data.NewSimpleScope(attrs, nil) -// results, err := mapper.Apply(scope) -// assert.Nil(t, err) -// arr := results["addresses"] -// assert.Equal(t, "this stree name: name", arr.([]interface{})[0].(map[string]interface{})["street"]) -// assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) -// assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) -// -//} - -//9. array mapping with other activity output +func TestObjectMappingWithFunction(t *testing.T) { + mappingValue := `{ + "person2" : "person", + "addresses": { + "tostate" : "=tstring.concat(\"State is \", \"tx\")", + "tostreet": "3421 st", + "addresses2": { + "tofield2": "=tstring.concat(\"field is \", \"ffff\")" + } + } + }` + + arrayMapping := make(map[string]interface{}) + err := json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"addresses": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + results, err := mapper.Apply(nil) + assert.Nil(t, err) + + arr := results["addresses"] + assert.Equal(t, "person", arr.(map[string]interface{})["person2"]) + assert.Equal(t, "3421 st", arr.(map[string]interface{})["addresses"].(map[string]interface{})["tostreet"]) + assert.Equal(t, "State is tx", arr.(map[string]interface{})["addresses"].(map[string]interface{})["tostate"]) +} + +//1. array mapping with other activity output func TestArrayMappingWithNest(t *testing.T) { mappingValue := `{ - "person2" : "person 2222", + "person2" : "person", "addresses": { "@foreach($.field.addresses, index)": { - "street" : "=$.street", - "zipcode" : "9999", - "state" : "$loop[index].state", + "tostate" : "=$loop[index].state", + "tostreet": "=$.street", + "tozipcode":"=$.zipcode", "addresses2": { "@foreach($.array)":{ - "street2" : "=$loop[index].street", - "zipcode2" : "=$.field1", - "state2" : "=$.field3" + "tofield1" : "=$loop[index].street", + "tofield2": "=$.field2", + "tofield3":"=$.field3" } } } @@ -187,6 +70,28 @@ func TestArrayMappingWithNest(t *testing.T) { "field1":"field1value", "field2":"field2value", "field3":"field3value" + }, + { + "field1":"field1value2", + "field2":"field2value2", + "field3":"field3value2" + } + ] + }, + { + "street": "street2", + "zipcode": 774792, + "state": "tx2", + "array":[ + { + "field1":"field1value2", + "field2":"field2value2", + "field3":"field3value2" + }, + { + "field1":"field1value22", + "field2":"field2value22", + "field3":"field3value22" } ] } @@ -204,27 +109,83 @@ func TestArrayMappingWithNest(t *testing.T) { scope := data.NewSimpleScope(attrs, nil) results, err := mapper.Apply(scope) assert.Nil(t, err) + arr := results["addresses"] - assert.Equal(t, "this stree name: name", arr.([]interface{})[0].(map[string]interface{})["street"]) - assert.Equal(t, "The zipcode is: 77479", arr.([]interface{})[0].(map[string]interface{})["zipcode"]) - assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["state"]) + assert.Equal(t, "person", arr.(map[string]interface{})["person2"]) + assert.Equal(t, float64(77479), arr.(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["tozipcode"]) + assert.Equal(t, "tx", arr.(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["tostate"]) +} + +//2. array mapping with function +func TestArrayMappingWithFunction(t *testing.T) { + mappingValue := `{ + "person2" : "person", + "addresses": { + "@foreach($.field.addresses, index)": + { + "tostate" : "=tstring.concat(\"State is \", $loop[index].state)", + "tostreet": "=$.street", + "tozipcode":"=$.zipcode", + "addresses2": { + "@foreach($.array)":{ + "tofield1" : "=$loop[index].street", + "tofield2": "=tstring.concat(\"field is \", $.field2)", + "tofield3":"=$.field3" + } + } + } + } + }` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx", + "array":[ + { + "field1":"field1value", + "field2":"field2value", + "field3":"field3value" + }, + { + "field1":"field1value2", + "field2":"field2value2", + "field3":"field3value2" + } + ] + } + ] +}` + + arrayMapping := make(map[string]interface{}) + err := json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"addresses": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) - assert.Equal(t, "field1value", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield1"]) - assert.Equal(t, "field2value", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield2"]) - assert.Equal(t, "wangzai", arr.([]interface{})[0].(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["tofield3"]) + attrs := map[string]interface{}{"field": arrayData} + scope := data.NewSimpleScope(attrs, nil) + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["addresses"] + assert.Equal(t, "person", arr.(map[string]interface{})["person2"]) + assert.Equal(t, float64(77479), arr.(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["tozipcode"]) + assert.Equal(t, "State is tx", arr.(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["tostate"]) } func TestGetSource(t *testing.T) { var s = "@foreach($activity[blah].out2)" - foreach, err := getForeach(s) - assert.Nil(t, err) + foreach := newForeach(s, nil) assert.Equal(t, "$activity[blah].out2", foreach.sourceFrom) assert.Equal(t, "", foreach.index) s = "@foreach($activity[blah].out2, index)" - foreach, err = getForeach(s) - assert.Nil(t, err) + foreach = newForeach(s, nil) assert.Equal(t, "$activity[blah].out2", foreach.sourceFrom) assert.Equal(t, "index", foreach.index) diff --git a/data/resolve/loop.go b/data/resolve/loop.go index dc62b263..afeb3ef3 100644 --- a/data/resolve/loop.go +++ b/data/resolve/loop.go @@ -17,7 +17,7 @@ func (*LoopResolver) GetResolverInfo() *ResolverInfo { //LoopResolver Loop Resolver $Loop[item] func (*LoopResolver) Resolve(scope data.Scope, item string, field string) (interface{}, error) { - value, exists := scope.GetValue("_L." + item) + value, exists := scope.GetValue(item) if !exists { return nil, fmt.Errorf("failed to resolve Loop: '%s', ensure that Loop is configured in the application", item) } From 8c18ba9af34810ff4fb06d962dd5bcc9032145bd Mon Sep 17 00:00:00 2001 From: Frank Martinez Date: Thu, 21 Feb 2019 23:25:39 -0500 Subject: [PATCH 12/20] minor cleanup --- engine/event/emitter.go | 82 ++++++++++++++ engine/event/events.go | 228 ++------------------------------------- engine/event/publish.go | 96 +++++++++++++++++ engine/event/registry.go | 88 +++++++++++++++ 4 files changed, 272 insertions(+), 222 deletions(-) create mode 100644 engine/event/emitter.go create mode 100644 engine/event/publish.go create mode 100644 engine/event/registry.go diff --git a/engine/event/emitter.go b/engine/event/emitter.go new file mode 100644 index 00000000..b55c81e6 --- /dev/null +++ b/engine/event/emitter.go @@ -0,0 +1,82 @@ +package event + +import ( + "errors" + "github.com/project-flogo/core/support/log" + "runtime/debug" + "sync" +) + + +var emitters = make(map[string]*TypeEmitter) + +type TypeEmitter struct { + mutex *sync.RWMutex + eventType string + listeners map[string]Listener +} + +func (te *TypeEmitter) RegisterListener(name string, listener Listener) error { + if name == "" { + return errors.New("event listener name must be specified") + } + + if listener == nil { + return errors.New("event listener must not nil") + } + + te.mutex.Lock() + te.listeners[name] = listener + te.mutex.Unlock() + + return nil +} + +func (te *TypeEmitter) HasListeners() bool { + te.mutex.RLock() + hasListeners := len(te.listeners) > 0 + te.mutex.RUnlock() + + return hasListeners +} + +func (te *TypeEmitter) UnRegisterListener(name string) error { + if name == "" { + return errors.New("event listener name must be specified") + } + + te.mutex.Lock() + delete(te.listeners, name) + te.mutex.Unlock() + + return nil +} + + +func (te *TypeEmitter) Publish(evtCtx *Context) { + + listenerName := "" + + te.mutex.RLock() + + defer func() { + te.mutex.RUnlock() + if r := recover(); r != nil { + log.RootLogger().Errorf("Registered event listener - '%s' failed to process event due to error - '%v' ", listenerName, r) + log.RootLogger().Errorf("StackTrace: %s", debug.Stack()) + } + }() + + for name, listener := range te.listeners { + listenerName = name + + err := listener.HandleEvent(evtCtx) + if err != nil { + log.RootLogger().Errorf("Registered event listener - '%s' failed to process event due to error - '%s' ", name, err.Error()) + } else { + log.RootLogger().Debugf("Event - '%s' is successfully delivered to event listener - '%s'", te.eventType, name) + } + } + + te.mutex.RUnlock() +} \ No newline at end of file diff --git a/engine/event/events.go b/engine/event/events.go index 2d888c7f..cbfc6b60 100644 --- a/engine/event/events.go +++ b/engine/event/events.go @@ -1,242 +1,26 @@ package event -import ( - "errors" - "os" - "runtime/debug" - "strconv" - "strings" - "sync" - - "github.com/project-flogo/core/support/log" -) - -const ( - ENV_PUBLISH_AUDIT_EVENTS_KEY = "FLOGO_PUBLISH_AUDIT_EVENTS" -) type Listener interface { - // Returns name of the listener - Name() string - // Called when matching event occurs - HandleEvent(*EventContext) error -} - -var eventListeners = make(map[string][]Listener) - -// Buffered channel -var eventQueue = make(chan *EventContext, 100) -var publisherRoutineStarted = false -var shutdown = make(chan bool) - -var publishEventsEnabled = PublishAuditEvents() - -var lock = &sync.RWMutex{} - -// Registers listener for given event types -func RegisterListener(evtListener Listener, eventTypes []string) error { - if evtListener == nil { - return errors.New("Event listener must not nil") - } - - if len(eventTypes) == 0 { - return errors.New("Failed register event listener. At-least one event type must be provided.") - } - - lock.Lock() - for _, eType := range eventTypes { - eventListeners[eType] = append(eventListeners[eType], evtListener) - log.RootLogger().Debugf("Event listener - '%s' successfully registered for event type - '%s'", evtListener.Name(), eType) - } - lock.Unlock() - startPublisherRoutine() - return nil -} - -// Unregister event listener for given event types . -// To unregister from all event types, set eventTypes to nil -func UnRegisterListener(name string, eventTypes []string) { - - if name == "" { - return - } - - lock.Lock() - - var deleteList []string - var index = -1 - - if eventTypes != nil && len(eventTypes) > 0 { - for _, eType := range eventTypes { - evtLs, ok := eventListeners[eType] - if ok { - for i, el := range evtLs { - if strings.EqualFold(el.Name(), name) { - index = i - break - } - } - if index > -1 { - if len(evtLs) > 1 { - // More than one listeners - copy(evtLs[index:], evtLs[index+1:]) - evtLs[len(evtLs)-1] = nil - eventListeners[eType] = evtLs[:len(evtLs)-1] - } else { - // Single listener in the map. Remove map entry - deleteList = append(deleteList, eType) - } - log.RootLogger().Debugf("Event listener - '%s' successfully unregistered for event type - '%s'", name, eType) - index = -1 - } - } - } - } else { - for eType, elList := range eventListeners { - for i, el := range elList { - if strings.EqualFold(el.Name(), name) { - index = i - break - } - } - if index > -1 { - if len(elList) > 1 { - // More than one listeners - copy(elList[index:], elList[index+1:]) - elList[len(elList)-1] = nil - eventListeners[eType] = elList[:len(elList)-1] - } else { - // Single listener in the map. Remove map entry - deleteList = append(deleteList, eType) - } - log.RootLogger().Debugf("Event listener - '%s' successfully unregistered for event type - '%s'", name, eType) - index = -1 - } - } - } - - if len(deleteList) > 0 { - for _, evtType := range deleteList { - delete(eventListeners, evtType) - } - } - - lock.Unlock() - stopPublisherRoutine() + HandleEvent(*Context) error } -func startPublisherRoutine() { - if publisherRoutineStarted == true { - return - } - - if len(eventListeners) > 0 { - // start publisher routine - go publishEvents() - publisherRoutineStarted = true - } -} - -func stopPublisherRoutine() { - if publisherRoutineStarted == false { - return - } - - if len(eventListeners) == 0 { - // No more listeners. Stop go routine - shutdown <- true - publisherRoutineStarted = false - } -} - -// EventContext is a wrapper over specific event -type EventContext struct { +// Context is a wrapper over specific event +type Context struct { // Type of event eventType string + // Event data event interface{} } // Returns wrapped event data -func (ec *EventContext) GetEvent() interface{} { +func (ec *Context) GetEvent() interface{} { return ec.event } // Returns event type -func (ec *EventContext) GetType() string { +func (ec *Context) GetEventType() string { return ec.eventType } - -func publishEvents() { - defer func() { - publisherRoutineStarted = false - }() - - for { - select { - case event := <-eventQueue: - lock.RLock() - publishEvent(event) - lock.RUnlock() - case <-shutdown: - log.RootLogger().Infof("Shutting down event publisher routine") - return - } - } -} - -func publishEvent(fe *EventContext) { - regListeners, ok := eventListeners[fe.eventType] - if ok { - for _, ls := range regListeners { - func() { - defer func() { - if r := recover(); r != nil { - log.RootLogger().Errorf("Registered event listener - '%s' failed to process event due to error - '%v' ", ls.Name(), r) - log.RootLogger().Errorf("StackTrace: %s", debug.Stack()) - } - }() - err := ls.HandleEvent(fe) - if err != nil { - log.RootLogger().Errorf("Registered event listener - '%s' failed to process event due to error - '%s' ", ls.Name(), err.Error()) - } else { - log.RootLogger().Debugf("Event - '%s' is successfully delivered to event listener - '%s'", fe.eventType, ls.Name()) - } - - }() - } - fe = nil - } -} - -func HasListener(eventType string) bool { - // event publishing is turned off - if !publishEventsEnabled { - return false - } - - lock.RLock() - ls, ok := eventListeners[eventType] - lock.RUnlock() - return ok && len(ls) > 0 -} - -//TODO channel to be passed to actions -// Puts event with given type and data on the channel -func PostEvent(eType string, event interface{}) { - if publishEventsEnabled && publisherRoutineStarted && HasListener(eType) { - evtContext := &EventContext{event: event, eventType: eType} - // Put event on the queue - eventQueue <- evtContext - } -} - -func PublishAuditEvents() bool { - key := os.Getenv(ENV_PUBLISH_AUDIT_EVENTS_KEY) - if len(key) > 0 { - publish, _ := strconv.ParseBool(key) - return publish - } - return true -} diff --git a/engine/event/publish.go b/engine/event/publish.go new file mode 100644 index 00000000..b61ebee2 --- /dev/null +++ b/engine/event/publish.go @@ -0,0 +1,96 @@ +package event + +import ( + "os" + "strconv" + + "github.com/project-flogo/core/support/log" +) + +const ( + ENV_PUBLISH_AUDIT_EVENTS_KEY = "FLOGO_PUBLISH_AUDIT_EVENTS" +) + +var publishEventsEnabled = PublishEnabled() +var publisherRoutineStarted = false +var shutdown = make(chan bool) + +// Buffered channel +var eventQueue = make(chan *Context, 100) + +//TODO channel to be passed to actions +// Puts event with given type and data on the channel +func Post(eventType string, event interface{}) { + if publishEventsEnabled && publisherRoutineStarted && HasListener(eventType) { + evtCtx := &Context{event: event, eventType: eventType} + // Put event on the queue + eventQueue <- evtCtx + } +} + +func startPublisherRoutine() { + if publisherRoutineStarted { + return + } + + go publishEvents() + publisherRoutineStarted = true +} + +func stopPublisherRoutine() { + if !publisherRoutineStarted { + return + } + + hasListeners := false + + if len(emitters) > 0 { + for _, emitter := range emitters { + if len(emitter.listeners) > 0 { + hasListeners = true + break + } + } + } + + if !hasListeners { + // No more listeners. Stop go routine + shutdown <- true + } +} + +func publishEvents() { + defer func() { + publisherRoutineStarted = false + }() + + for { + select { + case evtCtx := <-eventQueue: + publishEvent(evtCtx) + case <-shutdown: + log.RootLogger().Infof("Shutting down event publisher routine") + return + } + } +} + +func publishEvent(evtCtx *Context) { + + emittersMutex.RLock() + emitter, ok := emitters[evtCtx.eventType] + emittersMutex.RUnlock() + + if ok { + emitter.Publish(evtCtx) + } +} + +func PublishEnabled() bool { + key := os.Getenv(ENV_PUBLISH_AUDIT_EVENTS_KEY) + if len(key) > 0 { + publish, _ := strconv.ParseBool(key) + return publish + } + return true +} diff --git a/engine/event/registry.go b/engine/event/registry.go new file mode 100644 index 00000000..fcb96cf0 --- /dev/null +++ b/engine/event/registry.go @@ -0,0 +1,88 @@ +package event + +import ( + "errors" + "sync" + + "github.com/project-flogo/core/support/log" +) + +var typeEmitters = make(map[string]*TypeEmitter) +var emittersMutex = &sync.RWMutex{} + +// Registers listener for given event types +func RegisterListener(name string, listener Listener, eventTypes []string) error { + if name == "" { + return errors.New("event listener name must be specified") + } + + if listener == nil { + return errors.New("event listener must not nil") + } + + if len(eventTypes) == 0 { + return errors.New("at least one event type must be provided") + } + + emittersMutex.Lock() + + for _, eType := range eventTypes { + emitter, ok := typeEmitters[eType] + if !ok { + emitter = &TypeEmitter{eventType:eType, mutex:&sync.RWMutex{}, listeners:make(map[string]Listener)} + typeEmitters[eType] = emitter + } + emitter.RegisterListener(name, listener) + log.RootLogger().Debugf("Event listener - '%s' successfully registered for event type - '%s'", name, eType) + } + + emittersMutex.Unlock() + + startPublisherRoutine() + return nil +} + +// Unregister event listener for given event types . +// To unregister from all event types, set eventTypes to nil +func UnRegisterListener(name string, eventTypes []string) { + + if name == "" || len(emitters) == 0 { + return + } + + //unregister doesn't remove emitter, so no lock is required + + if len(eventTypes) > 0 { + for _, eventType := range eventTypes { + if emitter, ok := emitters[eventType]; ok { + emitter.UnRegisterListener(name) + log.RootLogger().Debugf("Event listener - '%s' successfully unregistered for event type - '%s'", name, eventType) + + } + } + } else { + //unregister from all emitters + for _, emitter := range emitters { + emitter.UnRegisterListener(name) + log.RootLogger().Debugf("Event listener - '%s' successfully unregistered for event type - '%s'", name, emitter.eventType) + } + } + + stopPublisherRoutine() +} + + +func HasListener(eventType string) bool { + + emittersMutex.RLock() + emitter, ok := typeEmitters[eventType] + emittersMutex.RUnlock() + + if ok { + return emitter.HasListeners() + } + + return false +} + + From fab326d4906a1324e608e1a953074f9f7d716e95 Mon Sep 17 00:00:00 2001 From: Frank Martinez Date: Thu, 21 Feb 2019 23:31:33 -0500 Subject: [PATCH 13/20] applied gofmt --- engine/event/emitter.go | 11 +++++------ engine/event/events.go | 1 - engine/event/registry.go | 5 +---- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/engine/event/emitter.go b/engine/event/emitter.go index b55c81e6..a0eda717 100644 --- a/engine/event/emitter.go +++ b/engine/event/emitter.go @@ -2,17 +2,17 @@ package event import ( "errors" - "github.com/project-flogo/core/support/log" "runtime/debug" "sync" -) + "github.com/project-flogo/core/support/log" +) var emitters = make(map[string]*TypeEmitter) type TypeEmitter struct { - mutex *sync.RWMutex - eventType string + mutex *sync.RWMutex + eventType string listeners map[string]Listener } @@ -52,7 +52,6 @@ func (te *TypeEmitter) UnRegisterListener(name string) error { return nil } - func (te *TypeEmitter) Publish(evtCtx *Context) { listenerName := "" @@ -79,4 +78,4 @@ func (te *TypeEmitter) Publish(evtCtx *Context) { } te.mutex.RUnlock() -} \ No newline at end of file +} diff --git a/engine/event/events.go b/engine/event/events.go index cbfc6b60..9c3d2761 100644 --- a/engine/event/events.go +++ b/engine/event/events.go @@ -1,6 +1,5 @@ package event - type Listener interface { // Called when matching event occurs HandleEvent(*Context) error diff --git a/engine/event/registry.go b/engine/event/registry.go index fcb96cf0..3c92a19b 100644 --- a/engine/event/registry.go +++ b/engine/event/registry.go @@ -29,7 +29,7 @@ func RegisterListener(name string, listener Listener, eventTypes []string) error for _, eType := range eventTypes { emitter, ok := typeEmitters[eType] if !ok { - emitter = &TypeEmitter{eventType:eType, mutex:&sync.RWMutex{}, listeners:make(map[string]Listener)} + emitter = &TypeEmitter{eventType: eType, mutex: &sync.RWMutex{}, listeners: make(map[string]Listener)} typeEmitters[eType] = emitter } emitter.RegisterListener(name, listener) @@ -71,7 +71,6 @@ func UnRegisterListener(name string, eventTypes []string) { stopPublisherRoutine() } - func HasListener(eventType string) bool { emittersMutex.RLock() @@ -84,5 +83,3 @@ func HasListener(eventType string) bool { return false } - - From 3177e87d862a47f1e7b02f30015878f057c6fc58 Mon Sep 17 00:00:00 2001 From: Frank Martinez Date: Fri, 22 Feb 2019 01:15:30 -0500 Subject: [PATCH 14/20] rename emitters --- engine/event/emitter.go | 11 +++++------ engine/event/registry.go | 10 +++++----- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/engine/event/emitter.go b/engine/event/emitter.go index a0eda717..8b6cdf79 100644 --- a/engine/event/emitter.go +++ b/engine/event/emitter.go @@ -8,15 +8,14 @@ import ( "github.com/project-flogo/core/support/log" ) -var emitters = make(map[string]*TypeEmitter) -type TypeEmitter struct { +type Emitter struct { mutex *sync.RWMutex eventType string listeners map[string]Listener } -func (te *TypeEmitter) RegisterListener(name string, listener Listener) error { +func (te *Emitter) RegisterListener(name string, listener Listener) error { if name == "" { return errors.New("event listener name must be specified") } @@ -32,7 +31,7 @@ func (te *TypeEmitter) RegisterListener(name string, listener Listener) error { return nil } -func (te *TypeEmitter) HasListeners() bool { +func (te *Emitter) HasListeners() bool { te.mutex.RLock() hasListeners := len(te.listeners) > 0 te.mutex.RUnlock() @@ -40,7 +39,7 @@ func (te *TypeEmitter) HasListeners() bool { return hasListeners } -func (te *TypeEmitter) UnRegisterListener(name string) error { +func (te *Emitter) UnRegisterListener(name string) error { if name == "" { return errors.New("event listener name must be specified") } @@ -52,7 +51,7 @@ func (te *TypeEmitter) UnRegisterListener(name string) error { return nil } -func (te *TypeEmitter) Publish(evtCtx *Context) { +func (te *Emitter) Publish(evtCtx *Context) { listenerName := "" diff --git a/engine/event/registry.go b/engine/event/registry.go index 3c92a19b..b9751032 100644 --- a/engine/event/registry.go +++ b/engine/event/registry.go @@ -7,7 +7,7 @@ import ( "github.com/project-flogo/core/support/log" ) -var typeEmitters = make(map[string]*TypeEmitter) +var emitters = make(map[string]*Emitter) var emittersMutex = &sync.RWMutex{} // Registers listener for given event types @@ -27,10 +27,10 @@ func RegisterListener(name string, listener Listener, eventTypes []string) error emittersMutex.Lock() for _, eType := range eventTypes { - emitter, ok := typeEmitters[eType] + emitter, ok := emitters[eType] if !ok { - emitter = &TypeEmitter{eventType: eType, mutex: &sync.RWMutex{}, listeners: make(map[string]Listener)} - typeEmitters[eType] = emitter + emitter = &Emitter{eventType: eType, mutex: &sync.RWMutex{}, listeners: make(map[string]Listener)} + emitters[eType] = emitter } emitter.RegisterListener(name, listener) log.RootLogger().Debugf("Event listener - '%s' successfully registered for event type - '%s'", name, eType) @@ -74,7 +74,7 @@ func UnRegisterListener(name string, eventTypes []string) { func HasListener(eventType string) bool { emittersMutex.RLock() - emitter, ok := typeEmitters[eventType] + emitter, ok := emitters[eventType] emittersMutex.RUnlock() if ok { From c76b852d2552c4ea9b10b5e1ca2719ce5d3ea796 Mon Sep 17 00:00:00 2001 From: Frank Martinez Date: Fri, 22 Feb 2019 01:18:45 -0500 Subject: [PATCH 15/20] minor cleanup --- engine/event/publish.go | 12 ++++++------ engine/event/registry.go | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/engine/event/publish.go b/engine/event/publish.go index b61ebee2..0fce41a5 100644 --- a/engine/event/publish.go +++ b/engine/event/publish.go @@ -12,7 +12,7 @@ const ( ) var publishEventsEnabled = PublishEnabled() -var publisherRoutineStarted = false +var publisherRunning = false var shutdown = make(chan bool) // Buffered channel @@ -21,7 +21,7 @@ var eventQueue = make(chan *Context, 100) //TODO channel to be passed to actions // Puts event with given type and data on the channel func Post(eventType string, event interface{}) { - if publishEventsEnabled && publisherRoutineStarted && HasListener(eventType) { + if publishEventsEnabled && publisherRunning && HasListener(eventType) { evtCtx := &Context{event: event, eventType: eventType} // Put event on the queue eventQueue <- evtCtx @@ -29,16 +29,16 @@ func Post(eventType string, event interface{}) { } func startPublisherRoutine() { - if publisherRoutineStarted { + if publisherRunning { return } go publishEvents() - publisherRoutineStarted = true + publisherRunning = true } func stopPublisherRoutine() { - if !publisherRoutineStarted { + if !publisherRunning { return } @@ -61,7 +61,7 @@ func stopPublisherRoutine() { func publishEvents() { defer func() { - publisherRoutineStarted = false + publisherRunning = false }() for { diff --git a/engine/event/registry.go b/engine/event/registry.go index b9751032..830e54fb 100644 --- a/engine/event/registry.go +++ b/engine/event/registry.go @@ -10,6 +10,8 @@ import ( var emitters = make(map[string]*Emitter) var emittersMutex = &sync.RWMutex{} +//todo do we need to dynamically add/remove listeners at runtime? If not, we can remove all locking + // Registers listener for given event types func RegisterListener(name string, listener Listener, eventTypes []string) error { if name == "" { From e65bf70c5a654552c51b9676767a36947630f5ef Mon Sep 17 00:00:00 2001 From: Frank Martinez Date: Fri, 22 Feb 2019 01:26:59 -0500 Subject: [PATCH 16/20] additional cleanup --- engine/event/emitter.go | 2 ++ engine/event/events.go | 12 ++++++++++++ engine/event/publish.go | 20 ++++++-------------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/engine/event/emitter.go b/engine/event/emitter.go index 8b6cdf79..85d7920b 100644 --- a/engine/event/emitter.go +++ b/engine/event/emitter.go @@ -57,6 +57,8 @@ func (te *Emitter) Publish(evtCtx *Context) { te.mutex.RLock() + //todo consider handling panic one level up, this will improve performance + defer func() { te.mutex.RUnlock() if r := recover(); r != nil { diff --git a/engine/event/events.go b/engine/event/events.go index 9c3d2761..b19547de 100644 --- a/engine/event/events.go +++ b/engine/event/events.go @@ -23,3 +23,15 @@ func (ec *Context) GetEvent() interface{} { func (ec *Context) GetEventType() string { return ec.eventType } + +// Buffered channel +var eventQueue = make(chan *Context, 100) + +// Puts event with given type and data on the channel +func Post(eventType string, event interface{}) { + if publishEventsEnabled && publisherRunning && HasListener(eventType) { + evtCtx := &Context{event: event, eventType: eventType} + // Put event on the queue + eventQueue <- evtCtx + } +} \ No newline at end of file diff --git a/engine/event/publish.go b/engine/event/publish.go index 0fce41a5..107b639c 100644 --- a/engine/event/publish.go +++ b/engine/event/publish.go @@ -15,21 +15,10 @@ var publishEventsEnabled = PublishEnabled() var publisherRunning = false var shutdown = make(chan bool) -// Buffered channel -var eventQueue = make(chan *Context, 100) - -//TODO channel to be passed to actions -// Puts event with given type and data on the channel -func Post(eventType string, event interface{}) { - if publishEventsEnabled && publisherRunning && HasListener(eventType) { - evtCtx := &Context{event: event, eventType: eventType} - // Put event on the queue - eventQueue <- evtCtx - } -} + func startPublisherRoutine() { - if publisherRunning { + if publisherRunning || !publishEventsEnabled { return } @@ -60,6 +49,9 @@ func stopPublisherRoutine() { } func publishEvents() { + + log.RootLogger().Infof("Starting event publisher") + defer func() { publisherRunning = false }() @@ -69,7 +61,7 @@ func publishEvents() { case evtCtx := <-eventQueue: publishEvent(evtCtx) case <-shutdown: - log.RootLogger().Infof("Shutting down event publisher routine") + log.RootLogger().Infof("Shutting down event publisher") return } } From f89d0e82d37809b470602145f963c57e2975d7dc Mon Sep 17 00:00:00 2001 From: Frank Martinez Date: Fri, 22 Feb 2019 01:28:05 -0500 Subject: [PATCH 17/20] run gofmt --- engine/event/emitter.go | 1 - engine/event/events.go | 2 +- engine/event/publish.go | 2 -- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/engine/event/emitter.go b/engine/event/emitter.go index 85d7920b..427f84b5 100644 --- a/engine/event/emitter.go +++ b/engine/event/emitter.go @@ -8,7 +8,6 @@ import ( "github.com/project-flogo/core/support/log" ) - type Emitter struct { mutex *sync.RWMutex eventType string diff --git a/engine/event/events.go b/engine/event/events.go index b19547de..9d03dcec 100644 --- a/engine/event/events.go +++ b/engine/event/events.go @@ -34,4 +34,4 @@ func Post(eventType string, event interface{}) { // Put event on the queue eventQueue <- evtCtx } -} \ No newline at end of file +} diff --git a/engine/event/publish.go b/engine/event/publish.go index 107b639c..e76ad0ea 100644 --- a/engine/event/publish.go +++ b/engine/event/publish.go @@ -15,8 +15,6 @@ var publishEventsEnabled = PublishEnabled() var publisherRunning = false var shutdown = make(chan bool) - - func startPublisherRoutine() { if publisherRunning || !publishEventsEnabled { return From bb3a457a86dc311c23e46926b28231b9d13983ed Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Fri, 22 Feb 2019 12:02:54 -0600 Subject: [PATCH 18/20] Handle object array or literal array and add more test cases --- data/mapper/expr.go | 4 +- data/mapper/object.go | 139 +++++++++++------ data/mapper/object_test.go | 309 ++++++++++++++++++++++++++++++++++++- 3 files changed, 399 insertions(+), 53 deletions(-) diff --git a/data/mapper/expr.go b/data/mapper/expr.go index 42ffd69a..27cf81c1 100644 --- a/data/mapper/expr.go +++ b/data/mapper/expr.go @@ -37,8 +37,8 @@ func (mf *ExprMapperFactory) NewMapper(mappings map[string]interface{}) (Mapper, } else { exprMappings[key] = expression.NewLiteralExpr(value) } - - case map[string]interface{}: + //Object mapping + case map[string]interface{}, []interface{}: objectExpr, err := NewObjectMapperFactory(mf.exprFactory).(*ObjectMapperFactory).NewObjectMapper(t) if err != nil { return nil, err diff --git a/data/mapper/object.go b/data/mapper/object.go index b53346ea..d6bd627b 100644 --- a/data/mapper/object.go +++ b/data/mapper/object.go @@ -6,12 +6,15 @@ import ( "github.com/project-flogo/core/data/coerce" "github.com/project-flogo/core/data/expression" "github.com/project-flogo/core/support/log" + "reflect" "runtime/debug" "strings" ) +var objectMapperLog = log.ChildLogger(log.RootLogger(), "object-mapper") + const ( - //Foreach Handle array must start with @foreach. + //To do an array mapping from upstreaming, use @foreach. /* "input": { @@ -37,8 +40,6 @@ const ( */ FOREACH = "@foreach" - //NEWARRAY create one array element for target array - NEWARRAY = "NEWARRAY" ) type ObjectMapperFactory struct { @@ -49,7 +50,7 @@ func NewObjectMapperFactory(exprFactory expression.Factory) expression.Factory { return &ObjectMapperFactory{exprFactory: exprFactory} } -func (am *ObjectMapperFactory) NewObjectMapper(value map[string]interface{}) (expression.Expr, error) { +func (am *ObjectMapperFactory) NewObjectMapper(value interface{}) (expression.Expr, error) { return &ObjectMapper{mappings: value, exprFactory: am.exprFactory}, nil } @@ -62,18 +63,18 @@ func (am *ObjectMapperFactory) NewExpr(value string) (expression.Expr, error) { } type ObjectMapper struct { - mappings map[string]interface{} + mappings interface{} exprFactory expression.Factory } func (am *ObjectMapper) Eval(inputScope data.Scope) (interface{}, error) { defer func() { if r := recover(); r != nil { - log.RootLogger().Error("%+v", r) - log.RootLogger().Debugf("StackTrace: %s", debug.Stack()) + objectMapperLog.Error("%+v", r) + objectMapperLog.Debugf("StackTrace: %s", debug.Stack()) } }() - + objectMapperLog.Debugf("Handleing object mapper %+v", am.mappings) return handleObjectMapping(am.mappings, am.exprFactory, inputScope) } @@ -83,36 +84,64 @@ type foreach struct { exprFactory expression.Factory } -func handleObjectMapping(objectMappings map[string]interface{}, exprF expression.Factory, inputScope data.Scope) (interface{}, error) { - objectVal := make(map[string]interface{}) - if len(objectMappings) > 0 { - for mk, mv := range objectMappings { - //Root level @foreach, it should be only itself +func handleObjectMapping(objectMappings interface{}, exprF expression.Factory, inputScope data.Scope) (interface{}, error) { + var err error + switch t := objectMappings.(type) { + case map[string]interface{}: + objectVal := make(map[string]interface{}) + for mk, mv := range t { if strings.HasPrefix(mk, FOREACH) { return newForeach(mk, exprF).handle(mv.(map[string]interface{}), inputScope) } - + //Go second level to find possible @foreach node if nxtVal, ok := mv.(map[string]interface{}); ok { //second level object for foreachK, foreachV := range nxtVal { if strings.HasPrefix(foreachK, FOREACH) { - result, err := newForeach(foreachK, exprF).handle(foreachV.(map[string]interface{}), inputScope) + objectVal[mk], err = newForeach(foreachK, exprF).handle(foreachV.(map[string]interface{}), inputScope) if err != nil { return nil, err } - objectVal[mk] = result } else { - secondMap, ok := objectVal[mk] - if !ok { - secondMap = make(map[string]interface{}) - objectVal[mk] = secondMap - } - err := handleObject(secondMap, foreachK, foreachV, exprF, inputScope) - if err != nil { - return nil, err + switch t := foreachV.(type) { + case []interface{}: + arrayResult := make([]interface{}, len(t)) + for i, element := range t { + arrayResult[i], err = handleObjectMapping(element.(map[string]interface{}), exprF, inputScope) + if err != nil { + return nil, err + } + } + objectVal[foreachK] = arrayResult + case map[string]interface{}: + if objectVal[mk] == nil { + objectVal[mk] = make(map[string]interface{}) + } + v, err := handleObjectMapping(t, exprF, inputScope) + if err != nil { + return nil, err + } + objectVal[mk].(map[string]interface{})[foreachK] = v + default: + if objectVal[mk] == nil { + objectVal[mk] = make(map[string]interface{}) + } + err := handleObject(objectVal[mk].(map[string]interface{}), foreachK, foreachV, exprF, inputScope) + if err != nil { + return nil, err + } } } } + } else if arrayV, ok := mv.([]interface{}); ok { + arrayResult := make([]interface{}, len(arrayV)) + for i, element := range arrayV { + arrayResult[i], err = handleObjectMapping(element.(map[string]interface{}), exprF, inputScope) + if err != nil { + return nil, err + } + } + objectVal[mk] = arrayResult } else { err := handleObject(objectVal, mk, mv, exprF, inputScope) if err != nil { @@ -120,25 +149,41 @@ func handleObjectMapping(objectMappings map[string]interface{}, exprF expression } } } + return objectVal, nil + case []interface{}: + //array with possible child object + objArray := make([]interface{}, len(t)) + for i, element := range t { + //Only handle object mapping + switch element.(type) { + case map[string]interface{}: + objArray[i], err = handleObjectMapping(element, exprF, inputScope) + if err != nil { + return nil, err + } + default: + objArray[i], err = getExpressionValue(element, exprF, inputScope) + if err != nil { + return nil, err + } + } + } + return objArray, nil + default: + return nil, fmt.Errorf("unsupport type [%s] for object mapper", reflect.TypeOf(objectMappings)) } - return objectVal, nil } func (f *foreach) handle(arrayMappingFields map[string]interface{}, inputScope data.Scope) (interface{}, error) { - var newSourceArray []interface{} - if f.sourceFrom == NEWARRAY { - newSourceArray = make([]interface{}, 1) - } else { - fromValue, err := getExpressionValue("="+f.sourceFrom, f.exprFactory, inputScope) - if err != nil { - return nil, fmt.Errorf("get value from source array error, %s", err.Error()) - } - newSourceArray, err = coerce.ToArray(fromValue) - if err != nil { - return nil, fmt.Errorf("source array not an array, error %s", err.Error()) - } + fromValue, err := getExpressionValue("="+f.sourceFrom, f.exprFactory, inputScope) + if err != nil { + return nil, fmt.Errorf("foreach eval source array error, %s", err.Error()) + } + newSourceArray, err := coerce.ToArray(fromValue) + if err != nil { + objectMapperLog.Errorf("foreach source [%+v] not an array, cast to array error %s", fromValue, err.Error()) + return nil, fmt.Errorf("foreach source [%+v] not an array", fromValue) } - targetValues := make([]interface{}, len(newSourceArray)) for i, sourceValue := range newSourceArray { inputScope = newLoopScope(sourceValue, f.index, inputScope) @@ -152,17 +197,15 @@ func (f *foreach) handle(arrayMappingFields map[string]interface{}, inputScope d } -func handleObject(targetValue interface{}, targetName string, source interface{}, exprF expression.Factory, scope data.Scope) error { - if objValue, ok := targetValue.(map[string]interface{}); ok { - if isExpr(source) { - fromValue, err := getExpressionValue(source, exprF, scope) - if err != nil { - return fmt.Errorf("get expression failed %s", err.Error()) - } - objValue[targetName] = fromValue - } else { - objValue[targetName] = source +func handleObject(targetValue map[string]interface{}, targetName string, source interface{}, exprF expression.Factory, scope data.Scope) error { + if isExpr(source) { + fromValue, err := getExpressionValue(source, exprF, scope) + if err != nil { + return fmt.Errorf("eval expression failed %s", err.Error()) } + targetValue[targetName] = fromValue + } else { + targetValue[targetName] = source } return nil } diff --git a/data/mapper/object_test.go b/data/mapper/object_test.go index c34661f3..f3ee26d5 100644 --- a/data/mapper/object_test.go +++ b/data/mapper/object_test.go @@ -16,7 +16,7 @@ func TestObjectMappingWithFunction(t *testing.T) { "tostate" : "=tstring.concat(\"State is \", \"tx\")", "tostreet": "3421 st", "addresses2": { - "tofield2": "=tstring.concat(\"field is \", \"ffff\")" + "tofield2": "=tstring.concat(\"field is \", \"ffff\")" } } }` @@ -37,7 +37,235 @@ func TestObjectMappingWithFunction(t *testing.T) { assert.Equal(t, "State is tx", arr.(map[string]interface{})["addresses"].(map[string]interface{})["tostate"]) } -//1. array mapping with other activity output +func TestObjectMappingWithArray(t *testing.T) { + mappingValue := `{ + "person2": "person", + "addresses": { + "array": [ + { + "ddd": "=tstring.concat(\"ddd is \", \"tx\")", + "ccc": "=tstring.concat(\"ccc is \", \"tx\")" + } + ] + } +}` + + arrayMapping := make(map[string]interface{}) + err := json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"addresses": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + results, err := mapper.Apply(nil) + assert.Nil(t, err) + arr := results["addresses"] + + assert.Equal(t, "person", arr.(map[string]interface{})["person2"]) + assert.Equal(t, "ddd is tx", arr.(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["ddd"]) + assert.Equal(t, "ccc is tx", arr.(map[string]interface{})["array"].([]interface{})[0].(map[string]interface{})["ccc"]) + +} + +func TestRootObjectArray(t *testing.T) { + mappingValue := `[ + { + "id":"11111", + "name":"nnnnn", + "addresses": { + "@foreach($.field.addresses, index)":{ + "id":"dddddd", + "name":"=$.state" + } + } + } +]` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx" + } + ] +}` + var arrayValue interface{} + err := json.Unmarshal([]byte(arrayData), &arrayValue) + assert.Nil(t, err) + + attrs := map[string]interface{}{"field": arrayValue} + scope := data.NewSimpleScope(attrs, nil) + + var arrayMapping interface{} + err = json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"target": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["target"] + + assert.Equal(t, "11111", arr.([]interface{})[0].(map[string]interface{})["id"]) + assert.Equal(t, "nnnnn", arr.([]interface{})[0].(map[string]interface{})["name"]) + assert.Equal(t, "dddddd", arr.([]interface{})[0].(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["id"]) + assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["name"]) + +} +func TestRootLiteralArray(t *testing.T) { + mappingValue := `["1243","456"]` + + var arrayMapping interface{} + err := json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"target": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + results, err := mapper.Apply(nil) + assert.Nil(t, err) + arr := results["target"] + + assert.Equal(t, "1243", arr.([]interface{})[0]) + assert.Equal(t, "456", arr.([]interface{})[1]) + +} + +func TestRootLiteralArrayMapping(t *testing.T) { + mappingValue := `["=$.field.name", "=$.field.id"]` + arrayData := `{ + "name": "name", + "id":"1001", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx" + } + ] +}` + var arrayValue interface{} + err := json.Unmarshal([]byte(arrayData), &arrayValue) + assert.Nil(t, err) + + attrs := map[string]interface{}{"field": arrayValue} + scope := data.NewSimpleScope(attrs, nil) + + var arrayMapping interface{} + err = json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"target": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["target"] + + assert.Equal(t, "name", arr.([]interface{})[0]) + assert.Equal(t, "1001", arr.([]interface{})[1]) +} + +func TestRootLiteralNumberArrayMapping(t *testing.T) { + mappingValue := `["=$.field.id2", "=$.field.id"]` + arrayData := `{ + "id2": 1002, + "id":1001, + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx" + } + ] +}` + var arrayValue interface{} + err := json.Unmarshal([]byte(arrayData), &arrayValue) + assert.Nil(t, err) + + attrs := map[string]interface{}{"field": arrayValue} + scope := data.NewSimpleScope(attrs, nil) + + var arrayMapping interface{} + err = json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"target": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["target"] + + assert.Equal(t, float64(1002), arr.([]interface{})[0]) + assert.Equal(t, float64(1001), arr.([]interface{})[1]) +} + +func TestRootArrayMapping(t *testing.T) { + mappingValue := `{ + "@foreach($.field.addresses, index)":{ + "id":"dddddd", + "name":"=$.state" + } + }` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx" + } + ] +}` + var arrayValue interface{} + err := json.Unmarshal([]byte(arrayData), &arrayValue) + assert.Nil(t, err) + + attrs := map[string]interface{}{"field": arrayValue} + scope := data.NewSimpleScope(attrs, nil) + + var arrayMapping interface{} + err = json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"target": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + results, err := mapper.Apply(scope) + assert.Nil(t, err) + arr := results["target"] + + assert.Equal(t, "dddddd", arr.([]interface{})[0].(map[string]interface{})["id"]) + assert.Equal(t, "tx", arr.([]interface{})[0].(map[string]interface{})["name"]) + +} + +func TestStringStringMap(t *testing.T) { + mappingValue := ` + {"id":"11111", + "name":"nnnnn"}` + + arrayMapping := make(map[string]interface{}) + err := json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"target": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + results, err := mapper.Apply(nil) + assert.Nil(t, err) + arr := results["target"] + + assert.Equal(t, "11111", arr.(map[string]interface{})["id"]) + assert.Equal(t, "nnnnn", arr.(map[string]interface{})["name"]) + +} + func TestArrayMappingWithNest(t *testing.T) { mappingValue := `{ "person2" : "person", @@ -116,7 +344,6 @@ func TestArrayMappingWithNest(t *testing.T) { assert.Equal(t, "tx", arr.(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["tostate"]) } -//2. array mapping with function func TestArrayMappingWithFunction(t *testing.T) { mappingValue := `{ "person2" : "person", @@ -178,6 +405,82 @@ func TestArrayMappingWithFunction(t *testing.T) { assert.Equal(t, "State is tx", arr.(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["tostate"]) } +func TestArrayMappingWithFunction3Level(t *testing.T) { + mappingValue := `{ + "person2":"person", + "addresses":{ + "@foreach($.field.addresses, index)":{ + "tostate":"=tstring.concat(\"State is \", $loop[index].state)", + "tostreet":"=$.street", + "tozipcode":"=$.zipcode", + "addresses2":{ + "@foreach($.array, index2)":{ + "tofield1":"=$loop[index].street", + "tofield2":"=tstring.concat(\"field is \", $.field2)", + "tofield3":"=$.field3", + "addresses4":{ + "@foreach($.level3)":{ + "level3":"=$loop[index2].field1", + "level3-1":"=tstring.concat(\"field is \", $.field3)" + } + } + } + } + } + } +}` + + arrayData := `{ + "person": "name", + "addresses": [ + { + "street": "street", + "zipcode": 77479, + "state": "tx", + "array":[ + { + "field1":"field1value", + "field2":"field2value", + "field3":"field3value", + "level3": [ + {"field3":"ddddd"} + ] + }, + { + "field1":"field1value2", + "field2":"field2value2", + "field3":"field3value2", + "level3": [ + {"field3":"ddddd2"} + ] + } + ] + } + ] +}` + var arrayValue interface{} + err := json.Unmarshal([]byte(arrayData), &arrayValue) + assert.Nil(t, err) + + arrayMapping := make(map[string]interface{}) + err = json.Unmarshal([]byte(mappingValue), &arrayMapping) + assert.Nil(t, err) + mappings := map[string]interface{}{"addresses": arrayMapping} + factory := NewFactory(resolve.GetBasicResolver()) + mapper, err := factory.NewMapper(mappings) + + attrs := map[string]interface{}{"field": arrayValue} + scope := data.NewSimpleScope(attrs, nil) + results, err := mapper.Apply(scope) + assert.Nil(t, err) + + arr := results["addresses"] + + assert.Equal(t, "person", arr.(map[string]interface{})["person2"]) + assert.Equal(t, float64(77479), arr.(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["tozipcode"]) + assert.Equal(t, "State is tx", arr.(map[string]interface{})["addresses"].([]interface{})[0].(map[string]interface{})["tostate"]) +} + func TestGetSource(t *testing.T) { var s = "@foreach($activity[blah].out2)" foreach := newForeach(s, nil) From 1eb8596c0d51366b3a40343417a21a8f9125ce6a Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Fri, 22 Feb 2019 13:18:38 -0600 Subject: [PATCH 19/20] Rename to object mapper --- data/mapper/expr.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/mapper/expr.go b/data/mapper/expr.go index 27cf81c1..65beff66 100644 --- a/data/mapper/expr.go +++ b/data/mapper/expr.go @@ -7,14 +7,14 @@ import ( ) type ExprMapperFactory struct { - exprFactory expression.Factory - arrayFactory expression.Factory + exprFactory expression.Factory + objectFactory expression.Factory } func NewFactory(resolver resolve.CompositeResolver) Factory { exprFactory := expression.NewFactory(resolver) - arrayFactory := NewObjectMapperFactory(exprFactory) - return &ExprMapperFactory{exprFactory: exprFactory, arrayFactory: arrayFactory} + objMapperFactory := NewObjectMapperFactory(exprFactory) + return &ExprMapperFactory{exprFactory: exprFactory, objectFactory: objMapperFactory} } func (mf *ExprMapperFactory) NewMapper(mappings map[string]interface{}) (Mapper, error) { From 0b5e4d68c8c3de561efe5a9c2c64dfc89f31c7bc Mon Sep 17 00:00:00 2001 From: Tracy Li Date: Fri, 22 Feb 2019 17:08:49 -0600 Subject: [PATCH 20/20] Use isLiteral to know if current mapping is literal or mapping --- data/mapper/expr.go | 52 ++++++++++++++++++++++++++++++++------ data/mapper/object.go | 7 ----- data/mapper/object_test.go | 16 +++++++++++- 3 files changed, 59 insertions(+), 16 deletions(-) diff --git a/data/mapper/expr.go b/data/mapper/expr.go index 65beff66..bc787b96 100644 --- a/data/mapper/expr.go +++ b/data/mapper/expr.go @@ -4,6 +4,7 @@ import ( "github.com/project-flogo/core/data" "github.com/project-flogo/core/data/expression" "github.com/project-flogo/core/data/resolve" + "strings" ) type ExprMapperFactory struct { @@ -37,15 +38,18 @@ func (mf *ExprMapperFactory) NewMapper(mappings map[string]interface{}) (Mapper, } else { exprMappings[key] = expression.NewLiteralExpr(value) } - //Object mapping - case map[string]interface{}, []interface{}: - objectExpr, err := NewObjectMapperFactory(mf.exprFactory).(*ObjectMapperFactory).NewObjectMapper(t) - if err != nil { - return nil, err - } - exprMappings[key] = objectExpr default: - exprMappings[key] = expression.NewLiteralExpr(value) + if !IsLiteral(t) { + //Object mapping + objectExpr, err := NewObjectMapperFactory(mf.exprFactory).(*ObjectMapperFactory).NewObjectMapper(t) + if err != nil { + return nil, err + } + exprMappings[key] = objectExpr + } else { + exprMappings[key] = expression.NewLiteralExpr(value) + + } } } } @@ -73,3 +77,35 @@ func (m *ExprMapper) Apply(inputScope data.Scope) (map[string]interface{}, error return output, nil } + +func IsLiteral(value interface{}) bool { + if value != nil { + switch t := value.(type) { + case map[string]interface{}: + for k, v := range t { + if strings.HasPrefix(k, FOREACH) { + return false + } + if !IsLiteral(v) { + return false + } + } + case []interface{}: + for _, element := range t { + if !IsLiteral(element) { + return false + } + } + default: + return !isExpr(t) + } + } + return true +} + +func isExpr(value interface{}) bool { + if strVal, ok := value.(string); ok && len(strVal) > 0 && (strVal[0] == '=') { + return true + } + return false +} diff --git a/data/mapper/object.go b/data/mapper/object.go index d6bd627b..c1503ae7 100644 --- a/data/mapper/object.go +++ b/data/mapper/object.go @@ -240,13 +240,6 @@ func newForeach(foreachpath string, exprF expression.Factory) *foreach { return foreach } -func isExpr(value interface{}) bool { - if strVal, ok := value.(string); ok && len(strVal) > 0 && (strVal[0] == '=') { - return true - } - return false -} - func newLoopScope(arrayItem interface{}, indexName string, scope data.Scope) data.Scope { if len(indexName) <= 0 { return data.NewSimpleScope(arrayItem.(map[string]interface{}), scope) diff --git a/data/mapper/object_test.go b/data/mapper/object_test.go index f3ee26d5..0860bca2 100644 --- a/data/mapper/object_test.go +++ b/data/mapper/object_test.go @@ -24,6 +24,7 @@ func TestObjectMappingWithFunction(t *testing.T) { arrayMapping := make(map[string]interface{}) err := json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) mappings := map[string]interface{}{"addresses": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -53,6 +54,7 @@ func TestObjectMappingWithArray(t *testing.T) { arrayMapping := make(map[string]interface{}) err := json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) mappings := map[string]interface{}{"addresses": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -94,13 +96,13 @@ func TestRootObjectArray(t *testing.T) { var arrayValue interface{} err := json.Unmarshal([]byte(arrayData), &arrayValue) assert.Nil(t, err) - attrs := map[string]interface{}{"field": arrayValue} scope := data.NewSimpleScope(attrs, nil) var arrayMapping interface{} err = json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) mappings := map[string]interface{}{"target": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -121,6 +123,7 @@ func TestRootLiteralArray(t *testing.T) { var arrayMapping interface{} err := json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.True(t, IsLiteral(arrayMapping)) mappings := map[string]interface{}{"target": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -157,6 +160,7 @@ func TestRootLiteralArrayMapping(t *testing.T) { var arrayMapping interface{} err = json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) mappings := map[string]interface{}{"target": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -192,6 +196,8 @@ func TestRootLiteralNumberArrayMapping(t *testing.T) { var arrayMapping interface{} err = json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) + mappings := map[string]interface{}{"target": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -232,6 +238,8 @@ func TestRootArrayMapping(t *testing.T) { var arrayMapping interface{} err = json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) + mappings := map[string]interface{}{"target": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -253,6 +261,8 @@ func TestStringStringMap(t *testing.T) { arrayMapping := make(map[string]interface{}) err := json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.True(t, IsLiteral(arrayMapping)) + mappings := map[string]interface{}{"target": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -329,6 +339,7 @@ func TestArrayMappingWithNest(t *testing.T) { arrayMapping := make(map[string]interface{}) err := json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) mappings := map[string]interface{}{"addresses": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -390,6 +401,7 @@ func TestArrayMappingWithFunction(t *testing.T) { arrayMapping := make(map[string]interface{}) err := json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) mappings := map[string]interface{}{"addresses": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings) @@ -465,6 +477,8 @@ func TestArrayMappingWithFunction3Level(t *testing.T) { arrayMapping := make(map[string]interface{}) err = json.Unmarshal([]byte(mappingValue), &arrayMapping) assert.Nil(t, err) + assert.False(t, IsLiteral(arrayMapping)) + mappings := map[string]interface{}{"addresses": arrayMapping} factory := NewFactory(resolve.GetBasicResolver()) mapper, err := factory.NewMapper(mappings)