From 0ea324129ff545c0d9d281a1707c7619e3313733 Mon Sep 17 00:00:00 2001 From: Seebs Date: Wed, 7 Oct 2020 15:50:31 -0500 Subject: [PATCH 1/7] update to new version of peg tool Want to do some PQL cleanup. A new version of peg turns out to dramatically alter performance in some cases, so I'm doing the commit for "don't change any PQL, just change the version of peg" checkin separately. --- pql/pql.peg.go | 82 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 25 deletions(-) diff --git a/pql/pql.peg.go b/pql/pql.peg.go index 3c2a70940..f0ddff7ec 100644 --- a/pql/pql.peg.go +++ b/pql/pql.peg.go @@ -4,9 +4,11 @@ package pql import ( "fmt" - "math" + "io" + "os" "sort" "strconv" + "strings" ) const endSymbol rune = 1114112 @@ -244,19 +246,19 @@ type node32 struct { up, next *node32 } -func (node *node32) print(pretty bool, buffer string) { +func (node *node32) print(w io.Writer, pretty bool, buffer string) { var print func(node *node32, depth int) print = func(node *node32, depth int) { for node != nil { for c := 0; c < depth; c++ { - fmt.Printf(" ") + fmt.Fprintf(w, " ") } rule := rul3s[node.pegRule] quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end]))) if !pretty { - fmt.Printf("%v %v\n", rule, quote) + fmt.Fprintf(w, "%v %v\n", rule, quote) } else { - fmt.Printf("\x1B[34m%v\x1B[m %v\n", rule, quote) + fmt.Fprintf(w, "\x1B[34m%v\x1B[m %v\n", rule, quote) } if node.up != nil { print(node.up, depth+1) @@ -267,12 +269,12 @@ func (node *node32) print(pretty bool, buffer string) { print(node, 0) } -func (node *node32) Print(buffer string) { - node.print(false, buffer) +func (node *node32) Print(w io.Writer, buffer string) { + node.print(w, false, buffer) } -func (node *node32) PrettyPrint(buffer string) { - node.print(true, buffer) +func (node *node32) PrettyPrint(w io.Writer, buffer string) { + node.print(w, true, buffer) } type tokens32 struct { @@ -315,24 +317,24 @@ func (t *tokens32) AST() *node32 { } func (t *tokens32) PrintSyntaxTree(buffer string) { - t.AST().Print(buffer) + t.AST().Print(os.Stdout, buffer) +} + +func (t *tokens32) WriteSyntaxTree(w io.Writer, buffer string) { + t.AST().Print(w, buffer) } func (t *tokens32) PrettyPrintSyntaxTree(buffer string) { - t.AST().PrettyPrint(buffer) + t.AST().PrettyPrint(os.Stdout, buffer) } func (t *tokens32) Add(rule pegRule, begin, end, index uint32) { - if tree := t.tree; int(index) >= len(tree) { - expanded := make([]token32, 2*len(tree)) - copy(expanded, tree) - t.tree = expanded - } - t.tree[index] = token32{ - pegRule: rule, - begin: begin, - end: end, + tree, i := t.tree, int(index) + if i >= len(tree) { + t.tree = append(tree, token32{pegRule: rule, begin: begin, end: end}) + return } + tree[i] = token32{pegRule: rule, begin: begin, end: end} } func (t *tokens32) Tokens() []token32 { @@ -396,7 +398,7 @@ type parseError struct { } func (e *parseError) Error() string { - tokens, error := []token32{e.max}, "\n" + tokens, err := []token32{e.max}, "\n" positions, p := make([]int, 2*len(tokens)), 0 for _, token := range tokens { positions[p], p = int(token.begin), p+1 @@ -409,14 +411,14 @@ func (e *parseError) Error() string { } for _, token := range tokens { begin, end := int(token.begin), int(token.end) - error += fmt.Sprintf(format, + err += fmt.Sprintf(format, rul3s[token.pegRule], translations[begin].line, translations[begin].symbol, translations[end].line, translations[end].symbol, strconv.Quote(string(e.p.buffer[begin:end]))) } - return error + return err } func (p *PQL) PrintSyntaxTree() { @@ -427,6 +429,16 @@ func (p *PQL) PrintSyntaxTree() { } } +func (p *PQL) WriteSyntaxTree(w io.Writer) { + p.tokens32.WriteSyntaxTree(w, p.Buffer) +} + +func (p *PQL) SprintSyntaxTree() string { + var bldr strings.Builder + p.WriteSyntaxTree(&bldr) + return bldr.String() +} + func (p *PQL) Execute() { buffer, _buffer, text, begin, end := p.Buffer, p.buffer, "", 0, 0 for _, token := range p.Tokens() { @@ -566,12 +578,31 @@ func (p *PQL) Execute() { _, _, _, _, _ = buffer, _buffer, text, begin, end } -func (p *PQL) Init() { +func Pretty(pretty bool) func(*PQL) error { + return func(p *PQL) error { + p.Pretty = pretty + return nil + } +} + +func Size(size int) func(*PQL) error { + return func(p *PQL) error { + p.tokens32 = tokens32{tree: make([]token32, 0, size)} + return nil + } +} +func (p *PQL) Init(options ...func(*PQL) error) error { var ( max token32 position, tokenIndex uint32 buffer []rune ) + for _, option := range options { + err := option(p) + if err != nil { + return err + } + } p.reset = func() { max = token32{} position, tokenIndex = 0, 0 @@ -585,7 +616,7 @@ func (p *PQL) Init() { p.reset() _rules := p.rules - tree := tokens32{tree: make([]token32, math.MaxInt16)} + tree := p.tokens32 p.parse = func(rule ...int) error { r := 1 if len(rule) > 0 { @@ -3645,4 +3676,5 @@ func (p *PQL) Init() { nil, } p.rules = _rules + return nil } From b8bb438b6943f6d391fb95f952d6735c58950ead Mon Sep 17 00:00:00 2001 From: Seebs Date: Wed, 7 Oct 2020 15:53:08 -0500 Subject: [PATCH 2/7] trivial cleanup of PEG grammar Drop irrelevant (), simplify the expression of the sp rule. Perhaps shockingly, this *does not change the generated grammar at all*. The generated code for: sp <- [ \t\n]* and is identical to the code for: sp <- ( ' ' / '\t' / '\n' )* And in fact, is spelled the latter way in the generated comments. --- pql/pql.peg | 45 ++++++++++++++++----------------------------- 1 file changed, 16 insertions(+), 29 deletions(-) diff --git a/pql/pql.peg b/pql/pql.peg index b58e36723..cf1a2aafe 100644 --- a/pql/pql.peg +++ b/pql/pql.peg @@ -18,82 +18,69 @@ Call <- 'Set' {p.startCall("Set")} open col comma dargs (comma timestamp)? clos / < IDENT > { p.startCall(text ) } open allargs comma? close { p.endCall() } allargs <- Call (comma Call)* (comma dargs)? / dargs / sp fargs <- farg (comma fargs)? sp -farg <- ( field sp '=' sp fvalue +farg <- field sp '=' sp fvalue / field sp COND sp fvalue / conditional - ) dargs <- darg (comma dargs)? sp -darg <- ( field sp '=' sp dvalue +darg <- field sp '=' sp dvalue / field sp COND sp dvalue / conditional - ) -COND <- ( '><' { p.addBTWN() } +COND <- '><' { p.addBTWN() } / '<=' { p.addLTE() } / '>=' { p.addGTE() } / '==' { p.addEQ() } / '!=' { p.addNEQ() } / '<' { p.addLT() } / '>' { p.addGT() } - ) conditional <- {p.startConditional()} condint condLT condfield condLT condint {p.endConditional()} condint <- < '-'? [0-9]* '.' [0-9]+ / '0' / '-'? [1-9] [0-9]* > sp {p.condAdd(text)} condLT <- <('<=' / '<')> sp {p.condAdd(text)} condfield <- sp {p.condAdd(text)} -dvalue <- ( ditem - / lbrack { p.startList() } dlist rbrack { p.endList() } - ) -fvalue <- ( fitem +dvalue <- ditem + / lbrack { p.startList() } dlist rbrack { p.endList() } +fvalue <- fitem / lbrack { p.startList() } flist rbrack { p.endList() } - ) dlist <- ditem (comma dlist)? flist <- fitem (comma flist)? -ditem <- ( itema +ditem <- itema / decimal / itemb - ) -fitem <- ( itema +fitem <- itema / float / itemb - ) -itema <- ( 'null' &(comma / sp close) { p.addVal(nil) } +itema <- 'null' &(comma / sp close) { p.addVal(nil) } / 'true' &(comma / sp close) { p.addVal(true) } / 'false' &(comma / sp close) { p.addVal(false) } / timestampfmt { p.addVal(text) } - ) -itemb <- ( < IDENT > { p.startCall(text) } open allargs comma? close { p.addVal(p.endCall()) } +itemb <- < IDENT > { p.startCall(text) } open allargs comma? close { p.addVal(p.endCall()) } / < ([[A-Z]] / [0-9] / '-' / '_' / ':')+ > { p.addVal(text) } / < '"' doublequotedstring '"' > { p.addVal(text) } / < '\'' singlequotedstring '\'' > { p.addVal(text) } - ) -float <- ( < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text, true) } +float <- < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text, true) } / < '-'? '.'[0-9]+ > { p.addNumVal(text, true) } - ) -decimal <- ( < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text, false) } +decimal <- < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text, false) } / < '-'? '.'[0-9]+ > { p.addNumVal(text, false) } - ) doublequotedstring <- ( '\\"' / '\\\\' / '\\n' / '\\t' / [^"\\] )* singlequotedstring <- ( '\\\'' / '\\\\' / '\\n' / '\\t' / [^'\\] )* fieldExpr <- ( [[A-Z]] / '_' ) ( [[A-Z]] / [0-9] / '_' / '-' )* field <- { p.addField(text) } -reserved <- ('_row' / '_col' / '_start' / '_end' / '_timestamp' / '_field') +reserved <- '_row' / '_col' / '_start' / '_end' / '_timestamp' / '_field' posfield <- { p.addPosStr("_field", text) } uint <- [1-9] [0-9]* / '0' -col <- ( {p.addPosNum("_col", text)} +col <- {p.addPosNum("_col", text)} / < '\'' singlequotedstring '\'' > {p.addPosStr("_col", text)} / < '"' doublequotedstring '"' > {p.addPosStr("_col", text)} - ) -row <- ( {p.addPosNum("_row", text)} +row <- {p.addPosNum("_row", text)} / < '\'' singlequotedstring '\'' > {p.addPosStr("_row", text)} / < '"' doublequotedstring '"' > {p.addPosStr("_row", text)} - ) open <- '(' sp close <- ')' sp -sp <- ( ' ' / '\t' / '\n' )* +sp <- [ \t\n]* comma <- sp ',' sp lbrack <- '[' sp rbrack <- sp ']' sp From 18ed02d7fb00e985d0ce17e67708aec17479bd12 Mon Sep 17 00:00:00 2001 From: Seebs Date: Wed, 7 Oct 2020 16:11:47 -0500 Subject: [PATCH 3/7] drop float/decimal distinction in PQL PQL always produces decimals, which have effectively-arbitrary range, but can convert them to floats when required; the executor then requests this conversion in the handful of cases (SetRowAttrs and SetColumnAttrs) where it wants floats rather than decimals. Not yet fixed: The "Range" call may also be wrong now. It was specifying an "fvalue" but is now effectively getting what used to be called a "dvalue". However, so far as I can tell, that didn't work before either. --- executor.go | 6 +- pql/ast.go | 32 +- pql/pql.peg | 51 +- pql/pql.peg.go | 3128 +++++++++++++++++++++--------------------------- 4 files changed, 1405 insertions(+), 1812 deletions(-) diff --git a/executor.go b/executor.go index 08d0feb47..973b163fc 100644 --- a/executor.go +++ b/executor.go @@ -4286,7 +4286,7 @@ func (e *executor) executeSetRowAttrs(ctx context.Context, qcx *Qcx, index strin } // Copy args and remove reserved fields. - attrs := pql.CopyArgs(c.Args) + attrs := pql.CopyArgsDecimalToFloat(c.Args) delete(attrs, "_field") delete(attrs, "_"+rowLabel) @@ -4353,7 +4353,7 @@ func (e *executor) executeBulkSetRowAttrs(ctx context.Context, qcx *Qcx, index s } // Copy args and remove reserved fields. - attrs := pql.CopyArgs(c.Args) + attrs := pql.CopyArgsDecimalToFloat(c.Args) delete(attrs, "_field") delete(attrs, "_"+rowLabel) @@ -4437,7 +4437,7 @@ func (e *executor) executeSetColumnAttrs(ctx context.Context, qcx *Qcx, index st } // Copy args and remove reserved fields. - attrs := pql.CopyArgs(c.Args) + attrs := pql.CopyArgsDecimalToFloat(c.Args) delete(attrs, "_"+columnLabel) delete(attrs, "field") diff --git a/pql/ast.go b/pql/ast.go index b2e03fece..49a5e5e68 100644 --- a/pql/ast.go +++ b/pql/ast.go @@ -60,7 +60,7 @@ func (q *Query) lastCallStackElem() *callStackElem { func (q *Query) addPosNum(key, value string) { q.addField(key) - q.addNumVal(value, false) + q.addNumVal(value) } func (q *Query) addPosStr(key, value string) { @@ -85,9 +85,9 @@ func (q *Query) endConditional() { if len(q.conditional) != 5 { panic(fmt.Sprintf("conditional of wrong length: %#v", q.conditional)) } - low := parseNum(q.conditional[0], false) + low := parseNum(q.conditional[0]) field := q.conditional[2] - high := parseNum(q.conditional[4], false) + high := parseNum(q.conditional[4]) var op Token switch q.conditional[1] + q.conditional[3] { @@ -162,12 +162,12 @@ func (q *Query) addVal(val interface{}) { elem.lastCond = ILLEGAL } -func (q *Query) addNumVal(val string, asFloat bool) { +func (q *Query) addNumVal(val string) { elem := q.lastCallStackElem() if elem == nil || elem.lastField == "" { panic(fmt.Sprintf("addIntVal called with '%s' when lastField is empty", val)) } - ival := parseNum(val, asFloat) + ival := parseNum(val) if elem.inList { if elem.lastCond != ILLEGAL { list := elem.call.Args[elem.lastField].(*Condition).Value.([]interface{}) @@ -991,6 +991,20 @@ func CopyArgs(m map[string]interface{}) map[string]interface{} { return other } +// CopyArgsDecimalToFloat makes a copy of m, but in the process, +// replaces any Decimal values with Float64 values. +func CopyArgsDecimalToFloat(m map[string]interface{}) map[string]interface{} { + other := make(map[string]interface{}, len(m)) + for k, v := range m { + if dec, ok := v.(Decimal); ok { + other[k] = dec.Float64() + } else { + other[k] = v + } + } + return other +} + func joinInterfaceSlice(a []interface{}) string { other := make([]string, len(a)) for i := range a { @@ -1012,15 +1026,11 @@ func joinUint64Slice(a []uint64) string { return "[" + strings.Join(other, ",") + "]" } -func parseNum(val string, asFloat bool) interface{} { +func parseNum(val string) interface{} { var ival interface{} var err error if strings.Contains(val, ".") { - if asFloat { - ival, err = strconv.ParseFloat(val, 64) - } else { - ival, err = ParseDecimal(val) - } + ival, err = ParseDecimal(val) } else { ival, err = strconv.ParseInt(val, 10, 64) } diff --git a/pql/pql.peg b/pql/pql.peg index cf1a2aafe..501367ff3 100644 --- a/pql/pql.peg +++ b/pql/pql.peg @@ -6,24 +6,20 @@ type PQL Peg { Calls <- sp (Call sp)* !. -Call <- 'Set' {p.startCall("Set")} open col comma dargs (comma timestamp)? close {p.endCall()} - / 'SetRowAttrs' {p.startCall("SetRowAttrs")} open posfield comma row comma fargs close {p.endCall()} - / 'SetColumnAttrs' {p.startCall("SetColumnAttrs")} open col comma fargs close {p.endCall()} - / 'Clear' {p.startCall("Clear")} open col comma dargs close {p.endCall()} - / 'ClearRow' {p.startCall("ClearRow")} open darg close {p.endCall()} - / 'Store' {p.startCall("Store")} open Call comma darg close {p.endCall()} +Call <- 'Set' {p.startCall("Set")} open col comma args (comma timestamp)? close {p.endCall()} + / 'SetRowAttrs' {p.startCall("SetRowAttrs")} open posfield comma row comma args close {p.endCall()} + / 'SetColumnAttrs' {p.startCall("SetColumnAttrs")} open col comma args close {p.endCall()} + / 'Clear' {p.startCall("Clear")} open col comma args close {p.endCall()} + / 'ClearRow' {p.startCall("ClearRow")} open arg close {p.endCall()} + / 'Store' {p.startCall("Store")} open Call comma arg close {p.endCall()} / 'TopN' {p.startCall("TopN")} open posfield (comma allargs)? close {p.endCall()} / 'Rows' {p.startCall("Rows")} open posfield (comma allargs)? close {p.endCall()} - / 'Range' {p.startCall("Range")} open field sp '=' sp fvalue comma 'from='? {p.addField("from")} timestampfmt {p.addVal(text)} comma 'to='? sp {p.addField("to")} timestampfmt {p.addVal(text)} close {p.endCall()} + / 'Range' {p.startCall("Range")} open field sp '=' sp value comma 'from='? {p.addField("from")} timestampfmt {p.addVal(text)} comma 'to='? sp {p.addField("to")} timestampfmt {p.addVal(text)} close {p.endCall()} / < IDENT > { p.startCall(text ) } open allargs comma? close { p.endCall() } -allargs <- Call (comma Call)* (comma dargs)? / dargs / sp -fargs <- farg (comma fargs)? sp -farg <- field sp '=' sp fvalue - / field sp COND sp fvalue - / conditional -dargs <- darg (comma dargs)? sp -darg <- field sp '=' sp dvalue - / field sp COND sp dvalue +allargs <- Call (comma Call)* (comma args)? / args / sp +args <- arg (comma args)? sp +arg <- field sp '=' sp value + / field sp COND sp value / conditional COND <- '><' { p.addBTWN() } / '<=' { p.addLTE() } @@ -38,30 +34,19 @@ condint <- < '-'? [0-9]* '.' [0-9]+ / '0' / '-'? [1-9] [0-9]* > sp {p.condAdd(te condLT <- <('<=' / '<')> sp {p.condAdd(text)} condfield <- sp {p.condAdd(text)} -dvalue <- ditem - / lbrack { p.startList() } dlist rbrack { p.endList() } -fvalue <- fitem - / lbrack { p.startList() } flist rbrack { p.endList() } -dlist <- ditem (comma dlist)? -flist <- fitem (comma flist)? -ditem <- itema - / decimal - / itemb -fitem <- itema - / float - / itemb -itema <- 'null' &(comma / sp close) { p.addVal(nil) } +value <- item + / lbrack { p.startList() } list rbrack { p.endList() } +list <- item (comma list)? +item <- 'null' &(comma / sp close) { p.addVal(nil) } / 'true' &(comma / sp close) { p.addVal(true) } / 'false' &(comma / sp close) { p.addVal(false) } / timestampfmt { p.addVal(text) } -itemb <- < IDENT > { p.startCall(text) } open allargs comma? close { p.addVal(p.endCall()) } + / < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text) } + / < '-'? '.'[0-9]+ > { p.addNumVal(text) } + / < IDENT > { p.startCall(text) } open allargs comma? close { p.addVal(p.endCall()) } / < ([[A-Z]] / [0-9] / '-' / '_' / ':')+ > { p.addVal(text) } / < '"' doublequotedstring '"' > { p.addVal(text) } / < '\'' singlequotedstring '\'' > { p.addVal(text) } -float <- < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text, true) } - / < '-'? '.'[0-9]+ > { p.addNumVal(text, true) } -decimal <- < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text, false) } - / < '-'? '.'[0-9]+ > { p.addNumVal(text, false) } doublequotedstring <- ( '\\"' / '\\\\' / '\\n' / '\\t' / [^"\\] )* singlequotedstring <- ( '\\\'' / '\\\\' / '\\n' / '\\t' / [^'\\] )* diff --git a/pql/pql.peg.go b/pql/pql.peg.go index f0ddff7ec..895de23c8 100644 --- a/pql/pql.peg.go +++ b/pql/pql.peg.go @@ -21,25 +21,16 @@ const ( ruleCalls ruleCall ruleallargs - rulefargs - rulefarg - ruledargs - ruledarg + ruleargs + rulearg ruleCOND ruleconditional rulecondint rulecondLT rulecondfield - ruledvalue - rulefvalue - ruledlist - ruleflist - ruleditem - rulefitem - ruleitema - ruleitemb - rulefloat - ruledecimal + rulevalue + rulelist + ruleitem ruledoublequotedstring rulesinglequotedstring rulefieldExpr @@ -118,10 +109,6 @@ const ( ruleAction55 ruleAction56 ruleAction57 - ruleAction58 - ruleAction59 - ruleAction60 - ruleAction61 ) var rul3s = [...]string{ @@ -129,25 +116,16 @@ var rul3s = [...]string{ "Calls", "Call", "allargs", - "fargs", - "farg", - "dargs", - "darg", + "args", + "arg", "COND", "conditional", "condint", "condLT", "condfield", - "dvalue", - "fvalue", - "dlist", - "flist", - "ditem", - "fitem", - "itema", - "itemb", - "float", - "decimal", + "value", + "list", + "item", "doublequotedstring", "singlequotedstring", "fieldExpr", @@ -226,10 +204,6 @@ var rul3s = [...]string{ "Action55", "Action56", "Action57", - "Action58", - "Action59", - "Action60", - "Action61", } type token32 struct { @@ -346,7 +320,7 @@ type PQL struct { Buffer string buffer []rune - rules [105]func() bool + rules [92]func() bool parse func(rule ...int) error reset func() Pretty bool @@ -525,17 +499,17 @@ func (p *PQL) Execute() { case ruleAction37: p.endList() case ruleAction38: - p.startList() - case ruleAction39: - p.endList() - case ruleAction40: p.addVal(nil) - case ruleAction41: + case ruleAction39: p.addVal(true) - case ruleAction42: + case ruleAction40: p.addVal(false) - case ruleAction43: + case ruleAction41: p.addVal(text) + case ruleAction42: + p.addNumVal(text) + case ruleAction43: + p.addNumVal(text) case ruleAction44: p.startCall(text) case ruleAction45: @@ -547,30 +521,22 @@ func (p *PQL) Execute() { case ruleAction48: p.addVal(text) case ruleAction49: - p.addNumVal(text, true) - case ruleAction50: - p.addNumVal(text, true) - case ruleAction51: - p.addNumVal(text, false) - case ruleAction52: - p.addNumVal(text, false) - case ruleAction53: p.addField(text) - case ruleAction54: + case ruleAction50: p.addPosStr("_field", text) - case ruleAction55: + case ruleAction51: p.addPosNum("_col", text) - case ruleAction56: + case ruleAction52: p.addPosStr("_col", text) - case ruleAction57: + case ruleAction53: p.addPosStr("_col", text) - case ruleAction58: + case ruleAction54: p.addPosNum("_row", text) - case ruleAction59: + case ruleAction55: p.addPosStr("_row", text) - case ruleAction60: + case ruleAction56: p.addPosStr("_row", text) - case ruleAction61: + case ruleAction57: p.addPosStr("_timestamp", text) } @@ -702,7 +668,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position, tokenIndex = position0, tokenIndex0 return false }, - /* 1 Call <- <(('S' 'e' 't' Action0 open col comma dargs (comma timestamp)? close Action1) / ('S' 'e' 't' 'R' 'o' 'w' 'A' 't' 't' 'r' 's' Action2 open posfield comma row comma fargs close Action3) / ('S' 'e' 't' 'C' 'o' 'l' 'u' 'm' 'n' 'A' 't' 't' 'r' 's' Action4 open col comma fargs close Action5) / ('C' 'l' 'e' 'a' 'r' Action6 open col comma dargs close Action7) / ('C' 'l' 'e' 'a' 'r' 'R' 'o' 'w' Action8 open darg close Action9) / ('S' 't' 'o' 'r' 'e' Action10 open Call comma darg close Action11) / ('T' 'o' 'p' 'N' Action12 open posfield (comma allargs)? close Action13) / ('R' 'o' 'w' 's' Action14 open posfield (comma allargs)? close Action15) / ('R' 'a' 'n' 'g' 'e' Action16 open field sp '=' sp fvalue comma ('f' 'r' 'o' 'm' '=')? Action17 timestampfmt Action18 comma ('t' 'o' '=')? sp Action19 timestampfmt Action20 close Action21) / ( Action22 open allargs comma? close Action23))> */ + /* 1 Call <- <(('S' 'e' 't' Action0 open col comma args (comma timestamp)? close Action1) / ('S' 'e' 't' 'R' 'o' 'w' 'A' 't' 't' 'r' 's' Action2 open posfield comma row comma args close Action3) / ('S' 'e' 't' 'C' 'o' 'l' 'u' 'm' 'n' 'A' 't' 't' 'r' 's' Action4 open col comma args close Action5) / ('C' 'l' 'e' 'a' 'r' Action6 open col comma args close Action7) / ('C' 'l' 'e' 'a' 'r' 'R' 'o' 'w' Action8 open arg close Action9) / ('S' 't' 'o' 'r' 'e' Action10 open Call comma arg close Action11) / ('T' 'o' 'p' 'N' Action12 open posfield (comma allargs)? close Action13) / ('R' 'o' 'w' 's' Action14 open posfield (comma allargs)? close Action15) / ('R' 'a' 'n' 'g' 'e' Action16 open field sp '=' sp value comma ('f' 'r' 'o' 'm' '=')? Action17 timestampfmt Action18 comma ('t' 'o' '=')? sp Action19 timestampfmt Action20 close Action21) / ( Action22 open allargs comma? close Action23))> */ func() bool { position5, tokenIndex5 := position, tokenIndex { @@ -733,7 +699,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulecomma]() { goto l8 } - if !_rules[ruledargs]() { + if !_rules[ruleargs]() { goto l8 } { @@ -751,7 +717,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { add(rulePegText, position13) } { - add(ruleAction61, position) + add(ruleAction57, position) } add(ruletimestamp, position12) } @@ -837,7 +803,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { add(rulePegText, position21) } { - add(ruleAction58, position) + add(ruleAction54, position) } goto l19 l20: @@ -858,7 +824,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { add(rulePegText, position24) } { - add(ruleAction59, position) + add(ruleAction55, position) } goto l19 l23: @@ -879,7 +845,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { add(rulePegText, position26) } { - add(ruleAction60, position) + add(ruleAction56, position) } } l19: @@ -888,7 +854,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulecomma]() { goto l16 } - if !_rules[rulefargs]() { + if !_rules[ruleargs]() { goto l16 } if !_rules[ruleclose]() { @@ -968,7 +934,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulecomma]() { goto l29 } - if !_rules[rulefargs]() { + if !_rules[ruleargs]() { goto l29 } if !_rules[ruleclose]() { @@ -1012,7 +978,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulecomma]() { goto l32 } - if !_rules[ruledargs]() { + if !_rules[ruleargs]() { goto l32 } if !_rules[ruleclose]() { @@ -1062,7 +1028,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[ruleopen]() { goto l35 } - if !_rules[ruledarg]() { + if !_rules[rulearg]() { goto l35 } if !_rules[ruleclose]() { @@ -1106,7 +1072,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulecomma]() { goto l38 } - if !_rules[ruledarg]() { + if !_rules[rulearg]() { goto l38 } if !_rules[ruleclose]() { @@ -1251,7 +1217,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulesp]() { goto l51 } - if !_rules[rulefvalue]() { + if !_rules[rulevalue]() { goto l51 } if !_rules[rulecomma]() { @@ -1377,7 +1343,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position, tokenIndex = position5, tokenIndex5 return false }, - /* 2 allargs <- <((Call (comma Call)* (comma dargs)?) / dargs / sp)> */ + /* 2 allargs <- <((Call (comma Call)* (comma args)?) / args / sp)> */ func() bool { position67, tokenIndex67 := position, tokenIndex { @@ -1405,7 +1371,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulecomma]() { goto l73 } - if !_rules[ruledargs]() { + if !_rules[ruleargs]() { goto l73 } goto l74 @@ -1416,7 +1382,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { goto l69 l70: position, tokenIndex = position69, tokenIndex69 - if !_rules[ruledargs]() { + if !_rules[ruleargs]() { goto l75 } goto l69 @@ -1434,2245 +1400,1877 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position, tokenIndex = position67, tokenIndex67 return false }, - /* 3 fargs <- <(farg (comma fargs)? sp)> */ + /* 3 args <- <(arg (comma args)? sp)> */ func() bool { position76, tokenIndex76 := position, tokenIndex { position77 := position - { - position78 := position - { - position79, tokenIndex79 := position, tokenIndex - if !_rules[rulefield]() { - goto l80 - } - if !_rules[rulesp]() { - goto l80 - } - if buffer[position] != rune('=') { - goto l80 - } - position++ - if !_rules[rulesp]() { - goto l80 - } - if !_rules[rulefvalue]() { - goto l80 - } - goto l79 - l80: - position, tokenIndex = position79, tokenIndex79 - if !_rules[rulefield]() { - goto l81 - } - if !_rules[rulesp]() { - goto l81 - } - if !_rules[ruleCOND]() { - goto l81 - } - if !_rules[rulesp]() { - goto l81 - } - if !_rules[rulefvalue]() { - goto l81 - } - goto l79 - l81: - position, tokenIndex = position79, tokenIndex79 - if !_rules[ruleconditional]() { - goto l76 - } - } - l79: - add(rulefarg, position78) + if !_rules[rulearg]() { + goto l76 } { - position82, tokenIndex82 := position, tokenIndex + position78, tokenIndex78 := position, tokenIndex if !_rules[rulecomma]() { - goto l82 + goto l78 } - if !_rules[rulefargs]() { - goto l82 + if !_rules[ruleargs]() { + goto l78 } - goto l83 - l82: - position, tokenIndex = position82, tokenIndex82 + goto l79 + l78: + position, tokenIndex = position78, tokenIndex78 } - l83: + l79: if !_rules[rulesp]() { goto l76 } - add(rulefargs, position77) + add(ruleargs, position77) } return true l76: position, tokenIndex = position76, tokenIndex76 return false }, - /* 4 farg <- <((field sp '=' sp fvalue) / (field sp COND sp fvalue) / conditional)> */ + /* 4 arg <- <((field sp '=' sp value) / (field sp COND sp value) / conditional)> */ + func() bool { + position80, tokenIndex80 := position, tokenIndex + { + position81 := position + { + position82, tokenIndex82 := position, tokenIndex + if !_rules[rulefield]() { + goto l83 + } + if !_rules[rulesp]() { + goto l83 + } + if buffer[position] != rune('=') { + goto l83 + } + position++ + if !_rules[rulesp]() { + goto l83 + } + if !_rules[rulevalue]() { + goto l83 + } + goto l82 + l83: + position, tokenIndex = position82, tokenIndex82 + if !_rules[rulefield]() { + goto l84 + } + if !_rules[rulesp]() { + goto l84 + } + { + position85 := position + { + position86, tokenIndex86 := position, tokenIndex + if buffer[position] != rune('>') { + goto l87 + } + position++ + if buffer[position] != rune('<') { + goto l87 + } + position++ + { + add(ruleAction24, position) + } + goto l86 + l87: + position, tokenIndex = position86, tokenIndex86 + if buffer[position] != rune('<') { + goto l89 + } + position++ + if buffer[position] != rune('=') { + goto l89 + } + position++ + { + add(ruleAction25, position) + } + goto l86 + l89: + position, tokenIndex = position86, tokenIndex86 + if buffer[position] != rune('>') { + goto l91 + } + position++ + if buffer[position] != rune('=') { + goto l91 + } + position++ + { + add(ruleAction26, position) + } + goto l86 + l91: + position, tokenIndex = position86, tokenIndex86 + if buffer[position] != rune('=') { + goto l93 + } + position++ + if buffer[position] != rune('=') { + goto l93 + } + position++ + { + add(ruleAction27, position) + } + goto l86 + l93: + position, tokenIndex = position86, tokenIndex86 + if buffer[position] != rune('!') { + goto l95 + } + position++ + if buffer[position] != rune('=') { + goto l95 + } + position++ + { + add(ruleAction28, position) + } + goto l86 + l95: + position, tokenIndex = position86, tokenIndex86 + if buffer[position] != rune('<') { + goto l97 + } + position++ + { + add(ruleAction29, position) + } + goto l86 + l97: + position, tokenIndex = position86, tokenIndex86 + if buffer[position] != rune('>') { + goto l84 + } + position++ + { + add(ruleAction30, position) + } + } + l86: + add(ruleCOND, position85) + } + if !_rules[rulesp]() { + goto l84 + } + if !_rules[rulevalue]() { + goto l84 + } + goto l82 + l84: + position, tokenIndex = position82, tokenIndex82 + { + position100 := position + { + add(ruleAction31, position) + } + if !_rules[rulecondint]() { + goto l80 + } + if !_rules[rulecondLT]() { + goto l80 + } + { + position102 := position + { + position103 := position + if !_rules[rulefieldExpr]() { + goto l80 + } + add(rulePegText, position103) + } + if !_rules[rulesp]() { + goto l80 + } + { + add(ruleAction35, position) + } + add(rulecondfield, position102) + } + if !_rules[rulecondLT]() { + goto l80 + } + if !_rules[rulecondint]() { + goto l80 + } + { + add(ruleAction32, position) + } + add(ruleconditional, position100) + } + } + l82: + add(rulearg, position81) + } + return true + l80: + position, tokenIndex = position80, tokenIndex80 + return false + }, + /* 5 COND <- <(('>' '<' Action24) / ('<' '=' Action25) / ('>' '=' Action26) / ('=' '=' Action27) / ('!' '=' Action28) / ('<' Action29) / ('>' Action30))> */ nil, - /* 5 dargs <- <(darg (comma dargs)? sp)> */ + /* 6 conditional <- <(Action31 condint condLT condfield condLT condint Action32)> */ + nil, + /* 7 condint <- <(<(('-'? [0-9]* '.' [0-9]+) / '0' / ('-'? [1-9] [0-9]*))> sp Action33)> */ func() bool { - position85, tokenIndex85 := position, tokenIndex + position108, tokenIndex108 := position, tokenIndex { - position86 := position - if !_rules[ruledarg]() { - goto l85 - } + position109 := position { - position87, tokenIndex87 := position, tokenIndex - if !_rules[rulecomma]() { - goto l87 - } - if !_rules[ruledargs]() { - goto l87 - } - goto l88 - l87: - position, tokenIndex = position87, tokenIndex87 - } - l88: - if !_rules[rulesp]() { - goto l85 - } - add(ruledargs, position86) - } - return true - l85: - position, tokenIndex = position85, tokenIndex85 - return false - }, - /* 6 darg <- <((field sp '=' sp dvalue) / (field sp COND sp dvalue) / conditional)> */ - func() bool { - position89, tokenIndex89 := position, tokenIndex - { - position90 := position - { - position91, tokenIndex91 := position, tokenIndex - if !_rules[rulefield]() { - goto l92 - } - if !_rules[rulesp]() { - goto l92 - } - if buffer[position] != rune('=') { - goto l92 - } - position++ - if !_rules[rulesp]() { - goto l92 - } - if !_rules[ruledvalue]() { - goto l92 - } - goto l91 - l92: - position, tokenIndex = position91, tokenIndex91 - if !_rules[rulefield]() { - goto l93 - } - if !_rules[rulesp]() { - goto l93 - } - if !_rules[ruleCOND]() { - goto l93 - } - if !_rules[rulesp]() { - goto l93 - } - if !_rules[ruledvalue]() { - goto l93 - } - goto l91 - l93: - position, tokenIndex = position91, tokenIndex91 - if !_rules[ruleconditional]() { - goto l89 - } - } - l91: - add(ruledarg, position90) - } - return true - l89: - position, tokenIndex = position89, tokenIndex89 - return false - }, - /* 7 COND <- <(('>' '<' Action24) / ('<' '=' Action25) / ('>' '=' Action26) / ('=' '=' Action27) / ('!' '=' Action28) / ('<' Action29) / ('>' Action30))> */ - func() bool { - position94, tokenIndex94 := position, tokenIndex - { - position95 := position - { - position96, tokenIndex96 := position, tokenIndex - if buffer[position] != rune('>') { - goto l97 - } - position++ - if buffer[position] != rune('<') { - goto l97 - } - position++ + position110 := position { - add(ruleAction24, position) - } - goto l96 - l97: - position, tokenIndex = position96, tokenIndex96 - if buffer[position] != rune('<') { - goto l99 - } - position++ - if buffer[position] != rune('=') { - goto l99 - } - position++ - { - add(ruleAction25, position) - } - goto l96 - l99: - position, tokenIndex = position96, tokenIndex96 - if buffer[position] != rune('>') { - goto l101 - } - position++ - if buffer[position] != rune('=') { - goto l101 - } - position++ - { - add(ruleAction26, position) - } - goto l96 - l101: - position, tokenIndex = position96, tokenIndex96 - if buffer[position] != rune('=') { - goto l103 - } - position++ - if buffer[position] != rune('=') { - goto l103 - } - position++ - { - add(ruleAction27, position) - } - goto l96 - l103: - position, tokenIndex = position96, tokenIndex96 - if buffer[position] != rune('!') { - goto l105 - } - position++ - if buffer[position] != rune('=') { - goto l105 - } - position++ - { - add(ruleAction28, position) - } - goto l96 - l105: - position, tokenIndex = position96, tokenIndex96 - if buffer[position] != rune('<') { - goto l107 - } - position++ - { - add(ruleAction29, position) - } - goto l96 - l107: - position, tokenIndex = position96, tokenIndex96 - if buffer[position] != rune('>') { - goto l94 - } - position++ - { - add(ruleAction30, position) - } - } - l96: - add(ruleCOND, position95) - } - return true - l94: - position, tokenIndex = position94, tokenIndex94 - return false - }, - /* 8 conditional <- <(Action31 condint condLT condfield condLT condint Action32)> */ - func() bool { - position110, tokenIndex110 := position, tokenIndex - { - position111 := position - { - add(ruleAction31, position) - } - if !_rules[rulecondint]() { - goto l110 - } - if !_rules[rulecondLT]() { - goto l110 - } - { - position113 := position - { - position114 := position - if !_rules[rulefieldExpr]() { - goto l110 - } - add(rulePegText, position114) - } - if !_rules[rulesp]() { - goto l110 - } - { - add(ruleAction35, position) - } - add(rulecondfield, position113) - } - if !_rules[rulecondLT]() { - goto l110 - } - if !_rules[rulecondint]() { - goto l110 - } - { - add(ruleAction32, position) - } - add(ruleconditional, position111) - } - return true - l110: - position, tokenIndex = position110, tokenIndex110 - return false - }, - /* 9 condint <- <(<(('-'? [0-9]* '.' [0-9]+) / '0' / ('-'? [1-9] [0-9]*))> sp Action33)> */ - func() bool { - position117, tokenIndex117 := position, tokenIndex - { - position118 := position - { - position119 := position - { - position120, tokenIndex120 := position, tokenIndex + position111, tokenIndex111 := position, tokenIndex { - position122, tokenIndex122 := position, tokenIndex + position113, tokenIndex113 := position, tokenIndex if buffer[position] != rune('-') { - goto l122 + goto l113 } position++ - goto l123 - l122: - position, tokenIndex = position122, tokenIndex122 + goto l114 + l113: + position, tokenIndex = position113, tokenIndex113 } - l123: - l124: + l114: + l115: { - position125, tokenIndex125 := position, tokenIndex + position116, tokenIndex116 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l125 + goto l116 } position++ - goto l124 - l125: - position, tokenIndex = position125, tokenIndex125 + goto l115 + l116: + position, tokenIndex = position116, tokenIndex116 } if buffer[position] != rune('.') { - goto l121 + goto l112 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l121 + goto l112 } position++ - l126: + l117: { - position127, tokenIndex127 := position, tokenIndex + position118, tokenIndex118 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l127 + goto l118 } position++ - goto l126 - l127: - position, tokenIndex = position127, tokenIndex127 - } - goto l120 - l121: - position, tokenIndex = position120, tokenIndex120 - if buffer[position] != rune('0') { - goto l128 - } - position++ - goto l120 - l128: - position, tokenIndex = position120, tokenIndex120 - { - position129, tokenIndex129 := position, tokenIndex - if buffer[position] != rune('-') { - goto l129 - } - position++ - goto l130 - l129: - position, tokenIndex = position129, tokenIndex129 - } - l130: - if c := buffer[position]; c < rune('1') || c > rune('9') { goto l117 + l118: + position, tokenIndex = position118, tokenIndex118 + } + goto l111 + l112: + position, tokenIndex = position111, tokenIndex111 + if buffer[position] != rune('0') { + goto l119 } position++ - l131: + goto l111 + l119: + position, tokenIndex = position111, tokenIndex111 { - position132, tokenIndex132 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l132 + position120, tokenIndex120 := position, tokenIndex + if buffer[position] != rune('-') { + goto l120 } position++ - goto l131 - l132: - position, tokenIndex = position132, tokenIndex132 + goto l121 + l120: + position, tokenIndex = position120, tokenIndex120 + } + l121: + if c := buffer[position]; c < rune('1') || c > rune('9') { + goto l108 + } + position++ + l122: + { + position123, tokenIndex123 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l123 + } + position++ + goto l122 + l123: + position, tokenIndex = position123, tokenIndex123 } } - l120: - add(rulePegText, position119) + l111: + add(rulePegText, position110) } if !_rules[rulesp]() { - goto l117 + goto l108 } { add(ruleAction33, position) } - add(rulecondint, position118) + add(rulecondint, position109) } return true - l117: - position, tokenIndex = position117, tokenIndex117 + l108: + position, tokenIndex = position108, tokenIndex108 return false }, - /* 10 condLT <- <(<(('<' '=') / '<')> sp Action34)> */ + /* 8 condLT <- <(<(('<' '=') / '<')> sp Action34)> */ func() bool { - position134, tokenIndex134 := position, tokenIndex + position125, tokenIndex125 := position, tokenIndex { - position135 := position + position126 := position { - position136 := position + position127 := position { - position137, tokenIndex137 := position, tokenIndex + position128, tokenIndex128 := position, tokenIndex if buffer[position] != rune('<') { - goto l138 + goto l129 } position++ if buffer[position] != rune('=') { - goto l138 + goto l129 } position++ - goto l137 - l138: - position, tokenIndex = position137, tokenIndex137 + goto l128 + l129: + position, tokenIndex = position128, tokenIndex128 if buffer[position] != rune('<') { - goto l134 + goto l125 } position++ } - l137: - add(rulePegText, position136) + l128: + add(rulePegText, position127) } if !_rules[rulesp]() { - goto l134 + goto l125 } { add(ruleAction34, position) } - add(rulecondLT, position135) + add(rulecondLT, position126) } return true - l134: - position, tokenIndex = position134, tokenIndex134 + l125: + position, tokenIndex = position125, tokenIndex125 return false }, - /* 11 condfield <- <( sp Action35)> */ + /* 9 condfield <- <( sp Action35)> */ nil, - /* 12 dvalue <- <(ditem / (lbrack Action36 dlist rbrack Action37))> */ + /* 10 value <- <(item / (lbrack Action36 list rbrack Action37))> */ func() bool { - position141, tokenIndex141 := position, tokenIndex + position132, tokenIndex132 := position, tokenIndex { - position142 := position + position133 := position { - position143, tokenIndex143 := position, tokenIndex - if !_rules[ruleditem]() { - goto l144 + position134, tokenIndex134 := position, tokenIndex + if !_rules[ruleitem]() { + goto l135 } - goto l143 - l144: - position, tokenIndex = position143, tokenIndex143 - if !_rules[rulelbrack]() { - goto l141 + goto l134 + l135: + position, tokenIndex = position134, tokenIndex134 + { + position136 := position + if buffer[position] != rune('[') { + goto l132 + } + position++ + if !_rules[rulesp]() { + goto l132 + } + add(rulelbrack, position136) } { add(ruleAction36, position) } - if !_rules[ruledlist]() { - goto l141 + if !_rules[rulelist]() { + goto l132 } - if !_rules[rulerbrack]() { - goto l141 + { + position138 := position + if !_rules[rulesp]() { + goto l132 + } + if buffer[position] != rune(']') { + goto l132 + } + position++ + if !_rules[rulesp]() { + goto l132 + } + add(rulerbrack, position138) } { add(ruleAction37, position) } } - l143: - add(ruledvalue, position142) + l134: + add(rulevalue, position133) } return true - l141: - position, tokenIndex = position141, tokenIndex141 + l132: + position, tokenIndex = position132, tokenIndex132 return false }, - /* 13 fvalue <- <(fitem / (lbrack Action38 flist rbrack Action39))> */ + /* 11 list <- <(item (comma list)?)> */ func() bool { - position147, tokenIndex147 := position, tokenIndex + position140, tokenIndex140 := position, tokenIndex { - position148 := position + position141 := position + if !_rules[ruleitem]() { + goto l140 + } { - position149, tokenIndex149 := position, tokenIndex - if !_rules[rulefitem]() { - goto l150 + position142, tokenIndex142 := position, tokenIndex + if !_rules[rulecomma]() { + goto l142 } - goto l149 - l150: - position, tokenIndex = position149, tokenIndex149 - if !_rules[rulelbrack]() { + if !_rules[rulelist]() { + goto l142 + } + goto l143 + l142: + position, tokenIndex = position142, tokenIndex142 + } + l143: + add(rulelist, position141) + } + return true + l140: + position, tokenIndex = position140, tokenIndex140 + return false + }, + /* 12 item <- <(('n' 'u' 'l' 'l' &(comma / (sp close)) Action38) / ('t' 'r' 'u' 'e' &(comma / (sp close)) Action39) / ('f' 'a' 'l' 's' 'e' &(comma / (sp close)) Action40) / (timestampfmt Action41) / (<('-'? [0-9]+ ('.' [0-9]*)?)> Action42) / (<('-'? '.' [0-9]+)> Action43) / ( Action44 open allargs comma? close Action45) / (<([a-z] / [A-Z] / [0-9] / '-' / '_' / ':')+> Action46) / (<('"' doublequotedstring '"')> Action47) / (<('\'' singlequotedstring '\'')> Action48))> */ + func() bool { + position144, tokenIndex144 := position, tokenIndex + { + position145 := position + { + position146, tokenIndex146 := position, tokenIndex + if buffer[position] != rune('n') { goto l147 } + position++ + if buffer[position] != rune('u') { + goto l147 + } + position++ + if buffer[position] != rune('l') { + goto l147 + } + position++ + if buffer[position] != rune('l') { + goto l147 + } + position++ + { + position148, tokenIndex148 := position, tokenIndex + { + position149, tokenIndex149 := position, tokenIndex + if !_rules[rulecomma]() { + goto l150 + } + goto l149 + l150: + position, tokenIndex = position149, tokenIndex149 + if !_rules[rulesp]() { + goto l147 + } + if !_rules[ruleclose]() { + goto l147 + } + } + l149: + position, tokenIndex = position148, tokenIndex148 + } { add(ruleAction38, position) } - if !_rules[ruleflist]() { - goto l147 + goto l146 + l147: + position, tokenIndex = position146, tokenIndex146 + if buffer[position] != rune('t') { + goto l152 } - if !_rules[rulerbrack]() { - goto l147 + position++ + if buffer[position] != rune('r') { + goto l152 + } + position++ + if buffer[position] != rune('u') { + goto l152 + } + position++ + if buffer[position] != rune('e') { + goto l152 + } + position++ + { + position153, tokenIndex153 := position, tokenIndex + { + position154, tokenIndex154 := position, tokenIndex + if !_rules[rulecomma]() { + goto l155 + } + goto l154 + l155: + position, tokenIndex = position154, tokenIndex154 + if !_rules[rulesp]() { + goto l152 + } + if !_rules[ruleclose]() { + goto l152 + } + } + l154: + position, tokenIndex = position153, tokenIndex153 } { add(ruleAction39, position) } - } - l149: - add(rulefvalue, position148) - } - return true - l147: - position, tokenIndex = position147, tokenIndex147 - return false - }, - /* 14 dlist <- <(ditem (comma dlist)?)> */ - func() bool { - position153, tokenIndex153 := position, tokenIndex - { - position154 := position - if !_rules[ruleditem]() { - goto l153 - } - { - position155, tokenIndex155 := position, tokenIndex - if !_rules[rulecomma]() { - goto l155 - } - if !_rules[ruledlist]() { - goto l155 - } - goto l156 - l155: - position, tokenIndex = position155, tokenIndex155 - } - l156: - add(ruledlist, position154) - } - return true - l153: - position, tokenIndex = position153, tokenIndex153 - return false - }, - /* 15 flist <- <(fitem (comma flist)?)> */ - func() bool { - position157, tokenIndex157 := position, tokenIndex - { - position158 := position - if !_rules[rulefitem]() { - goto l157 - } - { - position159, tokenIndex159 := position, tokenIndex - if !_rules[rulecomma]() { - goto l159 - } - if !_rules[ruleflist]() { - goto l159 - } - goto l160 - l159: - position, tokenIndex = position159, tokenIndex159 - } - l160: - add(ruleflist, position158) - } - return true - l157: - position, tokenIndex = position157, tokenIndex157 - return false - }, - /* 16 ditem <- <(itema / decimal / itemb)> */ - func() bool { - position161, tokenIndex161 := position, tokenIndex - { - position162 := position - { - position163, tokenIndex163 := position, tokenIndex - if !_rules[ruleitema]() { - goto l164 - } - goto l163 - l164: - position, tokenIndex = position163, tokenIndex163 - { - position166 := position - { - position167, tokenIndex167 := position, tokenIndex - { - position169 := position - { - position170, tokenIndex170 := position, tokenIndex - if buffer[position] != rune('-') { - goto l170 - } - position++ - goto l171 - l170: - position, tokenIndex = position170, tokenIndex170 - } - l171: - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l168 - } - position++ - l172: - { - position173, tokenIndex173 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l173 - } - position++ - goto l172 - l173: - position, tokenIndex = position173, tokenIndex173 - } - { - position174, tokenIndex174 := position, tokenIndex - if buffer[position] != rune('.') { - goto l174 - } - position++ - l176: - { - position177, tokenIndex177 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l177 - } - position++ - goto l176 - l177: - position, tokenIndex = position177, tokenIndex177 - } - goto l175 - l174: - position, tokenIndex = position174, tokenIndex174 - } - l175: - add(rulePegText, position169) - } - { - add(ruleAction51, position) - } - goto l167 - l168: - position, tokenIndex = position167, tokenIndex167 - { - position179 := position - { - position180, tokenIndex180 := position, tokenIndex - if buffer[position] != rune('-') { - goto l180 - } - position++ - goto l181 - l180: - position, tokenIndex = position180, tokenIndex180 - } - l181: - if buffer[position] != rune('.') { - goto l165 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l165 - } - position++ - l182: - { - position183, tokenIndex183 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l183 - } - position++ - goto l182 - l183: - position, tokenIndex = position183, tokenIndex183 - } - add(rulePegText, position179) - } - { - add(ruleAction52, position) - } - } - l167: - add(ruledecimal, position166) - } - goto l163 - l165: - position, tokenIndex = position163, tokenIndex163 - if !_rules[ruleitemb]() { - goto l161 - } - } - l163: - add(ruleditem, position162) - } - return true - l161: - position, tokenIndex = position161, tokenIndex161 - return false - }, - /* 17 fitem <- <(itema / float / itemb)> */ - func() bool { - position185, tokenIndex185 := position, tokenIndex - { - position186 := position - { - position187, tokenIndex187 := position, tokenIndex - if !_rules[ruleitema]() { - goto l188 - } - goto l187 - l188: - position, tokenIndex = position187, tokenIndex187 - { - position190 := position - { - position191, tokenIndex191 := position, tokenIndex - { - position193 := position - { - position194, tokenIndex194 := position, tokenIndex - if buffer[position] != rune('-') { - goto l194 - } - position++ - goto l195 - l194: - position, tokenIndex = position194, tokenIndex194 - } - l195: - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l192 - } - position++ - l196: - { - position197, tokenIndex197 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l197 - } - position++ - goto l196 - l197: - position, tokenIndex = position197, tokenIndex197 - } - { - position198, tokenIndex198 := position, tokenIndex - if buffer[position] != rune('.') { - goto l198 - } - position++ - l200: - { - position201, tokenIndex201 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l201 - } - position++ - goto l200 - l201: - position, tokenIndex = position201, tokenIndex201 - } - goto l199 - l198: - position, tokenIndex = position198, tokenIndex198 - } - l199: - add(rulePegText, position193) - } - { - add(ruleAction49, position) - } - goto l191 - l192: - position, tokenIndex = position191, tokenIndex191 - { - position203 := position - { - position204, tokenIndex204 := position, tokenIndex - if buffer[position] != rune('-') { - goto l204 - } - position++ - goto l205 - l204: - position, tokenIndex = position204, tokenIndex204 - } - l205: - if buffer[position] != rune('.') { - goto l189 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l189 - } - position++ - l206: - { - position207, tokenIndex207 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l207 - } - position++ - goto l206 - l207: - position, tokenIndex = position207, tokenIndex207 - } - add(rulePegText, position203) - } - { - add(ruleAction50, position) - } - } - l191: - add(rulefloat, position190) - } - goto l187 - l189: - position, tokenIndex = position187, tokenIndex187 - if !_rules[ruleitemb]() { - goto l185 - } - } - l187: - add(rulefitem, position186) - } - return true - l185: - position, tokenIndex = position185, tokenIndex185 - return false - }, - /* 18 itema <- <(('n' 'u' 'l' 'l' &(comma / (sp close)) Action40) / ('t' 'r' 'u' 'e' &(comma / (sp close)) Action41) / ('f' 'a' 'l' 's' 'e' &(comma / (sp close)) Action42) / (timestampfmt Action43))> */ - func() bool { - position209, tokenIndex209 := position, tokenIndex - { - position210 := position - { - position211, tokenIndex211 := position, tokenIndex - if buffer[position] != rune('n') { - goto l212 + goto l146 + l152: + position, tokenIndex = position146, tokenIndex146 + if buffer[position] != rune('f') { + goto l157 } position++ - if buffer[position] != rune('u') { - goto l212 + if buffer[position] != rune('a') { + goto l157 } position++ if buffer[position] != rune('l') { - goto l212 + goto l157 } position++ - if buffer[position] != rune('l') { - goto l212 + if buffer[position] != rune('s') { + goto l157 + } + position++ + if buffer[position] != rune('e') { + goto l157 } position++ { - position213, tokenIndex213 := position, tokenIndex + position158, tokenIndex158 := position, tokenIndex { - position214, tokenIndex214 := position, tokenIndex + position159, tokenIndex159 := position, tokenIndex if !_rules[rulecomma]() { - goto l215 + goto l160 } - goto l214 - l215: - position, tokenIndex = position214, tokenIndex214 + goto l159 + l160: + position, tokenIndex = position159, tokenIndex159 if !_rules[rulesp]() { - goto l212 + goto l157 } if !_rules[ruleclose]() { - goto l212 + goto l157 } } - l214: - position, tokenIndex = position213, tokenIndex213 + l159: + position, tokenIndex = position158, tokenIndex158 } { add(ruleAction40, position) } - goto l211 - l212: - position, tokenIndex = position211, tokenIndex211 - if buffer[position] != rune('t') { - goto l217 - } - position++ - if buffer[position] != rune('r') { - goto l217 - } - position++ - if buffer[position] != rune('u') { - goto l217 - } - position++ - if buffer[position] != rune('e') { - goto l217 - } - position++ - { - position218, tokenIndex218 := position, tokenIndex - { - position219, tokenIndex219 := position, tokenIndex - if !_rules[rulecomma]() { - goto l220 - } - goto l219 - l220: - position, tokenIndex = position219, tokenIndex219 - if !_rules[rulesp]() { - goto l217 - } - if !_rules[ruleclose]() { - goto l217 - } - } - l219: - position, tokenIndex = position218, tokenIndex218 + goto l146 + l157: + position, tokenIndex = position146, tokenIndex146 + if !_rules[ruletimestampfmt]() { + goto l162 } { add(ruleAction41, position) } - goto l211 - l217: - position, tokenIndex = position211, tokenIndex211 - if buffer[position] != rune('f') { - goto l222 - } - position++ - if buffer[position] != rune('a') { - goto l222 - } - position++ - if buffer[position] != rune('l') { - goto l222 - } - position++ - if buffer[position] != rune('s') { - goto l222 - } - position++ - if buffer[position] != rune('e') { - goto l222 - } - position++ + goto l146 + l162: + position, tokenIndex = position146, tokenIndex146 { - position223, tokenIndex223 := position, tokenIndex + position165 := position { - position224, tokenIndex224 := position, tokenIndex - if !_rules[rulecomma]() { - goto l225 - } - goto l224 - l225: - position, tokenIndex = position224, tokenIndex224 - if !_rules[rulesp]() { - goto l222 - } - if !_rules[ruleclose]() { - goto l222 + position166, tokenIndex166 := position, tokenIndex + if buffer[position] != rune('-') { + goto l166 } + position++ + goto l167 + l166: + position, tokenIndex = position166, tokenIndex166 } - l224: - position, tokenIndex = position223, tokenIndex223 + l167: + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l164 + } + position++ + l168: + { + position169, tokenIndex169 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l169 + } + position++ + goto l168 + l169: + position, tokenIndex = position169, tokenIndex169 + } + { + position170, tokenIndex170 := position, tokenIndex + if buffer[position] != rune('.') { + goto l170 + } + position++ + l172: + { + position173, tokenIndex173 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l173 + } + position++ + goto l172 + l173: + position, tokenIndex = position173, tokenIndex173 + } + goto l171 + l170: + position, tokenIndex = position170, tokenIndex170 + } + l171: + add(rulePegText, position165) } { add(ruleAction42, position) } - goto l211 - l222: - position, tokenIndex = position211, tokenIndex211 - if !_rules[ruletimestampfmt]() { - goto l209 + goto l146 + l164: + position, tokenIndex = position146, tokenIndex146 + { + position176 := position + { + position177, tokenIndex177 := position, tokenIndex + if buffer[position] != rune('-') { + goto l177 + } + position++ + goto l178 + l177: + position, tokenIndex = position177, tokenIndex177 + } + l178: + if buffer[position] != rune('.') { + goto l175 + } + position++ + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l175 + } + position++ + l179: + { + position180, tokenIndex180 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l180 + } + position++ + goto l179 + l180: + position, tokenIndex = position180, tokenIndex180 + } + add(rulePegText, position176) } { add(ruleAction43, position) } - } - l211: - add(ruleitema, position210) - } - return true - l209: - position, tokenIndex = position209, tokenIndex209 - return false - }, - /* 19 itemb <- <(( Action44 open allargs comma? close Action45) / (<([a-z] / [A-Z] / [0-9] / '-' / '_' / ':')+> Action46) / (<('"' doublequotedstring '"')> Action47) / (<('\'' singlequotedstring '\'')> Action48))> */ - func() bool { - position228, tokenIndex228 := position, tokenIndex - { - position229 := position - { - position230, tokenIndex230 := position, tokenIndex + goto l146 + l175: + position, tokenIndex = position146, tokenIndex146 { - position232 := position + position183 := position if !_rules[ruleIDENT]() { - goto l231 + goto l182 } - add(rulePegText, position232) + add(rulePegText, position183) } { add(ruleAction44, position) } if !_rules[ruleopen]() { - goto l231 + goto l182 } if !_rules[ruleallargs]() { - goto l231 + goto l182 } { - position234, tokenIndex234 := position, tokenIndex + position185, tokenIndex185 := position, tokenIndex if !_rules[rulecomma]() { - goto l234 + goto l185 } - goto l235 - l234: - position, tokenIndex = position234, tokenIndex234 + goto l186 + l185: + position, tokenIndex = position185, tokenIndex185 } - l235: + l186: if !_rules[ruleclose]() { - goto l231 + goto l182 } { add(ruleAction45, position) } - goto l230 - l231: - position, tokenIndex = position230, tokenIndex230 + goto l146 + l182: + position, tokenIndex = position146, tokenIndex146 { - position238 := position + position189 := position { - position241, tokenIndex241 := position, tokenIndex + position192, tokenIndex192 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l242 + goto l193 } position++ - goto l241 - l242: - position, tokenIndex = position241, tokenIndex241 + goto l192 + l193: + position, tokenIndex = position192, tokenIndex192 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l243 + goto l194 } position++ - goto l241 - l243: - position, tokenIndex = position241, tokenIndex241 + goto l192 + l194: + position, tokenIndex = position192, tokenIndex192 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l244 + goto l195 } position++ - goto l241 - l244: - position, tokenIndex = position241, tokenIndex241 + goto l192 + l195: + position, tokenIndex = position192, tokenIndex192 if buffer[position] != rune('-') { - goto l245 + goto l196 } position++ - goto l241 - l245: - position, tokenIndex = position241, tokenIndex241 + goto l192 + l196: + position, tokenIndex = position192, tokenIndex192 if buffer[position] != rune('_') { - goto l246 + goto l197 } position++ - goto l241 - l246: - position, tokenIndex = position241, tokenIndex241 + goto l192 + l197: + position, tokenIndex = position192, tokenIndex192 if buffer[position] != rune(':') { - goto l237 + goto l188 } position++ } - l241: - l239: + l192: + l190: { - position240, tokenIndex240 := position, tokenIndex + position191, tokenIndex191 := position, tokenIndex { - position247, tokenIndex247 := position, tokenIndex + position198, tokenIndex198 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l248 + goto l199 } position++ - goto l247 - l248: - position, tokenIndex = position247, tokenIndex247 + goto l198 + l199: + position, tokenIndex = position198, tokenIndex198 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l249 + goto l200 } position++ - goto l247 - l249: - position, tokenIndex = position247, tokenIndex247 + goto l198 + l200: + position, tokenIndex = position198, tokenIndex198 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l250 + goto l201 } position++ - goto l247 - l250: - position, tokenIndex = position247, tokenIndex247 + goto l198 + l201: + position, tokenIndex = position198, tokenIndex198 if buffer[position] != rune('-') { - goto l251 + goto l202 } position++ - goto l247 - l251: - position, tokenIndex = position247, tokenIndex247 + goto l198 + l202: + position, tokenIndex = position198, tokenIndex198 if buffer[position] != rune('_') { - goto l252 + goto l203 } position++ - goto l247 - l252: - position, tokenIndex = position247, tokenIndex247 + goto l198 + l203: + position, tokenIndex = position198, tokenIndex198 if buffer[position] != rune(':') { - goto l240 + goto l191 } position++ } - l247: - goto l239 - l240: - position, tokenIndex = position240, tokenIndex240 + l198: + goto l190 + l191: + position, tokenIndex = position191, tokenIndex191 } - add(rulePegText, position238) + add(rulePegText, position189) } { add(ruleAction46, position) } - goto l230 - l237: - position, tokenIndex = position230, tokenIndex230 + goto l146 + l188: + position, tokenIndex = position146, tokenIndex146 { - position255 := position + position206 := position if buffer[position] != rune('"') { - goto l254 + goto l205 } position++ if !_rules[ruledoublequotedstring]() { - goto l254 + goto l205 } if buffer[position] != rune('"') { - goto l254 + goto l205 } position++ - add(rulePegText, position255) + add(rulePegText, position206) } { add(ruleAction47, position) } - goto l230 - l254: - position, tokenIndex = position230, tokenIndex230 + goto l146 + l205: + position, tokenIndex = position146, tokenIndex146 { - position257 := position + position208 := position if buffer[position] != rune('\'') { - goto l228 + goto l144 } position++ if !_rules[rulesinglequotedstring]() { - goto l228 + goto l144 } if buffer[position] != rune('\'') { - goto l228 + goto l144 } position++ - add(rulePegText, position257) + add(rulePegText, position208) } { add(ruleAction48, position) } } - l230: - add(ruleitemb, position229) + l146: + add(ruleitem, position145) } return true - l228: - position, tokenIndex = position228, tokenIndex228 + l144: + position, tokenIndex = position144, tokenIndex144 return false }, - /* 20 float <- <((<('-'? [0-9]+ ('.' [0-9]*)?)> Action49) / (<('-'? '.' [0-9]+)> Action50))> */ - nil, - /* 21 decimal <- <((<('-'? [0-9]+ ('.' [0-9]*)?)> Action51) / (<('-'? '.' [0-9]+)> Action52))> */ - nil, - /* 22 doublequotedstring <- <(('\\' '"') / ('\\' '\\') / ('\\' 'n') / ('\\' 't') / (!('"' / '\\') .))*> */ + /* 13 doublequotedstring <- <(('\\' '"') / ('\\' '\\') / ('\\' 'n') / ('\\' 't') / (!('"' / '\\') .))*> */ func() bool { { - position262 := position - l263: + position211 := position + l212: { - position264, tokenIndex264 := position, tokenIndex + position213, tokenIndex213 := position, tokenIndex { - position265, tokenIndex265 := position, tokenIndex + position214, tokenIndex214 := position, tokenIndex if buffer[position] != rune('\\') { - goto l266 + goto l215 } position++ if buffer[position] != rune('"') { - goto l266 + goto l215 } position++ - goto l265 - l266: - position, tokenIndex = position265, tokenIndex265 + goto l214 + l215: + position, tokenIndex = position214, tokenIndex214 if buffer[position] != rune('\\') { - goto l267 + goto l216 } position++ if buffer[position] != rune('\\') { - goto l267 + goto l216 } position++ - goto l265 - l267: - position, tokenIndex = position265, tokenIndex265 + goto l214 + l216: + position, tokenIndex = position214, tokenIndex214 if buffer[position] != rune('\\') { - goto l268 + goto l217 } position++ if buffer[position] != rune('n') { - goto l268 + goto l217 } position++ - goto l265 - l268: - position, tokenIndex = position265, tokenIndex265 + goto l214 + l217: + position, tokenIndex = position214, tokenIndex214 if buffer[position] != rune('\\') { - goto l269 + goto l218 } position++ if buffer[position] != rune('t') { - goto l269 + goto l218 } position++ - goto l265 - l269: - position, tokenIndex = position265, tokenIndex265 + goto l214 + l218: + position, tokenIndex = position214, tokenIndex214 { - position270, tokenIndex270 := position, tokenIndex + position219, tokenIndex219 := position, tokenIndex { - position271, tokenIndex271 := position, tokenIndex + position220, tokenIndex220 := position, tokenIndex if buffer[position] != rune('"') { - goto l272 + goto l221 } position++ - goto l271 - l272: - position, tokenIndex = position271, tokenIndex271 + goto l220 + l221: + position, tokenIndex = position220, tokenIndex220 if buffer[position] != rune('\\') { - goto l270 + goto l219 } position++ } - l271: - goto l264 - l270: - position, tokenIndex = position270, tokenIndex270 + l220: + goto l213 + l219: + position, tokenIndex = position219, tokenIndex219 } if !matchDot() { - goto l264 + goto l213 } } - l265: - goto l263 - l264: - position, tokenIndex = position264, tokenIndex264 + l214: + goto l212 + l213: + position, tokenIndex = position213, tokenIndex213 } - add(ruledoublequotedstring, position262) + add(ruledoublequotedstring, position211) } return true }, - /* 23 singlequotedstring <- <(('\\' '\'') / ('\\' '\\') / ('\\' 'n') / ('\\' 't') / (!('\'' / '\\') .))*> */ + /* 14 singlequotedstring <- <(('\\' '\'') / ('\\' '\\') / ('\\' 'n') / ('\\' 't') / (!('\'' / '\\') .))*> */ func() bool { { - position274 := position - l275: + position223 := position + l224: { - position276, tokenIndex276 := position, tokenIndex + position225, tokenIndex225 := position, tokenIndex { - position277, tokenIndex277 := position, tokenIndex + position226, tokenIndex226 := position, tokenIndex if buffer[position] != rune('\\') { - goto l278 + goto l227 } position++ if buffer[position] != rune('\'') { - goto l278 + goto l227 } position++ - goto l277 - l278: - position, tokenIndex = position277, tokenIndex277 + goto l226 + l227: + position, tokenIndex = position226, tokenIndex226 if buffer[position] != rune('\\') { - goto l279 + goto l228 } position++ if buffer[position] != rune('\\') { - goto l279 + goto l228 } position++ - goto l277 - l279: - position, tokenIndex = position277, tokenIndex277 + goto l226 + l228: + position, tokenIndex = position226, tokenIndex226 if buffer[position] != rune('\\') { - goto l280 + goto l229 } position++ if buffer[position] != rune('n') { - goto l280 + goto l229 } position++ - goto l277 - l280: - position, tokenIndex = position277, tokenIndex277 + goto l226 + l229: + position, tokenIndex = position226, tokenIndex226 if buffer[position] != rune('\\') { - goto l281 + goto l230 } position++ if buffer[position] != rune('t') { - goto l281 + goto l230 } position++ - goto l277 - l281: - position, tokenIndex = position277, tokenIndex277 + goto l226 + l230: + position, tokenIndex = position226, tokenIndex226 { - position282, tokenIndex282 := position, tokenIndex + position231, tokenIndex231 := position, tokenIndex { - position283, tokenIndex283 := position, tokenIndex + position232, tokenIndex232 := position, tokenIndex if buffer[position] != rune('\'') { - goto l284 + goto l233 } position++ - goto l283 - l284: - position, tokenIndex = position283, tokenIndex283 + goto l232 + l233: + position, tokenIndex = position232, tokenIndex232 if buffer[position] != rune('\\') { - goto l282 + goto l231 } position++ } - l283: - goto l276 - l282: - position, tokenIndex = position282, tokenIndex282 + l232: + goto l225 + l231: + position, tokenIndex = position231, tokenIndex231 } if !matchDot() { - goto l276 + goto l225 } } - l277: - goto l275 - l276: - position, tokenIndex = position276, tokenIndex276 + l226: + goto l224 + l225: + position, tokenIndex = position225, tokenIndex225 } - add(rulesinglequotedstring, position274) + add(rulesinglequotedstring, position223) } return true }, - /* 24 fieldExpr <- <(([a-z] / [A-Z] / '_') ([a-z] / [A-Z] / [0-9] / '_' / '-')*)> */ + /* 15 fieldExpr <- <(([a-z] / [A-Z] / '_') ([a-z] / [A-Z] / [0-9] / '_' / '-')*)> */ func() bool { - position285, tokenIndex285 := position, tokenIndex + position234, tokenIndex234 := position, tokenIndex { - position286 := position + position235 := position { - position287, tokenIndex287 := position, tokenIndex + position236, tokenIndex236 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l288 + goto l237 } position++ - goto l287 - l288: - position, tokenIndex = position287, tokenIndex287 + goto l236 + l237: + position, tokenIndex = position236, tokenIndex236 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l289 + goto l238 } position++ - goto l287 - l289: - position, tokenIndex = position287, tokenIndex287 + goto l236 + l238: + position, tokenIndex = position236, tokenIndex236 if buffer[position] != rune('_') { - goto l285 + goto l234 } position++ } - l287: - l290: + l236: + l239: { - position291, tokenIndex291 := position, tokenIndex + position240, tokenIndex240 := position, tokenIndex { - position292, tokenIndex292 := position, tokenIndex + position241, tokenIndex241 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l293 + goto l242 } position++ - goto l292 - l293: - position, tokenIndex = position292, tokenIndex292 + goto l241 + l242: + position, tokenIndex = position241, tokenIndex241 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l294 + goto l243 } position++ - goto l292 - l294: - position, tokenIndex = position292, tokenIndex292 + goto l241 + l243: + position, tokenIndex = position241, tokenIndex241 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l295 + goto l244 } position++ - goto l292 - l295: - position, tokenIndex = position292, tokenIndex292 + goto l241 + l244: + position, tokenIndex = position241, tokenIndex241 if buffer[position] != rune('_') { - goto l296 + goto l245 } position++ - goto l292 - l296: - position, tokenIndex = position292, tokenIndex292 + goto l241 + l245: + position, tokenIndex = position241, tokenIndex241 if buffer[position] != rune('-') { + goto l240 + } + position++ + } + l241: + goto l239 + l240: + position, tokenIndex = position240, tokenIndex240 + } + add(rulefieldExpr, position235) + } + return true + l234: + position, tokenIndex = position234, tokenIndex234 + return false + }, + /* 16 field <- <(<(fieldExpr / reserved)> Action49)> */ + func() bool { + position246, tokenIndex246 := position, tokenIndex + { + position247 := position + { + position248 := position + { + position249, tokenIndex249 := position, tokenIndex + if !_rules[rulefieldExpr]() { + goto l250 + } + goto l249 + l250: + position, tokenIndex = position249, tokenIndex249 + { + position251 := position + { + position252, tokenIndex252 := position, tokenIndex + if buffer[position] != rune('_') { + goto l253 + } + position++ + if buffer[position] != rune('r') { + goto l253 + } + position++ + if buffer[position] != rune('o') { + goto l253 + } + position++ + if buffer[position] != rune('w') { + goto l253 + } + position++ + goto l252 + l253: + position, tokenIndex = position252, tokenIndex252 + if buffer[position] != rune('_') { + goto l254 + } + position++ + if buffer[position] != rune('c') { + goto l254 + } + position++ + if buffer[position] != rune('o') { + goto l254 + } + position++ + if buffer[position] != rune('l') { + goto l254 + } + position++ + goto l252 + l254: + position, tokenIndex = position252, tokenIndex252 + if buffer[position] != rune('_') { + goto l255 + } + position++ + if buffer[position] != rune('s') { + goto l255 + } + position++ + if buffer[position] != rune('t') { + goto l255 + } + position++ + if buffer[position] != rune('a') { + goto l255 + } + position++ + if buffer[position] != rune('r') { + goto l255 + } + position++ + if buffer[position] != rune('t') { + goto l255 + } + position++ + goto l252 + l255: + position, tokenIndex = position252, tokenIndex252 + if buffer[position] != rune('_') { + goto l256 + } + position++ + if buffer[position] != rune('e') { + goto l256 + } + position++ + if buffer[position] != rune('n') { + goto l256 + } + position++ + if buffer[position] != rune('d') { + goto l256 + } + position++ + goto l252 + l256: + position, tokenIndex = position252, tokenIndex252 + if buffer[position] != rune('_') { + goto l257 + } + position++ + if buffer[position] != rune('t') { + goto l257 + } + position++ + if buffer[position] != rune('i') { + goto l257 + } + position++ + if buffer[position] != rune('m') { + goto l257 + } + position++ + if buffer[position] != rune('e') { + goto l257 + } + position++ + if buffer[position] != rune('s') { + goto l257 + } + position++ + if buffer[position] != rune('t') { + goto l257 + } + position++ + if buffer[position] != rune('a') { + goto l257 + } + position++ + if buffer[position] != rune('m') { + goto l257 + } + position++ + if buffer[position] != rune('p') { + goto l257 + } + position++ + goto l252 + l257: + position, tokenIndex = position252, tokenIndex252 + if buffer[position] != rune('_') { + goto l246 + } + position++ + if buffer[position] != rune('f') { + goto l246 + } + position++ + if buffer[position] != rune('i') { + goto l246 + } + position++ + if buffer[position] != rune('e') { + goto l246 + } + position++ + if buffer[position] != rune('l') { + goto l246 + } + position++ + if buffer[position] != rune('d') { + goto l246 + } + position++ + } + l252: + add(rulereserved, position251) + } + } + l249: + add(rulePegText, position248) + } + { + add(ruleAction49, position) + } + add(rulefield, position247) + } + return true + l246: + position, tokenIndex = position246, tokenIndex246 + return false + }, + /* 17 reserved <- <(('_' 'r' 'o' 'w') / ('_' 'c' 'o' 'l') / ('_' 's' 't' 'a' 'r' 't') / ('_' 'e' 'n' 'd') / ('_' 't' 'i' 'm' 'e' 's' 't' 'a' 'm' 'p') / ('_' 'f' 'i' 'e' 'l' 'd'))> */ + nil, + /* 18 posfield <- <( Action50)> */ + func() bool { + position260, tokenIndex260 := position, tokenIndex + { + position261 := position + { + position262 := position + if !_rules[rulefieldExpr]() { + goto l260 + } + add(rulePegText, position262) + } + { + add(ruleAction50, position) + } + add(ruleposfield, position261) + } + return true + l260: + position, tokenIndex = position260, tokenIndex260 + return false + }, + /* 19 uint <- <(([1-9] [0-9]*) / '0')> */ + func() bool { + position264, tokenIndex264 := position, tokenIndex + { + position265 := position + { + position266, tokenIndex266 := position, tokenIndex + if c := buffer[position]; c < rune('1') || c > rune('9') { + goto l267 + } + position++ + l268: + { + position269, tokenIndex269 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l269 + } + position++ + goto l268 + l269: + position, tokenIndex = position269, tokenIndex269 + } + goto l266 + l267: + position, tokenIndex = position266, tokenIndex266 + if buffer[position] != rune('0') { + goto l264 + } + position++ + } + l266: + add(ruleuint, position265) + } + return true + l264: + position, tokenIndex = position264, tokenIndex264 + return false + }, + /* 20 col <- <(( Action51) / (<('\'' singlequotedstring '\'')> Action52) / (<('"' doublequotedstring '"')> Action53))> */ + func() bool { + position270, tokenIndex270 := position, tokenIndex + { + position271 := position + { + position272, tokenIndex272 := position, tokenIndex + { + position274 := position + if !_rules[ruleuint]() { + goto l273 + } + add(rulePegText, position274) + } + { + add(ruleAction51, position) + } + goto l272 + l273: + position, tokenIndex = position272, tokenIndex272 + { + position277 := position + if buffer[position] != rune('\'') { + goto l276 + } + position++ + if !_rules[rulesinglequotedstring]() { + goto l276 + } + if buffer[position] != rune('\'') { + goto l276 + } + position++ + add(rulePegText, position277) + } + { + add(ruleAction52, position) + } + goto l272 + l276: + position, tokenIndex = position272, tokenIndex272 + { + position279 := position + if buffer[position] != rune('"') { + goto l270 + } + position++ + if !_rules[ruledoublequotedstring]() { + goto l270 + } + if buffer[position] != rune('"') { + goto l270 + } + position++ + add(rulePegText, position279) + } + { + add(ruleAction53, position) + } + } + l272: + add(rulecol, position271) + } + return true + l270: + position, tokenIndex = position270, tokenIndex270 + return false + }, + /* 21 row <- <(( Action54) / (<('\'' singlequotedstring '\'')> Action55) / (<('"' doublequotedstring '"')> Action56))> */ + nil, + /* 22 open <- <('(' sp)> */ + func() bool { + position282, tokenIndex282 := position, tokenIndex + { + position283 := position + if buffer[position] != rune('(') { + goto l282 + } + position++ + if !_rules[rulesp]() { + goto l282 + } + add(ruleopen, position283) + } + return true + l282: + position, tokenIndex = position282, tokenIndex282 + return false + }, + /* 23 close <- <(')' sp)> */ + func() bool { + position284, tokenIndex284 := position, tokenIndex + { + position285 := position + if buffer[position] != rune(')') { + goto l284 + } + position++ + if !_rules[rulesp]() { + goto l284 + } + add(ruleclose, position285) + } + return true + l284: + position, tokenIndex = position284, tokenIndex284 + return false + }, + /* 24 sp <- <(' ' / '\t' / '\n')*> */ + func() bool { + { + position287 := position + l288: + { + position289, tokenIndex289 := position, tokenIndex + { + position290, tokenIndex290 := position, tokenIndex + if buffer[position] != rune(' ') { goto l291 } position++ + goto l290 + l291: + position, tokenIndex = position290, tokenIndex290 + if buffer[position] != rune('\t') { + goto l292 + } + position++ + goto l290 + l292: + position, tokenIndex = position290, tokenIndex290 + if buffer[position] != rune('\n') { + goto l289 + } + position++ } - l292: - goto l290 - l291: - position, tokenIndex = position291, tokenIndex291 + l290: + goto l288 + l289: + position, tokenIndex = position289, tokenIndex289 } - add(rulefieldExpr, position286) + add(rulesp, position287) } return true - l285: - position, tokenIndex = position285, tokenIndex285 + }, + /* 25 comma <- <(sp ',' sp)> */ + func() bool { + position293, tokenIndex293 := position, tokenIndex + { + position294 := position + if !_rules[rulesp]() { + goto l293 + } + if buffer[position] != rune(',') { + goto l293 + } + position++ + if !_rules[rulesp]() { + goto l293 + } + add(rulecomma, position294) + } + return true + l293: + position, tokenIndex = position293, tokenIndex293 return false }, - /* 25 field <- <(<(fieldExpr / reserved)> Action53)> */ + /* 26 lbrack <- <('[' sp)> */ + nil, + /* 27 rbrack <- <(sp ']' sp)> */ + nil, + /* 28 IDENT <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / [0-9])*)> */ func() bool { position297, tokenIndex297 := position, tokenIndex { position298 := position { - position299 := position - { - position300, tokenIndex300 := position, tokenIndex - if !_rules[rulefieldExpr]() { - goto l301 - } + position299, tokenIndex299 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { goto l300 - l301: - position, tokenIndex = position300, tokenIndex300 - { - position302 := position - { - position303, tokenIndex303 := position, tokenIndex - if buffer[position] != rune('_') { - goto l304 - } - position++ - if buffer[position] != rune('r') { - goto l304 - } - position++ - if buffer[position] != rune('o') { - goto l304 - } - position++ - if buffer[position] != rune('w') { - goto l304 - } - position++ - goto l303 - l304: - position, tokenIndex = position303, tokenIndex303 - if buffer[position] != rune('_') { - goto l305 - } - position++ - if buffer[position] != rune('c') { - goto l305 - } - position++ - if buffer[position] != rune('o') { - goto l305 - } - position++ - if buffer[position] != rune('l') { - goto l305 - } - position++ - goto l303 - l305: - position, tokenIndex = position303, tokenIndex303 - if buffer[position] != rune('_') { - goto l306 - } - position++ - if buffer[position] != rune('s') { - goto l306 - } - position++ - if buffer[position] != rune('t') { - goto l306 - } - position++ - if buffer[position] != rune('a') { - goto l306 - } - position++ - if buffer[position] != rune('r') { - goto l306 - } - position++ - if buffer[position] != rune('t') { - goto l306 - } - position++ - goto l303 - l306: - position, tokenIndex = position303, tokenIndex303 - if buffer[position] != rune('_') { - goto l307 - } - position++ - if buffer[position] != rune('e') { - goto l307 - } - position++ - if buffer[position] != rune('n') { - goto l307 - } - position++ - if buffer[position] != rune('d') { - goto l307 - } - position++ - goto l303 - l307: - position, tokenIndex = position303, tokenIndex303 - if buffer[position] != rune('_') { - goto l308 - } - position++ - if buffer[position] != rune('t') { - goto l308 - } - position++ - if buffer[position] != rune('i') { - goto l308 - } - position++ - if buffer[position] != rune('m') { - goto l308 - } - position++ - if buffer[position] != rune('e') { - goto l308 - } - position++ - if buffer[position] != rune('s') { - goto l308 - } - position++ - if buffer[position] != rune('t') { - goto l308 - } - position++ - if buffer[position] != rune('a') { - goto l308 - } - position++ - if buffer[position] != rune('m') { - goto l308 - } - position++ - if buffer[position] != rune('p') { - goto l308 - } - position++ - goto l303 - l308: - position, tokenIndex = position303, tokenIndex303 - if buffer[position] != rune('_') { - goto l297 - } - position++ - if buffer[position] != rune('f') { - goto l297 - } - position++ - if buffer[position] != rune('i') { - goto l297 - } - position++ - if buffer[position] != rune('e') { - goto l297 - } - position++ - if buffer[position] != rune('l') { - goto l297 - } - position++ - if buffer[position] != rune('d') { - goto l297 - } - position++ - } - l303: - add(rulereserved, position302) - } } + position++ + goto l299 l300: - add(rulePegText, position299) + position, tokenIndex = position299, tokenIndex299 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l297 + } + position++ } + l299: + l301: { - add(ruleAction53, position) + position302, tokenIndex302 := position, tokenIndex + { + position303, tokenIndex303 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l304 + } + position++ + goto l303 + l304: + position, tokenIndex = position303, tokenIndex303 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l305 + } + position++ + goto l303 + l305: + position, tokenIndex = position303, tokenIndex303 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l302 + } + position++ + } + l303: + goto l301 + l302: + position, tokenIndex = position302, tokenIndex302 } - add(rulefield, position298) + add(ruleIDENT, position298) } return true l297: position, tokenIndex = position297, tokenIndex297 return false }, - /* 26 reserved <- <(('_' 'r' 'o' 'w') / ('_' 'c' 'o' 'l') / ('_' 's' 't' 'a' 'r' 't') / ('_' 'e' 'n' 'd') / ('_' 't' 'i' 'm' 'e' 's' 't' 'a' 'm' 'p') / ('_' 'f' 'i' 'e' 'l' 'd'))> */ - nil, - /* 27 posfield <- <( Action54)> */ + /* 29 timestampbasicfmt <- <([0-9] [0-9] [0-9] [0-9] '-' ('0' / '1') [0-9] '-' [0-3] [0-9] 'T' [0-9] [0-9] ':' [0-9] [0-9])> */ func() bool { - position311, tokenIndex311 := position, tokenIndex + position306, tokenIndex306 := position, tokenIndex { - position312 := position - { - position313 := position - if !_rules[rulefieldExpr]() { - goto l311 - } - add(rulePegText, position313) - } - { - add(ruleAction54, position) - } - add(ruleposfield, position312) - } - return true - l311: - position, tokenIndex = position311, tokenIndex311 - return false - }, - /* 28 uint <- <(([1-9] [0-9]*) / '0')> */ - func() bool { - position315, tokenIndex315 := position, tokenIndex - { - position316 := position - { - position317, tokenIndex317 := position, tokenIndex - if c := buffer[position]; c < rune('1') || c > rune('9') { - goto l318 - } - position++ - l319: - { - position320, tokenIndex320 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l320 - } - position++ - goto l319 - l320: - position, tokenIndex = position320, tokenIndex320 - } - goto l317 - l318: - position, tokenIndex = position317, tokenIndex317 - if buffer[position] != rune('0') { - goto l315 - } - position++ - } - l317: - add(ruleuint, position316) - } - return true - l315: - position, tokenIndex = position315, tokenIndex315 - return false - }, - /* 29 col <- <(( Action55) / (<('\'' singlequotedstring '\'')> Action56) / (<('"' doublequotedstring '"')> Action57))> */ - func() bool { - position321, tokenIndex321 := position, tokenIndex - { - position322 := position - { - position323, tokenIndex323 := position, tokenIndex - { - position325 := position - if !_rules[ruleuint]() { - goto l324 - } - add(rulePegText, position325) - } - { - add(ruleAction55, position) - } - goto l323 - l324: - position, tokenIndex = position323, tokenIndex323 - { - position328 := position - if buffer[position] != rune('\'') { - goto l327 - } - position++ - if !_rules[rulesinglequotedstring]() { - goto l327 - } - if buffer[position] != rune('\'') { - goto l327 - } - position++ - add(rulePegText, position328) - } - { - add(ruleAction56, position) - } - goto l323 - l327: - position, tokenIndex = position323, tokenIndex323 - { - position330 := position - if buffer[position] != rune('"') { - goto l321 - } - position++ - if !_rules[ruledoublequotedstring]() { - goto l321 - } - if buffer[position] != rune('"') { - goto l321 - } - position++ - add(rulePegText, position330) - } - { - add(ruleAction57, position) - } - } - l323: - add(rulecol, position322) - } - return true - l321: - position, tokenIndex = position321, tokenIndex321 - return false - }, - /* 30 row <- <(( Action58) / (<('\'' singlequotedstring '\'')> Action59) / (<('"' doublequotedstring '"')> Action60))> */ - nil, - /* 31 open <- <('(' sp)> */ - func() bool { - position333, tokenIndex333 := position, tokenIndex - { - position334 := position - if buffer[position] != rune('(') { - goto l333 - } - position++ - if !_rules[rulesp]() { - goto l333 - } - add(ruleopen, position334) - } - return true - l333: - position, tokenIndex = position333, tokenIndex333 - return false - }, - /* 32 close <- <(')' sp)> */ - func() bool { - position335, tokenIndex335 := position, tokenIndex - { - position336 := position - if buffer[position] != rune(')') { - goto l335 - } - position++ - if !_rules[rulesp]() { - goto l335 - } - add(ruleclose, position336) - } - return true - l335: - position, tokenIndex = position335, tokenIndex335 - return false - }, - /* 33 sp <- <(' ' / '\t' / '\n')*> */ - func() bool { - { - position338 := position - l339: - { - position340, tokenIndex340 := position, tokenIndex - { - position341, tokenIndex341 := position, tokenIndex - if buffer[position] != rune(' ') { - goto l342 - } - position++ - goto l341 - l342: - position, tokenIndex = position341, tokenIndex341 - if buffer[position] != rune('\t') { - goto l343 - } - position++ - goto l341 - l343: - position, tokenIndex = position341, tokenIndex341 - if buffer[position] != rune('\n') { - goto l340 - } - position++ - } - l341: - goto l339 - l340: - position, tokenIndex = position340, tokenIndex340 - } - add(rulesp, position338) - } - return true - }, - /* 34 comma <- <(sp ',' sp)> */ - func() bool { - position344, tokenIndex344 := position, tokenIndex - { - position345 := position - if !_rules[rulesp]() { - goto l344 - } - if buffer[position] != rune(',') { - goto l344 - } - position++ - if !_rules[rulesp]() { - goto l344 - } - add(rulecomma, position345) - } - return true - l344: - position, tokenIndex = position344, tokenIndex344 - return false - }, - /* 35 lbrack <- <('[' sp)> */ - func() bool { - position346, tokenIndex346 := position, tokenIndex - { - position347 := position - if buffer[position] != rune('[') { - goto l346 - } - position++ - if !_rules[rulesp]() { - goto l346 - } - add(rulelbrack, position347) - } - return true - l346: - position, tokenIndex = position346, tokenIndex346 - return false - }, - /* 36 rbrack <- <(sp ']' sp)> */ - func() bool { - position348, tokenIndex348 := position, tokenIndex - { - position349 := position - if !_rules[rulesp]() { - goto l348 - } - if buffer[position] != rune(']') { - goto l348 - } - position++ - if !_rules[rulesp]() { - goto l348 - } - add(rulerbrack, position349) - } - return true - l348: - position, tokenIndex = position348, tokenIndex348 - return false - }, - /* 37 IDENT <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / [0-9])*)> */ - func() bool { - position350, tokenIndex350 := position, tokenIndex - { - position351 := position - { - position352, tokenIndex352 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l353 - } - position++ - goto l352 - l353: - position, tokenIndex = position352, tokenIndex352 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l350 - } - position++ - } - l352: - l354: - { - position355, tokenIndex355 := position, tokenIndex - { - position356, tokenIndex356 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l357 - } - position++ - goto l356 - l357: - position, tokenIndex = position356, tokenIndex356 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l358 - } - position++ - goto l356 - l358: - position, tokenIndex = position356, tokenIndex356 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l355 - } - position++ - } - l356: - goto l354 - l355: - position, tokenIndex = position355, tokenIndex355 - } - add(ruleIDENT, position351) - } - return true - l350: - position, tokenIndex = position350, tokenIndex350 - return false - }, - /* 38 timestampbasicfmt <- <([0-9] [0-9] [0-9] [0-9] '-' ('0' / '1') [0-9] '-' [0-3] [0-9] 'T' [0-9] [0-9] ':' [0-9] [0-9])> */ - func() bool { - position359, tokenIndex359 := position, tokenIndex - { - position360 := position + position307 := position if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if buffer[position] != rune('-') { - goto l359 + goto l306 } position++ { - position361, tokenIndex361 := position, tokenIndex + position308, tokenIndex308 := position, tokenIndex if buffer[position] != rune('0') { - goto l362 + goto l309 } position++ - goto l361 - l362: - position, tokenIndex = position361, tokenIndex361 + goto l308 + l309: + position, tokenIndex = position308, tokenIndex308 if buffer[position] != rune('1') { - goto l359 + goto l306 } position++ } - l361: + l308: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if buffer[position] != rune('-') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('3') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if buffer[position] != rune('T') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if buffer[position] != rune(':') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l359 + goto l306 } position++ - add(ruletimestampbasicfmt, position360) + add(ruletimestampbasicfmt, position307) } return true - l359: - position, tokenIndex = position359, tokenIndex359 + l306: + position, tokenIndex = position306, tokenIndex306 return false }, - /* 39 timestampfmt <- <(('"' '"') / ('\'' '\'') / )> */ + /* 30 timestampfmt <- <(('"' '"') / ('\'' '\'') / )> */ func() bool { - position363, tokenIndex363 := position, tokenIndex + position310, tokenIndex310 := position, tokenIndex { - position364 := position + position311 := position { - position365, tokenIndex365 := position, tokenIndex + position312, tokenIndex312 := position, tokenIndex if buffer[position] != rune('"') { - goto l366 + goto l313 } position++ { - position367 := position + position314 := position if !_rules[ruletimestampbasicfmt]() { - goto l366 + goto l313 } - add(rulePegText, position367) + add(rulePegText, position314) } if buffer[position] != rune('"') { - goto l366 + goto l313 } position++ - goto l365 - l366: - position, tokenIndex = position365, tokenIndex365 + goto l312 + l313: + position, tokenIndex = position312, tokenIndex312 if buffer[position] != rune('\'') { - goto l368 + goto l315 } position++ { - position369 := position + position316 := position if !_rules[ruletimestampbasicfmt]() { - goto l368 + goto l315 } - add(rulePegText, position369) + add(rulePegText, position316) } if buffer[position] != rune('\'') { - goto l368 + goto l315 } position++ - goto l365 - l368: - position, tokenIndex = position365, tokenIndex365 + goto l312 + l315: + position, tokenIndex = position312, tokenIndex312 { - position370 := position + position317 := position if !_rules[ruletimestampbasicfmt]() { - goto l363 + goto l310 } - add(rulePegText, position370) + add(rulePegText, position317) } } - l365: - add(ruletimestampfmt, position364) + l312: + add(ruletimestampfmt, position311) } return true - l363: - position, tokenIndex = position363, tokenIndex363 + l310: + position, tokenIndex = position310, tokenIndex310 return false }, - /* 40 timestamp <- <( Action61)> */ + /* 31 timestamp <- <( Action57)> */ nil, - /* 42 Action0 <- <{p.startCall("Set")}> */ + /* 33 Action0 <- <{p.startCall("Set")}> */ nil, - /* 43 Action1 <- <{p.endCall()}> */ + /* 34 Action1 <- <{p.endCall()}> */ nil, - /* 44 Action2 <- <{p.startCall("SetRowAttrs")}> */ + /* 35 Action2 <- <{p.startCall("SetRowAttrs")}> */ nil, - /* 45 Action3 <- <{p.endCall()}> */ + /* 36 Action3 <- <{p.endCall()}> */ nil, - /* 46 Action4 <- <{p.startCall("SetColumnAttrs")}> */ + /* 37 Action4 <- <{p.startCall("SetColumnAttrs")}> */ nil, - /* 47 Action5 <- <{p.endCall()}> */ + /* 38 Action5 <- <{p.endCall()}> */ nil, - /* 48 Action6 <- <{p.startCall("Clear")}> */ + /* 39 Action6 <- <{p.startCall("Clear")}> */ nil, - /* 49 Action7 <- <{p.endCall()}> */ + /* 40 Action7 <- <{p.endCall()}> */ nil, - /* 50 Action8 <- <{p.startCall("ClearRow")}> */ + /* 41 Action8 <- <{p.startCall("ClearRow")}> */ nil, - /* 51 Action9 <- <{p.endCall()}> */ + /* 42 Action9 <- <{p.endCall()}> */ nil, - /* 52 Action10 <- <{p.startCall("Store")}> */ + /* 43 Action10 <- <{p.startCall("Store")}> */ nil, - /* 53 Action11 <- <{p.endCall()}> */ + /* 44 Action11 <- <{p.endCall()}> */ nil, - /* 54 Action12 <- <{p.startCall("TopN")}> */ + /* 45 Action12 <- <{p.startCall("TopN")}> */ nil, - /* 55 Action13 <- <{p.endCall()}> */ + /* 46 Action13 <- <{p.endCall()}> */ nil, - /* 56 Action14 <- <{p.startCall("Rows")}> */ + /* 47 Action14 <- <{p.startCall("Rows")}> */ nil, - /* 57 Action15 <- <{p.endCall()}> */ + /* 48 Action15 <- <{p.endCall()}> */ nil, - /* 58 Action16 <- <{p.startCall("Range")}> */ + /* 49 Action16 <- <{p.startCall("Range")}> */ nil, - /* 59 Action17 <- <{p.addField("from")}> */ + /* 50 Action17 <- <{p.addField("from")}> */ nil, - /* 60 Action18 <- <{p.addVal(text)}> */ + /* 51 Action18 <- <{p.addVal(text)}> */ nil, - /* 61 Action19 <- <{p.addField("to")}> */ + /* 52 Action19 <- <{p.addField("to")}> */ nil, - /* 62 Action20 <- <{p.addVal(text)}> */ + /* 53 Action20 <- <{p.addVal(text)}> */ nil, - /* 63 Action21 <- <{p.endCall()}> */ + /* 54 Action21 <- <{p.endCall()}> */ nil, nil, - /* 65 Action22 <- <{ p.startCall(text ) }> */ + /* 56 Action22 <- <{ p.startCall(text ) }> */ nil, - /* 66 Action23 <- <{ p.endCall() }> */ + /* 57 Action23 <- <{ p.endCall() }> */ nil, - /* 67 Action24 <- <{ p.addBTWN() }> */ + /* 58 Action24 <- <{ p.addBTWN() }> */ nil, - /* 68 Action25 <- <{ p.addLTE() }> */ + /* 59 Action25 <- <{ p.addLTE() }> */ nil, - /* 69 Action26 <- <{ p.addGTE() }> */ + /* 60 Action26 <- <{ p.addGTE() }> */ nil, - /* 70 Action27 <- <{ p.addEQ() }> */ + /* 61 Action27 <- <{ p.addEQ() }> */ nil, - /* 71 Action28 <- <{ p.addNEQ() }> */ + /* 62 Action28 <- <{ p.addNEQ() }> */ nil, - /* 72 Action29 <- <{ p.addLT() }> */ + /* 63 Action29 <- <{ p.addLT() }> */ nil, - /* 73 Action30 <- <{ p.addGT() }> */ + /* 64 Action30 <- <{ p.addGT() }> */ nil, - /* 74 Action31 <- <{p.startConditional()}> */ + /* 65 Action31 <- <{p.startConditional()}> */ nil, - /* 75 Action32 <- <{p.endConditional()}> */ + /* 66 Action32 <- <{p.endConditional()}> */ nil, - /* 76 Action33 <- <{p.condAdd(text)}> */ + /* 67 Action33 <- <{p.condAdd(text)}> */ nil, - /* 77 Action34 <- <{p.condAdd(text)}> */ + /* 68 Action34 <- <{p.condAdd(text)}> */ nil, - /* 78 Action35 <- <{p.condAdd(text)}> */ + /* 69 Action35 <- <{p.condAdd(text)}> */ nil, - /* 79 Action36 <- <{ p.startList() }> */ + /* 70 Action36 <- <{ p.startList() }> */ nil, - /* 80 Action37 <- <{ p.endList() }> */ + /* 71 Action37 <- <{ p.endList() }> */ nil, - /* 81 Action38 <- <{ p.startList() }> */ + /* 72 Action38 <- <{ p.addVal(nil) }> */ nil, - /* 82 Action39 <- <{ p.endList() }> */ + /* 73 Action39 <- <{ p.addVal(true) }> */ nil, - /* 83 Action40 <- <{ p.addVal(nil) }> */ + /* 74 Action40 <- <{ p.addVal(false) }> */ nil, - /* 84 Action41 <- <{ p.addVal(true) }> */ + /* 75 Action41 <- <{ p.addVal(text) }> */ nil, - /* 85 Action42 <- <{ p.addVal(false) }> */ + /* 76 Action42 <- <{ p.addNumVal(text) }> */ nil, - /* 86 Action43 <- <{ p.addVal(text) }> */ + /* 77 Action43 <- <{ p.addNumVal(text) }> */ nil, - /* 87 Action44 <- <{ p.startCall(text) }> */ + /* 78 Action44 <- <{ p.startCall(text) }> */ nil, - /* 88 Action45 <- <{ p.addVal(p.endCall()) }> */ + /* 79 Action45 <- <{ p.addVal(p.endCall()) }> */ nil, - /* 89 Action46 <- <{ p.addVal(text) }> */ + /* 80 Action46 <- <{ p.addVal(text) }> */ nil, - /* 90 Action47 <- <{ p.addVal(text) }> */ + /* 81 Action47 <- <{ p.addVal(text) }> */ nil, - /* 91 Action48 <- <{ p.addVal(text) }> */ + /* 82 Action48 <- <{ p.addVal(text) }> */ nil, - /* 92 Action49 <- <{ p.addNumVal(text, true) }> */ + /* 83 Action49 <- <{ p.addField(text) }> */ nil, - /* 93 Action50 <- <{ p.addNumVal(text, true) }> */ + /* 84 Action50 <- <{ p.addPosStr("_field", text) }> */ nil, - /* 94 Action51 <- <{ p.addNumVal(text, false) }> */ + /* 85 Action51 <- <{p.addPosNum("_col", text)}> */ nil, - /* 95 Action52 <- <{ p.addNumVal(text, false) }> */ + /* 86 Action52 <- <{p.addPosStr("_col", text)}> */ nil, - /* 96 Action53 <- <{ p.addField(text) }> */ + /* 87 Action53 <- <{p.addPosStr("_col", text)}> */ nil, - /* 97 Action54 <- <{ p.addPosStr("_field", text) }> */ + /* 88 Action54 <- <{p.addPosNum("_row", text)}> */ nil, - /* 98 Action55 <- <{p.addPosNum("_col", text)}> */ + /* 89 Action55 <- <{p.addPosStr("_row", text)}> */ nil, - /* 99 Action56 <- <{p.addPosStr("_col", text)}> */ + /* 90 Action56 <- <{p.addPosStr("_row", text)}> */ nil, - /* 100 Action57 <- <{p.addPosStr("_col", text)}> */ - nil, - /* 101 Action58 <- <{p.addPosNum("_row", text)}> */ - nil, - /* 102 Action59 <- <{p.addPosStr("_row", text)}> */ - nil, - /* 103 Action60 <- <{p.addPosStr("_row", text)}> */ - nil, - /* 104 Action61 <- <{p.addPosStr("_timestamp", text)}> */ + /* 91 Action57 <- <{p.addPosStr("_timestamp", text)}> */ nil, } p.rules = _rules From 28d18920b98a946efcb1bfcfe065df1853791f8a Mon Sep 17 00:00:00 2001 From: Seebs Date: Wed, 7 Oct 2020 18:05:19 -0500 Subject: [PATCH 4/7] Make PQL case-insensitive about call names. Use "" strings for fixed string names. In startCall(), look up the lowercase conversion of a call name in a table mapping all-lowercase representations to canonical case, so we don't have to chase down everyplace in the rest of the code base that assumes "Row" is capitalized exactly like that. --- pql/ast.go | 19 + pql/parser_test.go | 17 + pql/pql.peg | 20 +- pql/pql.peg.go | 2793 +++++++++++++++++++++++++++----------------- 4 files changed, 1767 insertions(+), 1082 deletions(-) diff --git a/pql/ast.go b/pql/ast.go index 49a5e5e68..04ce5aed3 100644 --- a/pql/ast.go +++ b/pql/ast.go @@ -33,6 +33,10 @@ type Query struct { } func (q *Query) startCall(name string) { + // Coerce every name into a canonical form if we know of one. + if canon, ok := canonicalCaps[strings.ToLower(name)]; ok { + name = canon + } newCall := &Call{Name: name} q.callStack = append(q.callStack, &callStackElem{call: newCall}) @@ -478,6 +482,21 @@ var callInfoByFunc = map[string]callInfo{ }, } +// We want to allow case-insensitive names, but we want to continue using +// friendly easy-to-read names like "SetRowAttrs", not "setrowattrs". So, +// we make a map; put in a ToLower() string, get back the canonical +// capitalization. This might not have seemed like the best strategy if we +// didn't already have so much code relying on the exact strings. +var canonicalCaps = makeCanonicalMap(callInfoByFunc) + +func makeCanonicalMap(from map[string]callInfo) map[string]string { + m := make(map[string]string, len(from)) + for k := range from { + m[strings.ToLower(k)] = k + } + return m +} + // CheckCallInfo tries to validate that arguments are correct and valid for the // given call. It does not guarantee checking all possible errors; for instance, // if an argument is a field name, CheckCallInfo can't validate that the field diff --git a/pql/parser_test.go b/pql/parser_test.go index d2ee45748..3e88d4b9f 100644 --- a/pql/parser_test.go +++ b/pql/parser_test.go @@ -193,6 +193,23 @@ func TestParser_Parse(t *testing.T) { t.Fatalf("unexpected call: %#v", q.Calls[0]) } }) + + t.Run("MixedCase", func(t *testing.T) { + q, err := pql.ParseString(`roW(x=3)`) + if err != nil { + t.Fatal(err) + } else if !reflect.DeepEqual(q.Calls[0], + &pql.Call{ + Name: "Row", + Args: map[string]interface{}{ + "x": int64(3), + }, + }, + ) { + t.Fatalf("unexpected call: %#v", q.Calls[0]) + } + }) + } func TestUnquote(t *testing.T) { diff --git a/pql/pql.peg b/pql/pql.peg index 501367ff3..39b9127d0 100644 --- a/pql/pql.peg +++ b/pql/pql.peg @@ -6,16 +6,16 @@ type PQL Peg { Calls <- sp (Call sp)* !. -Call <- 'Set' {p.startCall("Set")} open col comma args (comma timestamp)? close {p.endCall()} - / 'SetRowAttrs' {p.startCall("SetRowAttrs")} open posfield comma row comma args close {p.endCall()} - / 'SetColumnAttrs' {p.startCall("SetColumnAttrs")} open col comma args close {p.endCall()} - / 'Clear' {p.startCall("Clear")} open col comma args close {p.endCall()} - / 'ClearRow' {p.startCall("ClearRow")} open arg close {p.endCall()} - / 'Store' {p.startCall("Store")} open Call comma arg close {p.endCall()} - / 'TopN' {p.startCall("TopN")} open posfield (comma allargs)? close {p.endCall()} - / 'Rows' {p.startCall("Rows")} open posfield (comma allargs)? close {p.endCall()} - / 'Range' {p.startCall("Range")} open field sp '=' sp value comma 'from='? {p.addField("from")} timestampfmt {p.addVal(text)} comma 'to='? sp {p.addField("to")} timestampfmt {p.addVal(text)} close {p.endCall()} - / < IDENT > { p.startCall(text ) } open allargs comma? close { p.endCall() } +Call <- "Set" {p.startCall("Set")} open col comma args (comma timestamp)? close {p.endCall()} + / "SetRowAttrs" {p.startCall("SetRowAttrs")} open posfield comma row comma args close {p.endCall()} + / "SetColumnAttrs" {p.startCall("SetColumnAttrs")} open col comma args close {p.endCall()} + / "Clear" {p.startCall("Clear")} open col comma args close {p.endCall()} + / "ClearRow" {p.startCall("ClearRow")} open arg close {p.endCall()} + / "Store" {p.startCall("Store")} open Call comma arg close {p.endCall()} + / "TopN" {p.startCall("TopN")} open posfield (comma allargs)? close {p.endCall()} + / "Rows" {p.startCall("Rows")} open posfield (comma allargs)? close {p.endCall()} + / "Range" {p.startCall("Range")} open field sp '=' sp value comma 'from='? {p.addField("from")} timestampfmt {p.addVal(text)} comma 'to='? sp {p.addField("to")} timestampfmt {p.addVal(text)} close {p.endCall()} + / < IDENT > { p.startCall(text) } open allargs comma? close { p.endCall() } allargs <- Call (comma Call)* (comma args)? / args / sp args <- arg (comma args)? sp arg <- field sp '=' sp value diff --git a/pql/pql.peg.go b/pql/pql.peg.go index 895de23c8..c0ebdf638 100644 --- a/pql/pql.peg.go +++ b/pql/pql.peg.go @@ -668,25 +668,58 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position, tokenIndex = position0, tokenIndex0 return false }, - /* 1 Call <- <(('S' 'e' 't' Action0 open col comma args (comma timestamp)? close Action1) / ('S' 'e' 't' 'R' 'o' 'w' 'A' 't' 't' 'r' 's' Action2 open posfield comma row comma args close Action3) / ('S' 'e' 't' 'C' 'o' 'l' 'u' 'm' 'n' 'A' 't' 't' 'r' 's' Action4 open col comma args close Action5) / ('C' 'l' 'e' 'a' 'r' Action6 open col comma args close Action7) / ('C' 'l' 'e' 'a' 'r' 'R' 'o' 'w' Action8 open arg close Action9) / ('S' 't' 'o' 'r' 'e' Action10 open Call comma arg close Action11) / ('T' 'o' 'p' 'N' Action12 open posfield (comma allargs)? close Action13) / ('R' 'o' 'w' 's' Action14 open posfield (comma allargs)? close Action15) / ('R' 'a' 'n' 'g' 'e' Action16 open field sp '=' sp value comma ('f' 'r' 'o' 'm' '=')? Action17 timestampfmt Action18 comma ('t' 'o' '=')? sp Action19 timestampfmt Action20 close Action21) / ( Action22 open allargs comma? close Action23))> */ + /* 1 Call <- <((('s' / 'S') ('e' / 'E') ('t' / 'T') Action0 open col comma args (comma timestamp)? close Action1) / (('s' / 'S') ('e' / 'E') ('t' / 'T') ('r' / 'R') ('o' / 'O') ('w' / 'W') ('a' / 'A') ('t' / 'T') ('t' / 'T') ('r' / 'R') ('s' / 'S') Action2 open posfield comma row comma args close Action3) / (('s' / 'S') ('e' / 'E') ('t' / 'T') ('c' / 'C') ('o' / 'O') ('l' / 'L') ('u' / 'U') ('m' / 'M') ('n' / 'N') ('a' / 'A') ('t' / 'T') ('t' / 'T') ('r' / 'R') ('s' / 'S') Action4 open col comma args close Action5) / (('c' / 'C') ('l' / 'L') ('e' / 'E') ('a' / 'A') ('r' / 'R') Action6 open col comma args close Action7) / (('c' / 'C') ('l' / 'L') ('e' / 'E') ('a' / 'A') ('r' / 'R') ('r' / 'R') ('o' / 'O') ('w' / 'W') Action8 open arg close Action9) / (('s' / 'S') ('t' / 'T') ('o' / 'O') ('r' / 'R') ('e' / 'E') Action10 open Call comma arg close Action11) / (('t' / 'T') ('o' / 'O') ('p' / 'P') ('n' / 'N') Action12 open posfield (comma allargs)? close Action13) / (('r' / 'R') ('o' / 'O') ('w' / 'W') ('s' / 'S') Action14 open posfield (comma allargs)? close Action15) / (('r' / 'R') ('a' / 'A') ('n' / 'N') ('g' / 'G') ('e' / 'E') Action16 open field sp '=' sp value comma ('f' 'r' 'o' 'm' '=')? Action17 timestampfmt Action18 comma ('t' 'o' '=')? sp Action19 timestampfmt Action20 close Action21) / ( Action22 open allargs comma? close Action23))> */ func() bool { position5, tokenIndex5 := position, tokenIndex { position6 := position { position7, tokenIndex7 := position, tokenIndex - if buffer[position] != rune('S') { - goto l8 + { + position9, tokenIndex9 := position, tokenIndex + if buffer[position] != rune('s') { + goto l10 + } + position++ + goto l9 + l10: + position, tokenIndex = position9, tokenIndex9 + if buffer[position] != rune('S') { + goto l8 + } + position++ } - position++ - if buffer[position] != rune('e') { - goto l8 + l9: + { + position11, tokenIndex11 := position, tokenIndex + if buffer[position] != rune('e') { + goto l12 + } + position++ + goto l11 + l12: + position, tokenIndex = position11, tokenIndex11 + if buffer[position] != rune('E') { + goto l8 + } + position++ } - position++ - if buffer[position] != rune('t') { - goto l8 + l11: + { + position13, tokenIndex13 := position, tokenIndex + if buffer[position] != rune('t') { + goto l14 + } + position++ + goto l13 + l14: + position, tokenIndex = position13, tokenIndex13 + if buffer[position] != rune('T') { + goto l8 + } + position++ } - position++ + l13: { add(ruleAction0, position) } @@ -703,29 +736,29 @@ func (p *PQL) Init(options ...func(*PQL) error) error { goto l8 } { - position10, tokenIndex10 := position, tokenIndex + position16, tokenIndex16 := position, tokenIndex if !_rules[rulecomma]() { - goto l10 + goto l16 } { - position12 := position + position18 := position { - position13 := position + position19 := position if !_rules[ruletimestampfmt]() { - goto l10 + goto l16 } - add(rulePegText, position13) + add(rulePegText, position19) } { add(ruleAction57, position) } - add(ruletimestamp, position12) + add(ruletimestamp, position18) } - goto l11 - l10: - position, tokenIndex = position10, tokenIndex10 + goto l17 + l16: + position, tokenIndex = position16, tokenIndex16 } - l11: + l17: if !_rules[ruleclose]() { goto l8 } @@ -735,579 +768,1195 @@ func (p *PQL) Init(options ...func(*PQL) error) error { goto l7 l8: position, tokenIndex = position7, tokenIndex7 - if buffer[position] != rune('S') { - goto l16 + { + position23, tokenIndex23 := position, tokenIndex + if buffer[position] != rune('s') { + goto l24 + } + position++ + goto l23 + l24: + position, tokenIndex = position23, tokenIndex23 + if buffer[position] != rune('S') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('e') { - goto l16 + l23: + { + position25, tokenIndex25 := position, tokenIndex + if buffer[position] != rune('e') { + goto l26 + } + position++ + goto l25 + l26: + position, tokenIndex = position25, tokenIndex25 + if buffer[position] != rune('E') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('t') { - goto l16 + l25: + { + position27, tokenIndex27 := position, tokenIndex + if buffer[position] != rune('t') { + goto l28 + } + position++ + goto l27 + l28: + position, tokenIndex = position27, tokenIndex27 + if buffer[position] != rune('T') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('R') { - goto l16 + l27: + { + position29, tokenIndex29 := position, tokenIndex + if buffer[position] != rune('r') { + goto l30 + } + position++ + goto l29 + l30: + position, tokenIndex = position29, tokenIndex29 + if buffer[position] != rune('R') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('o') { - goto l16 + l29: + { + position31, tokenIndex31 := position, tokenIndex + if buffer[position] != rune('o') { + goto l32 + } + position++ + goto l31 + l32: + position, tokenIndex = position31, tokenIndex31 + if buffer[position] != rune('O') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('w') { - goto l16 + l31: + { + position33, tokenIndex33 := position, tokenIndex + if buffer[position] != rune('w') { + goto l34 + } + position++ + goto l33 + l34: + position, tokenIndex = position33, tokenIndex33 + if buffer[position] != rune('W') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('A') { - goto l16 + l33: + { + position35, tokenIndex35 := position, tokenIndex + if buffer[position] != rune('a') { + goto l36 + } + position++ + goto l35 + l36: + position, tokenIndex = position35, tokenIndex35 + if buffer[position] != rune('A') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('t') { - goto l16 + l35: + { + position37, tokenIndex37 := position, tokenIndex + if buffer[position] != rune('t') { + goto l38 + } + position++ + goto l37 + l38: + position, tokenIndex = position37, tokenIndex37 + if buffer[position] != rune('T') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('t') { - goto l16 + l37: + { + position39, tokenIndex39 := position, tokenIndex + if buffer[position] != rune('t') { + goto l40 + } + position++ + goto l39 + l40: + position, tokenIndex = position39, tokenIndex39 + if buffer[position] != rune('T') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('r') { - goto l16 + l39: + { + position41, tokenIndex41 := position, tokenIndex + if buffer[position] != rune('r') { + goto l42 + } + position++ + goto l41 + l42: + position, tokenIndex = position41, tokenIndex41 + if buffer[position] != rune('R') { + goto l22 + } + position++ } - position++ - if buffer[position] != rune('s') { - goto l16 + l41: + { + position43, tokenIndex43 := position, tokenIndex + if buffer[position] != rune('s') { + goto l44 + } + position++ + goto l43 + l44: + position, tokenIndex = position43, tokenIndex43 + if buffer[position] != rune('S') { + goto l22 + } + position++ } - position++ + l43: { add(ruleAction2, position) } if !_rules[ruleopen]() { - goto l16 + goto l22 } if !_rules[ruleposfield]() { - goto l16 + goto l22 } if !_rules[rulecomma]() { - goto l16 + goto l22 } { - position18 := position + position46 := position { - position19, tokenIndex19 := position, tokenIndex + position47, tokenIndex47 := position, tokenIndex { - position21 := position + position49 := position if !_rules[ruleuint]() { - goto l20 + goto l48 } - add(rulePegText, position21) + add(rulePegText, position49) } { add(ruleAction54, position) } - goto l19 - l20: - position, tokenIndex = position19, tokenIndex19 + goto l47 + l48: + position, tokenIndex = position47, tokenIndex47 { - position24 := position + position52 := position if buffer[position] != rune('\'') { - goto l23 + goto l51 } position++ if !_rules[rulesinglequotedstring]() { - goto l23 + goto l51 } if buffer[position] != rune('\'') { - goto l23 + goto l51 } position++ - add(rulePegText, position24) + add(rulePegText, position52) } { add(ruleAction55, position) } - goto l19 - l23: - position, tokenIndex = position19, tokenIndex19 + goto l47 + l51: + position, tokenIndex = position47, tokenIndex47 { - position26 := position + position54 := position if buffer[position] != rune('"') { - goto l16 + goto l22 } position++ if !_rules[ruledoublequotedstring]() { - goto l16 + goto l22 } if buffer[position] != rune('"') { - goto l16 + goto l22 } position++ - add(rulePegText, position26) + add(rulePegText, position54) } { add(ruleAction56, position) } } - l19: - add(rulerow, position18) + l47: + add(rulerow, position46) } if !_rules[rulecomma]() { - goto l16 + goto l22 } if !_rules[ruleargs]() { - goto l16 + goto l22 } if !_rules[ruleclose]() { - goto l16 + goto l22 } { add(ruleAction3, position) } goto l7 - l16: + l22: position, tokenIndex = position7, tokenIndex7 - if buffer[position] != rune('S') { - goto l29 + { + position58, tokenIndex58 := position, tokenIndex + if buffer[position] != rune('s') { + goto l59 + } + position++ + goto l58 + l59: + position, tokenIndex = position58, tokenIndex58 + if buffer[position] != rune('S') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('e') { - goto l29 + l58: + { + position60, tokenIndex60 := position, tokenIndex + if buffer[position] != rune('e') { + goto l61 + } + position++ + goto l60 + l61: + position, tokenIndex = position60, tokenIndex60 + if buffer[position] != rune('E') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('t') { - goto l29 + l60: + { + position62, tokenIndex62 := position, tokenIndex + if buffer[position] != rune('t') { + goto l63 + } + position++ + goto l62 + l63: + position, tokenIndex = position62, tokenIndex62 + if buffer[position] != rune('T') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('C') { - goto l29 + l62: + { + position64, tokenIndex64 := position, tokenIndex + if buffer[position] != rune('c') { + goto l65 + } + position++ + goto l64 + l65: + position, tokenIndex = position64, tokenIndex64 + if buffer[position] != rune('C') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('o') { - goto l29 + l64: + { + position66, tokenIndex66 := position, tokenIndex + if buffer[position] != rune('o') { + goto l67 + } + position++ + goto l66 + l67: + position, tokenIndex = position66, tokenIndex66 + if buffer[position] != rune('O') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('l') { - goto l29 + l66: + { + position68, tokenIndex68 := position, tokenIndex + if buffer[position] != rune('l') { + goto l69 + } + position++ + goto l68 + l69: + position, tokenIndex = position68, tokenIndex68 + if buffer[position] != rune('L') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('u') { - goto l29 + l68: + { + position70, tokenIndex70 := position, tokenIndex + if buffer[position] != rune('u') { + goto l71 + } + position++ + goto l70 + l71: + position, tokenIndex = position70, tokenIndex70 + if buffer[position] != rune('U') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('m') { - goto l29 + l70: + { + position72, tokenIndex72 := position, tokenIndex + if buffer[position] != rune('m') { + goto l73 + } + position++ + goto l72 + l73: + position, tokenIndex = position72, tokenIndex72 + if buffer[position] != rune('M') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('n') { - goto l29 + l72: + { + position74, tokenIndex74 := position, tokenIndex + if buffer[position] != rune('n') { + goto l75 + } + position++ + goto l74 + l75: + position, tokenIndex = position74, tokenIndex74 + if buffer[position] != rune('N') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('A') { - goto l29 + l74: + { + position76, tokenIndex76 := position, tokenIndex + if buffer[position] != rune('a') { + goto l77 + } + position++ + goto l76 + l77: + position, tokenIndex = position76, tokenIndex76 + if buffer[position] != rune('A') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('t') { - goto l29 + l76: + { + position78, tokenIndex78 := position, tokenIndex + if buffer[position] != rune('t') { + goto l79 + } + position++ + goto l78 + l79: + position, tokenIndex = position78, tokenIndex78 + if buffer[position] != rune('T') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('t') { - goto l29 + l78: + { + position80, tokenIndex80 := position, tokenIndex + if buffer[position] != rune('t') { + goto l81 + } + position++ + goto l80 + l81: + position, tokenIndex = position80, tokenIndex80 + if buffer[position] != rune('T') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('r') { - goto l29 + l80: + { + position82, tokenIndex82 := position, tokenIndex + if buffer[position] != rune('r') { + goto l83 + } + position++ + goto l82 + l83: + position, tokenIndex = position82, tokenIndex82 + if buffer[position] != rune('R') { + goto l57 + } + position++ } - position++ - if buffer[position] != rune('s') { - goto l29 + l82: + { + position84, tokenIndex84 := position, tokenIndex + if buffer[position] != rune('s') { + goto l85 + } + position++ + goto l84 + l85: + position, tokenIndex = position84, tokenIndex84 + if buffer[position] != rune('S') { + goto l57 + } + position++ } - position++ + l84: { add(ruleAction4, position) } if !_rules[ruleopen]() { - goto l29 + goto l57 } if !_rules[rulecol]() { - goto l29 + goto l57 } if !_rules[rulecomma]() { - goto l29 + goto l57 } if !_rules[ruleargs]() { - goto l29 + goto l57 } if !_rules[ruleclose]() { - goto l29 + goto l57 } { add(ruleAction5, position) } goto l7 - l29: + l57: position, tokenIndex = position7, tokenIndex7 - if buffer[position] != rune('C') { - goto l32 + { + position89, tokenIndex89 := position, tokenIndex + if buffer[position] != rune('c') { + goto l90 + } + position++ + goto l89 + l90: + position, tokenIndex = position89, tokenIndex89 + if buffer[position] != rune('C') { + goto l88 + } + position++ } - position++ - if buffer[position] != rune('l') { - goto l32 + l89: + { + position91, tokenIndex91 := position, tokenIndex + if buffer[position] != rune('l') { + goto l92 + } + position++ + goto l91 + l92: + position, tokenIndex = position91, tokenIndex91 + if buffer[position] != rune('L') { + goto l88 + } + position++ } - position++ - if buffer[position] != rune('e') { - goto l32 + l91: + { + position93, tokenIndex93 := position, tokenIndex + if buffer[position] != rune('e') { + goto l94 + } + position++ + goto l93 + l94: + position, tokenIndex = position93, tokenIndex93 + if buffer[position] != rune('E') { + goto l88 + } + position++ } - position++ - if buffer[position] != rune('a') { - goto l32 + l93: + { + position95, tokenIndex95 := position, tokenIndex + if buffer[position] != rune('a') { + goto l96 + } + position++ + goto l95 + l96: + position, tokenIndex = position95, tokenIndex95 + if buffer[position] != rune('A') { + goto l88 + } + position++ } - position++ - if buffer[position] != rune('r') { - goto l32 + l95: + { + position97, tokenIndex97 := position, tokenIndex + if buffer[position] != rune('r') { + goto l98 + } + position++ + goto l97 + l98: + position, tokenIndex = position97, tokenIndex97 + if buffer[position] != rune('R') { + goto l88 + } + position++ } - position++ + l97: { add(ruleAction6, position) } if !_rules[ruleopen]() { - goto l32 + goto l88 } if !_rules[rulecol]() { - goto l32 + goto l88 } if !_rules[rulecomma]() { - goto l32 + goto l88 } if !_rules[ruleargs]() { - goto l32 + goto l88 } if !_rules[ruleclose]() { - goto l32 + goto l88 } { add(ruleAction7, position) } goto l7 - l32: + l88: position, tokenIndex = position7, tokenIndex7 - if buffer[position] != rune('C') { - goto l35 + { + position102, tokenIndex102 := position, tokenIndex + if buffer[position] != rune('c') { + goto l103 + } + position++ + goto l102 + l103: + position, tokenIndex = position102, tokenIndex102 + if buffer[position] != rune('C') { + goto l101 + } + position++ } - position++ - if buffer[position] != rune('l') { - goto l35 + l102: + { + position104, tokenIndex104 := position, tokenIndex + if buffer[position] != rune('l') { + goto l105 + } + position++ + goto l104 + l105: + position, tokenIndex = position104, tokenIndex104 + if buffer[position] != rune('L') { + goto l101 + } + position++ } - position++ - if buffer[position] != rune('e') { - goto l35 + l104: + { + position106, tokenIndex106 := position, tokenIndex + if buffer[position] != rune('e') { + goto l107 + } + position++ + goto l106 + l107: + position, tokenIndex = position106, tokenIndex106 + if buffer[position] != rune('E') { + goto l101 + } + position++ } - position++ - if buffer[position] != rune('a') { - goto l35 + l106: + { + position108, tokenIndex108 := position, tokenIndex + if buffer[position] != rune('a') { + goto l109 + } + position++ + goto l108 + l109: + position, tokenIndex = position108, tokenIndex108 + if buffer[position] != rune('A') { + goto l101 + } + position++ } - position++ - if buffer[position] != rune('r') { - goto l35 + l108: + { + position110, tokenIndex110 := position, tokenIndex + if buffer[position] != rune('r') { + goto l111 + } + position++ + goto l110 + l111: + position, tokenIndex = position110, tokenIndex110 + if buffer[position] != rune('R') { + goto l101 + } + position++ } - position++ - if buffer[position] != rune('R') { - goto l35 + l110: + { + position112, tokenIndex112 := position, tokenIndex + if buffer[position] != rune('r') { + goto l113 + } + position++ + goto l112 + l113: + position, tokenIndex = position112, tokenIndex112 + if buffer[position] != rune('R') { + goto l101 + } + position++ } - position++ - if buffer[position] != rune('o') { - goto l35 + l112: + { + position114, tokenIndex114 := position, tokenIndex + if buffer[position] != rune('o') { + goto l115 + } + position++ + goto l114 + l115: + position, tokenIndex = position114, tokenIndex114 + if buffer[position] != rune('O') { + goto l101 + } + position++ } - position++ - if buffer[position] != rune('w') { - goto l35 + l114: + { + position116, tokenIndex116 := position, tokenIndex + if buffer[position] != rune('w') { + goto l117 + } + position++ + goto l116 + l117: + position, tokenIndex = position116, tokenIndex116 + if buffer[position] != rune('W') { + goto l101 + } + position++ } - position++ + l116: { add(ruleAction8, position) } if !_rules[ruleopen]() { - goto l35 + goto l101 } if !_rules[rulearg]() { - goto l35 + goto l101 } if !_rules[ruleclose]() { - goto l35 + goto l101 } { add(ruleAction9, position) } goto l7 - l35: + l101: position, tokenIndex = position7, tokenIndex7 - if buffer[position] != rune('S') { - goto l38 + { + position121, tokenIndex121 := position, tokenIndex + if buffer[position] != rune('s') { + goto l122 + } + position++ + goto l121 + l122: + position, tokenIndex = position121, tokenIndex121 + if buffer[position] != rune('S') { + goto l120 + } + position++ } - position++ - if buffer[position] != rune('t') { - goto l38 + l121: + { + position123, tokenIndex123 := position, tokenIndex + if buffer[position] != rune('t') { + goto l124 + } + position++ + goto l123 + l124: + position, tokenIndex = position123, tokenIndex123 + if buffer[position] != rune('T') { + goto l120 + } + position++ } - position++ - if buffer[position] != rune('o') { - goto l38 + l123: + { + position125, tokenIndex125 := position, tokenIndex + if buffer[position] != rune('o') { + goto l126 + } + position++ + goto l125 + l126: + position, tokenIndex = position125, tokenIndex125 + if buffer[position] != rune('O') { + goto l120 + } + position++ } - position++ - if buffer[position] != rune('r') { - goto l38 + l125: + { + position127, tokenIndex127 := position, tokenIndex + if buffer[position] != rune('r') { + goto l128 + } + position++ + goto l127 + l128: + position, tokenIndex = position127, tokenIndex127 + if buffer[position] != rune('R') { + goto l120 + } + position++ } - position++ - if buffer[position] != rune('e') { - goto l38 + l127: + { + position129, tokenIndex129 := position, tokenIndex + if buffer[position] != rune('e') { + goto l130 + } + position++ + goto l129 + l130: + position, tokenIndex = position129, tokenIndex129 + if buffer[position] != rune('E') { + goto l120 + } + position++ } - position++ + l129: { add(ruleAction10, position) } if !_rules[ruleopen]() { - goto l38 + goto l120 } if !_rules[ruleCall]() { - goto l38 + goto l120 } if !_rules[rulecomma]() { - goto l38 + goto l120 } if !_rules[rulearg]() { - goto l38 + goto l120 } if !_rules[ruleclose]() { - goto l38 + goto l120 } { add(ruleAction11, position) } goto l7 - l38: + l120: position, tokenIndex = position7, tokenIndex7 - if buffer[position] != rune('T') { - goto l41 + { + position134, tokenIndex134 := position, tokenIndex + if buffer[position] != rune('t') { + goto l135 + } + position++ + goto l134 + l135: + position, tokenIndex = position134, tokenIndex134 + if buffer[position] != rune('T') { + goto l133 + } + position++ } - position++ - if buffer[position] != rune('o') { - goto l41 + l134: + { + position136, tokenIndex136 := position, tokenIndex + if buffer[position] != rune('o') { + goto l137 + } + position++ + goto l136 + l137: + position, tokenIndex = position136, tokenIndex136 + if buffer[position] != rune('O') { + goto l133 + } + position++ } - position++ - if buffer[position] != rune('p') { - goto l41 + l136: + { + position138, tokenIndex138 := position, tokenIndex + if buffer[position] != rune('p') { + goto l139 + } + position++ + goto l138 + l139: + position, tokenIndex = position138, tokenIndex138 + if buffer[position] != rune('P') { + goto l133 + } + position++ } - position++ - if buffer[position] != rune('N') { - goto l41 + l138: + { + position140, tokenIndex140 := position, tokenIndex + if buffer[position] != rune('n') { + goto l141 + } + position++ + goto l140 + l141: + position, tokenIndex = position140, tokenIndex140 + if buffer[position] != rune('N') { + goto l133 + } + position++ } - position++ + l140: { add(ruleAction12, position) } if !_rules[ruleopen]() { - goto l41 + goto l133 } if !_rules[ruleposfield]() { - goto l41 + goto l133 } { - position43, tokenIndex43 := position, tokenIndex + position143, tokenIndex143 := position, tokenIndex if !_rules[rulecomma]() { - goto l43 + goto l143 } if !_rules[ruleallargs]() { - goto l43 + goto l143 } - goto l44 - l43: - position, tokenIndex = position43, tokenIndex43 + goto l144 + l143: + position, tokenIndex = position143, tokenIndex143 } - l44: + l144: if !_rules[ruleclose]() { - goto l41 + goto l133 } { add(ruleAction13, position) } goto l7 - l41: + l133: position, tokenIndex = position7, tokenIndex7 - if buffer[position] != rune('R') { - goto l46 + { + position147, tokenIndex147 := position, tokenIndex + if buffer[position] != rune('r') { + goto l148 + } + position++ + goto l147 + l148: + position, tokenIndex = position147, tokenIndex147 + if buffer[position] != rune('R') { + goto l146 + } + position++ } - position++ - if buffer[position] != rune('o') { - goto l46 + l147: + { + position149, tokenIndex149 := position, tokenIndex + if buffer[position] != rune('o') { + goto l150 + } + position++ + goto l149 + l150: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('O') { + goto l146 + } + position++ } - position++ - if buffer[position] != rune('w') { - goto l46 + l149: + { + position151, tokenIndex151 := position, tokenIndex + if buffer[position] != rune('w') { + goto l152 + } + position++ + goto l151 + l152: + position, tokenIndex = position151, tokenIndex151 + if buffer[position] != rune('W') { + goto l146 + } + position++ } - position++ - if buffer[position] != rune('s') { - goto l46 + l151: + { + position153, tokenIndex153 := position, tokenIndex + if buffer[position] != rune('s') { + goto l154 + } + position++ + goto l153 + l154: + position, tokenIndex = position153, tokenIndex153 + if buffer[position] != rune('S') { + goto l146 + } + position++ } - position++ + l153: { add(ruleAction14, position) } if !_rules[ruleopen]() { - goto l46 + goto l146 } if !_rules[ruleposfield]() { - goto l46 + goto l146 } { - position48, tokenIndex48 := position, tokenIndex + position156, tokenIndex156 := position, tokenIndex if !_rules[rulecomma]() { - goto l48 + goto l156 } if !_rules[ruleallargs]() { - goto l48 + goto l156 } - goto l49 - l48: - position, tokenIndex = position48, tokenIndex48 + goto l157 + l156: + position, tokenIndex = position156, tokenIndex156 } - l49: + l157: if !_rules[ruleclose]() { - goto l46 + goto l146 } { add(ruleAction15, position) } goto l7 - l46: + l146: position, tokenIndex = position7, tokenIndex7 - if buffer[position] != rune('R') { - goto l51 + { + position160, tokenIndex160 := position, tokenIndex + if buffer[position] != rune('r') { + goto l161 + } + position++ + goto l160 + l161: + position, tokenIndex = position160, tokenIndex160 + if buffer[position] != rune('R') { + goto l159 + } + position++ } - position++ - if buffer[position] != rune('a') { - goto l51 + l160: + { + position162, tokenIndex162 := position, tokenIndex + if buffer[position] != rune('a') { + goto l163 + } + position++ + goto l162 + l163: + position, tokenIndex = position162, tokenIndex162 + if buffer[position] != rune('A') { + goto l159 + } + position++ } - position++ - if buffer[position] != rune('n') { - goto l51 + l162: + { + position164, tokenIndex164 := position, tokenIndex + if buffer[position] != rune('n') { + goto l165 + } + position++ + goto l164 + l165: + position, tokenIndex = position164, tokenIndex164 + if buffer[position] != rune('N') { + goto l159 + } + position++ } - position++ - if buffer[position] != rune('g') { - goto l51 + l164: + { + position166, tokenIndex166 := position, tokenIndex + if buffer[position] != rune('g') { + goto l167 + } + position++ + goto l166 + l167: + position, tokenIndex = position166, tokenIndex166 + if buffer[position] != rune('G') { + goto l159 + } + position++ } - position++ - if buffer[position] != rune('e') { - goto l51 + l166: + { + position168, tokenIndex168 := position, tokenIndex + if buffer[position] != rune('e') { + goto l169 + } + position++ + goto l168 + l169: + position, tokenIndex = position168, tokenIndex168 + if buffer[position] != rune('E') { + goto l159 + } + position++ } - position++ + l168: { add(ruleAction16, position) } if !_rules[ruleopen]() { - goto l51 + goto l159 } if !_rules[rulefield]() { - goto l51 + goto l159 } if !_rules[rulesp]() { - goto l51 + goto l159 } if buffer[position] != rune('=') { - goto l51 + goto l159 } position++ if !_rules[rulesp]() { - goto l51 + goto l159 } if !_rules[rulevalue]() { - goto l51 + goto l159 } if !_rules[rulecomma]() { - goto l51 + goto l159 } { - position53, tokenIndex53 := position, tokenIndex + position171, tokenIndex171 := position, tokenIndex if buffer[position] != rune('f') { - goto l53 + goto l171 } position++ if buffer[position] != rune('r') { - goto l53 + goto l171 } position++ if buffer[position] != rune('o') { - goto l53 + goto l171 } position++ if buffer[position] != rune('m') { - goto l53 + goto l171 } position++ if buffer[position] != rune('=') { - goto l53 + goto l171 } position++ - goto l54 - l53: - position, tokenIndex = position53, tokenIndex53 + goto l172 + l171: + position, tokenIndex = position171, tokenIndex171 } - l54: + l172: { add(ruleAction17, position) } if !_rules[ruletimestampfmt]() { - goto l51 + goto l159 } { add(ruleAction18, position) } if !_rules[rulecomma]() { - goto l51 + goto l159 } { - position57, tokenIndex57 := position, tokenIndex + position175, tokenIndex175 := position, tokenIndex if buffer[position] != rune('t') { - goto l57 + goto l175 } position++ if buffer[position] != rune('o') { - goto l57 + goto l175 } position++ if buffer[position] != rune('=') { - goto l57 + goto l175 } position++ - goto l58 - l57: - position, tokenIndex = position57, tokenIndex57 + goto l176 + l175: + position, tokenIndex = position175, tokenIndex175 } - l58: + l176: if !_rules[rulesp]() { - goto l51 + goto l159 } { add(ruleAction19, position) } if !_rules[ruletimestampfmt]() { - goto l51 + goto l159 } { add(ruleAction20, position) } if !_rules[ruleclose]() { - goto l51 + goto l159 } { add(ruleAction21, position) } goto l7 - l51: + l159: position, tokenIndex = position7, tokenIndex7 { - position62 := position + position180 := position if !_rules[ruleIDENT]() { goto l5 } - add(rulePegText, position62) + add(rulePegText, position180) } { add(ruleAction22, position) @@ -1319,15 +1968,15 @@ func (p *PQL) Init(options ...func(*PQL) error) error { goto l5 } { - position64, tokenIndex64 := position, tokenIndex + position182, tokenIndex182 := position, tokenIndex if !_rules[rulecomma]() { - goto l64 + goto l182 } - goto l65 - l64: - position, tokenIndex = position64, tokenIndex64 + goto l183 + l182: + position, tokenIndex = position182, tokenIndex182 } - l65: + l183: if !_rules[ruleclose]() { goto l5 } @@ -1345,274 +1994,274 @@ func (p *PQL) Init(options ...func(*PQL) error) error { }, /* 2 allargs <- <((Call (comma Call)* (comma args)?) / args / sp)> */ func() bool { - position67, tokenIndex67 := position, tokenIndex + position185, tokenIndex185 := position, tokenIndex { - position68 := position + position186 := position { - position69, tokenIndex69 := position, tokenIndex + position187, tokenIndex187 := position, tokenIndex if !_rules[ruleCall]() { - goto l70 + goto l188 } - l71: + l189: { - position72, tokenIndex72 := position, tokenIndex + position190, tokenIndex190 := position, tokenIndex if !_rules[rulecomma]() { - goto l72 + goto l190 } if !_rules[ruleCall]() { - goto l72 + goto l190 } - goto l71 - l72: - position, tokenIndex = position72, tokenIndex72 + goto l189 + l190: + position, tokenIndex = position190, tokenIndex190 } { - position73, tokenIndex73 := position, tokenIndex + position191, tokenIndex191 := position, tokenIndex if !_rules[rulecomma]() { - goto l73 + goto l191 } if !_rules[ruleargs]() { - goto l73 + goto l191 } - goto l74 - l73: - position, tokenIndex = position73, tokenIndex73 + goto l192 + l191: + position, tokenIndex = position191, tokenIndex191 } - l74: - goto l69 - l70: - position, tokenIndex = position69, tokenIndex69 + l192: + goto l187 + l188: + position, tokenIndex = position187, tokenIndex187 if !_rules[ruleargs]() { - goto l75 + goto l193 } - goto l69 - l75: - position, tokenIndex = position69, tokenIndex69 + goto l187 + l193: + position, tokenIndex = position187, tokenIndex187 if !_rules[rulesp]() { - goto l67 + goto l185 } } - l69: - add(ruleallargs, position68) + l187: + add(ruleallargs, position186) } return true - l67: - position, tokenIndex = position67, tokenIndex67 + l185: + position, tokenIndex = position185, tokenIndex185 return false }, /* 3 args <- <(arg (comma args)? sp)> */ func() bool { - position76, tokenIndex76 := position, tokenIndex + position194, tokenIndex194 := position, tokenIndex { - position77 := position + position195 := position if !_rules[rulearg]() { - goto l76 + goto l194 } { - position78, tokenIndex78 := position, tokenIndex + position196, tokenIndex196 := position, tokenIndex if !_rules[rulecomma]() { - goto l78 + goto l196 } if !_rules[ruleargs]() { - goto l78 + goto l196 } - goto l79 - l78: - position, tokenIndex = position78, tokenIndex78 + goto l197 + l196: + position, tokenIndex = position196, tokenIndex196 } - l79: + l197: if !_rules[rulesp]() { - goto l76 + goto l194 } - add(ruleargs, position77) + add(ruleargs, position195) } return true - l76: - position, tokenIndex = position76, tokenIndex76 + l194: + position, tokenIndex = position194, tokenIndex194 return false }, /* 4 arg <- <((field sp '=' sp value) / (field sp COND sp value) / conditional)> */ func() bool { - position80, tokenIndex80 := position, tokenIndex + position198, tokenIndex198 := position, tokenIndex { - position81 := position + position199 := position { - position82, tokenIndex82 := position, tokenIndex + position200, tokenIndex200 := position, tokenIndex if !_rules[rulefield]() { - goto l83 + goto l201 } if !_rules[rulesp]() { - goto l83 + goto l201 } if buffer[position] != rune('=') { - goto l83 + goto l201 } position++ if !_rules[rulesp]() { - goto l83 + goto l201 } if !_rules[rulevalue]() { - goto l83 + goto l201 } - goto l82 - l83: - position, tokenIndex = position82, tokenIndex82 + goto l200 + l201: + position, tokenIndex = position200, tokenIndex200 if !_rules[rulefield]() { - goto l84 + goto l202 } if !_rules[rulesp]() { - goto l84 + goto l202 } { - position85 := position + position203 := position { - position86, tokenIndex86 := position, tokenIndex + position204, tokenIndex204 := position, tokenIndex if buffer[position] != rune('>') { - goto l87 + goto l205 } position++ if buffer[position] != rune('<') { - goto l87 + goto l205 } position++ { add(ruleAction24, position) } - goto l86 - l87: - position, tokenIndex = position86, tokenIndex86 + goto l204 + l205: + position, tokenIndex = position204, tokenIndex204 if buffer[position] != rune('<') { - goto l89 + goto l207 } position++ if buffer[position] != rune('=') { - goto l89 + goto l207 } position++ { add(ruleAction25, position) } - goto l86 - l89: - position, tokenIndex = position86, tokenIndex86 + goto l204 + l207: + position, tokenIndex = position204, tokenIndex204 if buffer[position] != rune('>') { - goto l91 + goto l209 } position++ if buffer[position] != rune('=') { - goto l91 + goto l209 } position++ { add(ruleAction26, position) } - goto l86 - l91: - position, tokenIndex = position86, tokenIndex86 + goto l204 + l209: + position, tokenIndex = position204, tokenIndex204 if buffer[position] != rune('=') { - goto l93 + goto l211 } position++ if buffer[position] != rune('=') { - goto l93 + goto l211 } position++ { add(ruleAction27, position) } - goto l86 - l93: - position, tokenIndex = position86, tokenIndex86 + goto l204 + l211: + position, tokenIndex = position204, tokenIndex204 if buffer[position] != rune('!') { - goto l95 + goto l213 } position++ if buffer[position] != rune('=') { - goto l95 + goto l213 } position++ { add(ruleAction28, position) } - goto l86 - l95: - position, tokenIndex = position86, tokenIndex86 + goto l204 + l213: + position, tokenIndex = position204, tokenIndex204 if buffer[position] != rune('<') { - goto l97 + goto l215 } position++ { add(ruleAction29, position) } - goto l86 - l97: - position, tokenIndex = position86, tokenIndex86 + goto l204 + l215: + position, tokenIndex = position204, tokenIndex204 if buffer[position] != rune('>') { - goto l84 + goto l202 } position++ { add(ruleAction30, position) } } - l86: - add(ruleCOND, position85) + l204: + add(ruleCOND, position203) } if !_rules[rulesp]() { - goto l84 + goto l202 } if !_rules[rulevalue]() { - goto l84 + goto l202 } - goto l82 - l84: - position, tokenIndex = position82, tokenIndex82 + goto l200 + l202: + position, tokenIndex = position200, tokenIndex200 { - position100 := position + position218 := position { add(ruleAction31, position) } if !_rules[rulecondint]() { - goto l80 + goto l198 } if !_rules[rulecondLT]() { - goto l80 + goto l198 } { - position102 := position + position220 := position { - position103 := position + position221 := position if !_rules[rulefieldExpr]() { - goto l80 + goto l198 } - add(rulePegText, position103) + add(rulePegText, position221) } if !_rules[rulesp]() { - goto l80 + goto l198 } { add(ruleAction35, position) } - add(rulecondfield, position102) + add(rulecondfield, position220) } if !_rules[rulecondLT]() { - goto l80 + goto l198 } if !_rules[rulecondint]() { - goto l80 + goto l198 } { add(ruleAction32, position) } - add(ruleconditional, position100) + add(ruleconditional, position218) } } - l82: - add(rulearg, position81) + l200: + add(rulearg, position199) } return true - l80: - position, tokenIndex = position80, tokenIndex80 + l198: + position, tokenIndex = position198, tokenIndex198 return false }, /* 5 COND <- <(('>' '<' Action24) / ('<' '=' Action25) / ('>' '=' Action26) / ('=' '=' Action27) / ('!' '=' Action28) / ('<' Action29) / ('>' Action30))> */ @@ -1621,1330 +2270,1330 @@ func (p *PQL) Init(options ...func(*PQL) error) error { nil, /* 7 condint <- <(<(('-'? [0-9]* '.' [0-9]+) / '0' / ('-'? [1-9] [0-9]*))> sp Action33)> */ func() bool { - position108, tokenIndex108 := position, tokenIndex + position226, tokenIndex226 := position, tokenIndex { - position109 := position + position227 := position { - position110 := position + position228 := position { - position111, tokenIndex111 := position, tokenIndex + position229, tokenIndex229 := position, tokenIndex { - position113, tokenIndex113 := position, tokenIndex + position231, tokenIndex231 := position, tokenIndex if buffer[position] != rune('-') { - goto l113 + goto l231 } position++ - goto l114 - l113: - position, tokenIndex = position113, tokenIndex113 + goto l232 + l231: + position, tokenIndex = position231, tokenIndex231 } - l114: - l115: + l232: + l233: { - position116, tokenIndex116 := position, tokenIndex + position234, tokenIndex234 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l116 + goto l234 } position++ - goto l115 - l116: - position, tokenIndex = position116, tokenIndex116 + goto l233 + l234: + position, tokenIndex = position234, tokenIndex234 } if buffer[position] != rune('.') { - goto l112 + goto l230 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l112 + goto l230 } position++ - l117: + l235: { - position118, tokenIndex118 := position, tokenIndex + position236, tokenIndex236 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l118 + goto l236 } position++ - goto l117 - l118: - position, tokenIndex = position118, tokenIndex118 + goto l235 + l236: + position, tokenIndex = position236, tokenIndex236 } - goto l111 - l112: - position, tokenIndex = position111, tokenIndex111 + goto l229 + l230: + position, tokenIndex = position229, tokenIndex229 if buffer[position] != rune('0') { - goto l119 + goto l237 } position++ - goto l111 - l119: - position, tokenIndex = position111, tokenIndex111 + goto l229 + l237: + position, tokenIndex = position229, tokenIndex229 { - position120, tokenIndex120 := position, tokenIndex + position238, tokenIndex238 := position, tokenIndex if buffer[position] != rune('-') { - goto l120 + goto l238 } position++ - goto l121 - l120: - position, tokenIndex = position120, tokenIndex120 + goto l239 + l238: + position, tokenIndex = position238, tokenIndex238 } - l121: + l239: if c := buffer[position]; c < rune('1') || c > rune('9') { - goto l108 + goto l226 } position++ - l122: + l240: { - position123, tokenIndex123 := position, tokenIndex + position241, tokenIndex241 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l123 + goto l241 } position++ - goto l122 - l123: - position, tokenIndex = position123, tokenIndex123 + goto l240 + l241: + position, tokenIndex = position241, tokenIndex241 } } - l111: - add(rulePegText, position110) + l229: + add(rulePegText, position228) } if !_rules[rulesp]() { - goto l108 + goto l226 } { add(ruleAction33, position) } - add(rulecondint, position109) + add(rulecondint, position227) } return true - l108: - position, tokenIndex = position108, tokenIndex108 + l226: + position, tokenIndex = position226, tokenIndex226 return false }, /* 8 condLT <- <(<(('<' '=') / '<')> sp Action34)> */ func() bool { - position125, tokenIndex125 := position, tokenIndex + position243, tokenIndex243 := position, tokenIndex { - position126 := position + position244 := position { - position127 := position + position245 := position { - position128, tokenIndex128 := position, tokenIndex + position246, tokenIndex246 := position, tokenIndex if buffer[position] != rune('<') { - goto l129 + goto l247 } position++ if buffer[position] != rune('=') { - goto l129 + goto l247 } position++ - goto l128 - l129: - position, tokenIndex = position128, tokenIndex128 + goto l246 + l247: + position, tokenIndex = position246, tokenIndex246 if buffer[position] != rune('<') { - goto l125 + goto l243 } position++ } - l128: - add(rulePegText, position127) + l246: + add(rulePegText, position245) } if !_rules[rulesp]() { - goto l125 + goto l243 } { add(ruleAction34, position) } - add(rulecondLT, position126) + add(rulecondLT, position244) } return true - l125: - position, tokenIndex = position125, tokenIndex125 + l243: + position, tokenIndex = position243, tokenIndex243 return false }, /* 9 condfield <- <( sp Action35)> */ nil, /* 10 value <- <(item / (lbrack Action36 list rbrack Action37))> */ func() bool { - position132, tokenIndex132 := position, tokenIndex + position250, tokenIndex250 := position, tokenIndex { - position133 := position + position251 := position { - position134, tokenIndex134 := position, tokenIndex + position252, tokenIndex252 := position, tokenIndex if !_rules[ruleitem]() { - goto l135 + goto l253 } - goto l134 - l135: - position, tokenIndex = position134, tokenIndex134 + goto l252 + l253: + position, tokenIndex = position252, tokenIndex252 { - position136 := position + position254 := position if buffer[position] != rune('[') { - goto l132 + goto l250 } position++ if !_rules[rulesp]() { - goto l132 + goto l250 } - add(rulelbrack, position136) + add(rulelbrack, position254) } { add(ruleAction36, position) } if !_rules[rulelist]() { - goto l132 + goto l250 } { - position138 := position + position256 := position if !_rules[rulesp]() { - goto l132 + goto l250 } if buffer[position] != rune(']') { - goto l132 + goto l250 } position++ if !_rules[rulesp]() { - goto l132 + goto l250 } - add(rulerbrack, position138) + add(rulerbrack, position256) } { add(ruleAction37, position) } } - l134: - add(rulevalue, position133) + l252: + add(rulevalue, position251) } return true - l132: - position, tokenIndex = position132, tokenIndex132 + l250: + position, tokenIndex = position250, tokenIndex250 return false }, /* 11 list <- <(item (comma list)?)> */ func() bool { - position140, tokenIndex140 := position, tokenIndex + position258, tokenIndex258 := position, tokenIndex { - position141 := position + position259 := position if !_rules[ruleitem]() { - goto l140 + goto l258 } { - position142, tokenIndex142 := position, tokenIndex + position260, tokenIndex260 := position, tokenIndex if !_rules[rulecomma]() { - goto l142 + goto l260 } if !_rules[rulelist]() { - goto l142 + goto l260 } - goto l143 - l142: - position, tokenIndex = position142, tokenIndex142 + goto l261 + l260: + position, tokenIndex = position260, tokenIndex260 } - l143: - add(rulelist, position141) + l261: + add(rulelist, position259) } return true - l140: - position, tokenIndex = position140, tokenIndex140 + l258: + position, tokenIndex = position258, tokenIndex258 return false }, /* 12 item <- <(('n' 'u' 'l' 'l' &(comma / (sp close)) Action38) / ('t' 'r' 'u' 'e' &(comma / (sp close)) Action39) / ('f' 'a' 'l' 's' 'e' &(comma / (sp close)) Action40) / (timestampfmt Action41) / (<('-'? [0-9]+ ('.' [0-9]*)?)> Action42) / (<('-'? '.' [0-9]+)> Action43) / ( Action44 open allargs comma? close Action45) / (<([a-z] / [A-Z] / [0-9] / '-' / '_' / ':')+> Action46) / (<('"' doublequotedstring '"')> Action47) / (<('\'' singlequotedstring '\'')> Action48))> */ func() bool { - position144, tokenIndex144 := position, tokenIndex + position262, tokenIndex262 := position, tokenIndex { - position145 := position + position263 := position { - position146, tokenIndex146 := position, tokenIndex + position264, tokenIndex264 := position, tokenIndex if buffer[position] != rune('n') { - goto l147 + goto l265 } position++ if buffer[position] != rune('u') { - goto l147 + goto l265 } position++ if buffer[position] != rune('l') { - goto l147 + goto l265 } position++ if buffer[position] != rune('l') { - goto l147 + goto l265 } position++ { - position148, tokenIndex148 := position, tokenIndex + position266, tokenIndex266 := position, tokenIndex { - position149, tokenIndex149 := position, tokenIndex + position267, tokenIndex267 := position, tokenIndex if !_rules[rulecomma]() { - goto l150 + goto l268 } - goto l149 - l150: - position, tokenIndex = position149, tokenIndex149 + goto l267 + l268: + position, tokenIndex = position267, tokenIndex267 if !_rules[rulesp]() { - goto l147 + goto l265 } if !_rules[ruleclose]() { - goto l147 + goto l265 } } - l149: - position, tokenIndex = position148, tokenIndex148 + l267: + position, tokenIndex = position266, tokenIndex266 } { add(ruleAction38, position) } - goto l146 - l147: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l265: + position, tokenIndex = position264, tokenIndex264 if buffer[position] != rune('t') { - goto l152 + goto l270 } position++ if buffer[position] != rune('r') { - goto l152 + goto l270 } position++ if buffer[position] != rune('u') { - goto l152 + goto l270 } position++ if buffer[position] != rune('e') { - goto l152 + goto l270 } position++ { - position153, tokenIndex153 := position, tokenIndex + position271, tokenIndex271 := position, tokenIndex { - position154, tokenIndex154 := position, tokenIndex + position272, tokenIndex272 := position, tokenIndex if !_rules[rulecomma]() { - goto l155 + goto l273 } - goto l154 - l155: - position, tokenIndex = position154, tokenIndex154 + goto l272 + l273: + position, tokenIndex = position272, tokenIndex272 if !_rules[rulesp]() { - goto l152 + goto l270 } if !_rules[ruleclose]() { - goto l152 + goto l270 } } - l154: - position, tokenIndex = position153, tokenIndex153 + l272: + position, tokenIndex = position271, tokenIndex271 } { add(ruleAction39, position) } - goto l146 - l152: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l270: + position, tokenIndex = position264, tokenIndex264 if buffer[position] != rune('f') { - goto l157 + goto l275 } position++ if buffer[position] != rune('a') { - goto l157 + goto l275 } position++ if buffer[position] != rune('l') { - goto l157 + goto l275 } position++ if buffer[position] != rune('s') { - goto l157 + goto l275 } position++ if buffer[position] != rune('e') { - goto l157 + goto l275 } position++ { - position158, tokenIndex158 := position, tokenIndex + position276, tokenIndex276 := position, tokenIndex { - position159, tokenIndex159 := position, tokenIndex + position277, tokenIndex277 := position, tokenIndex if !_rules[rulecomma]() { - goto l160 + goto l278 } - goto l159 - l160: - position, tokenIndex = position159, tokenIndex159 + goto l277 + l278: + position, tokenIndex = position277, tokenIndex277 if !_rules[rulesp]() { - goto l157 + goto l275 } if !_rules[ruleclose]() { - goto l157 + goto l275 } } - l159: - position, tokenIndex = position158, tokenIndex158 + l277: + position, tokenIndex = position276, tokenIndex276 } { add(ruleAction40, position) } - goto l146 - l157: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l275: + position, tokenIndex = position264, tokenIndex264 if !_rules[ruletimestampfmt]() { - goto l162 + goto l280 } { add(ruleAction41, position) } - goto l146 - l162: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l280: + position, tokenIndex = position264, tokenIndex264 { - position165 := position + position283 := position { - position166, tokenIndex166 := position, tokenIndex + position284, tokenIndex284 := position, tokenIndex if buffer[position] != rune('-') { - goto l166 + goto l284 } position++ - goto l167 - l166: - position, tokenIndex = position166, tokenIndex166 + goto l285 + l284: + position, tokenIndex = position284, tokenIndex284 } - l167: + l285: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l164 + goto l282 } position++ - l168: + l286: { - position169, tokenIndex169 := position, tokenIndex + position287, tokenIndex287 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l169 + goto l287 } position++ - goto l168 - l169: - position, tokenIndex = position169, tokenIndex169 + goto l286 + l287: + position, tokenIndex = position287, tokenIndex287 } { - position170, tokenIndex170 := position, tokenIndex + position288, tokenIndex288 := position, tokenIndex if buffer[position] != rune('.') { - goto l170 + goto l288 } position++ - l172: + l290: { - position173, tokenIndex173 := position, tokenIndex + position291, tokenIndex291 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l173 + goto l291 } position++ - goto l172 - l173: - position, tokenIndex = position173, tokenIndex173 + goto l290 + l291: + position, tokenIndex = position291, tokenIndex291 } - goto l171 - l170: - position, tokenIndex = position170, tokenIndex170 + goto l289 + l288: + position, tokenIndex = position288, tokenIndex288 } - l171: - add(rulePegText, position165) + l289: + add(rulePegText, position283) } { add(ruleAction42, position) } - goto l146 - l164: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l282: + position, tokenIndex = position264, tokenIndex264 { - position176 := position + position294 := position { - position177, tokenIndex177 := position, tokenIndex + position295, tokenIndex295 := position, tokenIndex if buffer[position] != rune('-') { - goto l177 + goto l295 } position++ - goto l178 - l177: - position, tokenIndex = position177, tokenIndex177 + goto l296 + l295: + position, tokenIndex = position295, tokenIndex295 } - l178: + l296: if buffer[position] != rune('.') { - goto l175 + goto l293 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l175 + goto l293 } position++ - l179: + l297: { - position180, tokenIndex180 := position, tokenIndex + position298, tokenIndex298 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l180 + goto l298 } position++ - goto l179 - l180: - position, tokenIndex = position180, tokenIndex180 + goto l297 + l298: + position, tokenIndex = position298, tokenIndex298 } - add(rulePegText, position176) + add(rulePegText, position294) } { add(ruleAction43, position) } - goto l146 - l175: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l293: + position, tokenIndex = position264, tokenIndex264 { - position183 := position + position301 := position if !_rules[ruleIDENT]() { - goto l182 + goto l300 } - add(rulePegText, position183) + add(rulePegText, position301) } { add(ruleAction44, position) } if !_rules[ruleopen]() { - goto l182 + goto l300 } if !_rules[ruleallargs]() { - goto l182 + goto l300 } { - position185, tokenIndex185 := position, tokenIndex + position303, tokenIndex303 := position, tokenIndex if !_rules[rulecomma]() { - goto l185 + goto l303 } - goto l186 - l185: - position, tokenIndex = position185, tokenIndex185 + goto l304 + l303: + position, tokenIndex = position303, tokenIndex303 } - l186: + l304: if !_rules[ruleclose]() { - goto l182 + goto l300 } { add(ruleAction45, position) } - goto l146 - l182: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l300: + position, tokenIndex = position264, tokenIndex264 { - position189 := position + position307 := position { - position192, tokenIndex192 := position, tokenIndex + position310, tokenIndex310 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l193 + goto l311 } position++ - goto l192 - l193: - position, tokenIndex = position192, tokenIndex192 + goto l310 + l311: + position, tokenIndex = position310, tokenIndex310 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l194 + goto l312 } position++ - goto l192 - l194: - position, tokenIndex = position192, tokenIndex192 + goto l310 + l312: + position, tokenIndex = position310, tokenIndex310 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l195 + goto l313 } position++ - goto l192 - l195: - position, tokenIndex = position192, tokenIndex192 + goto l310 + l313: + position, tokenIndex = position310, tokenIndex310 if buffer[position] != rune('-') { - goto l196 + goto l314 } position++ - goto l192 - l196: - position, tokenIndex = position192, tokenIndex192 + goto l310 + l314: + position, tokenIndex = position310, tokenIndex310 if buffer[position] != rune('_') { - goto l197 + goto l315 } position++ - goto l192 - l197: - position, tokenIndex = position192, tokenIndex192 + goto l310 + l315: + position, tokenIndex = position310, tokenIndex310 if buffer[position] != rune(':') { - goto l188 + goto l306 } position++ } - l192: - l190: + l310: + l308: { - position191, tokenIndex191 := position, tokenIndex + position309, tokenIndex309 := position, tokenIndex { - position198, tokenIndex198 := position, tokenIndex + position316, tokenIndex316 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l199 + goto l317 } position++ - goto l198 - l199: - position, tokenIndex = position198, tokenIndex198 + goto l316 + l317: + position, tokenIndex = position316, tokenIndex316 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l200 + goto l318 } position++ - goto l198 - l200: - position, tokenIndex = position198, tokenIndex198 + goto l316 + l318: + position, tokenIndex = position316, tokenIndex316 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l201 + goto l319 } position++ - goto l198 - l201: - position, tokenIndex = position198, tokenIndex198 + goto l316 + l319: + position, tokenIndex = position316, tokenIndex316 if buffer[position] != rune('-') { - goto l202 + goto l320 } position++ - goto l198 - l202: - position, tokenIndex = position198, tokenIndex198 + goto l316 + l320: + position, tokenIndex = position316, tokenIndex316 if buffer[position] != rune('_') { - goto l203 + goto l321 } position++ - goto l198 - l203: - position, tokenIndex = position198, tokenIndex198 + goto l316 + l321: + position, tokenIndex = position316, tokenIndex316 if buffer[position] != rune(':') { - goto l191 + goto l309 } position++ } - l198: - goto l190 - l191: - position, tokenIndex = position191, tokenIndex191 + l316: + goto l308 + l309: + position, tokenIndex = position309, tokenIndex309 } - add(rulePegText, position189) + add(rulePegText, position307) } { add(ruleAction46, position) } - goto l146 - l188: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l306: + position, tokenIndex = position264, tokenIndex264 { - position206 := position + position324 := position if buffer[position] != rune('"') { - goto l205 + goto l323 } position++ if !_rules[ruledoublequotedstring]() { - goto l205 + goto l323 } if buffer[position] != rune('"') { - goto l205 + goto l323 } position++ - add(rulePegText, position206) + add(rulePegText, position324) } { add(ruleAction47, position) } - goto l146 - l205: - position, tokenIndex = position146, tokenIndex146 + goto l264 + l323: + position, tokenIndex = position264, tokenIndex264 { - position208 := position + position326 := position if buffer[position] != rune('\'') { - goto l144 + goto l262 } position++ if !_rules[rulesinglequotedstring]() { - goto l144 + goto l262 } if buffer[position] != rune('\'') { - goto l144 + goto l262 } position++ - add(rulePegText, position208) + add(rulePegText, position326) } { add(ruleAction48, position) } } - l146: - add(ruleitem, position145) + l264: + add(ruleitem, position263) } return true - l144: - position, tokenIndex = position144, tokenIndex144 + l262: + position, tokenIndex = position262, tokenIndex262 return false }, /* 13 doublequotedstring <- <(('\\' '"') / ('\\' '\\') / ('\\' 'n') / ('\\' 't') / (!('"' / '\\') .))*> */ func() bool { { - position211 := position - l212: + position329 := position + l330: { - position213, tokenIndex213 := position, tokenIndex + position331, tokenIndex331 := position, tokenIndex { - position214, tokenIndex214 := position, tokenIndex + position332, tokenIndex332 := position, tokenIndex if buffer[position] != rune('\\') { - goto l215 + goto l333 } position++ if buffer[position] != rune('"') { - goto l215 + goto l333 } position++ - goto l214 - l215: - position, tokenIndex = position214, tokenIndex214 + goto l332 + l333: + position, tokenIndex = position332, tokenIndex332 if buffer[position] != rune('\\') { - goto l216 + goto l334 } position++ if buffer[position] != rune('\\') { - goto l216 + goto l334 } position++ - goto l214 - l216: - position, tokenIndex = position214, tokenIndex214 + goto l332 + l334: + position, tokenIndex = position332, tokenIndex332 if buffer[position] != rune('\\') { - goto l217 + goto l335 } position++ if buffer[position] != rune('n') { - goto l217 + goto l335 } position++ - goto l214 - l217: - position, tokenIndex = position214, tokenIndex214 + goto l332 + l335: + position, tokenIndex = position332, tokenIndex332 if buffer[position] != rune('\\') { - goto l218 + goto l336 } position++ if buffer[position] != rune('t') { - goto l218 + goto l336 } position++ - goto l214 - l218: - position, tokenIndex = position214, tokenIndex214 + goto l332 + l336: + position, tokenIndex = position332, tokenIndex332 { - position219, tokenIndex219 := position, tokenIndex + position337, tokenIndex337 := position, tokenIndex { - position220, tokenIndex220 := position, tokenIndex + position338, tokenIndex338 := position, tokenIndex if buffer[position] != rune('"') { - goto l221 + goto l339 } position++ - goto l220 - l221: - position, tokenIndex = position220, tokenIndex220 + goto l338 + l339: + position, tokenIndex = position338, tokenIndex338 if buffer[position] != rune('\\') { - goto l219 + goto l337 } position++ } - l220: - goto l213 - l219: - position, tokenIndex = position219, tokenIndex219 + l338: + goto l331 + l337: + position, tokenIndex = position337, tokenIndex337 } if !matchDot() { - goto l213 + goto l331 } } - l214: - goto l212 - l213: - position, tokenIndex = position213, tokenIndex213 + l332: + goto l330 + l331: + position, tokenIndex = position331, tokenIndex331 } - add(ruledoublequotedstring, position211) + add(ruledoublequotedstring, position329) } return true }, /* 14 singlequotedstring <- <(('\\' '\'') / ('\\' '\\') / ('\\' 'n') / ('\\' 't') / (!('\'' / '\\') .))*> */ func() bool { { - position223 := position - l224: + position341 := position + l342: { - position225, tokenIndex225 := position, tokenIndex + position343, tokenIndex343 := position, tokenIndex { - position226, tokenIndex226 := position, tokenIndex + position344, tokenIndex344 := position, tokenIndex if buffer[position] != rune('\\') { - goto l227 + goto l345 } position++ if buffer[position] != rune('\'') { - goto l227 + goto l345 } position++ - goto l226 - l227: - position, tokenIndex = position226, tokenIndex226 + goto l344 + l345: + position, tokenIndex = position344, tokenIndex344 if buffer[position] != rune('\\') { - goto l228 + goto l346 } position++ if buffer[position] != rune('\\') { - goto l228 + goto l346 } position++ - goto l226 - l228: - position, tokenIndex = position226, tokenIndex226 + goto l344 + l346: + position, tokenIndex = position344, tokenIndex344 if buffer[position] != rune('\\') { - goto l229 + goto l347 } position++ if buffer[position] != rune('n') { - goto l229 + goto l347 } position++ - goto l226 - l229: - position, tokenIndex = position226, tokenIndex226 + goto l344 + l347: + position, tokenIndex = position344, tokenIndex344 if buffer[position] != rune('\\') { - goto l230 + goto l348 } position++ if buffer[position] != rune('t') { - goto l230 + goto l348 } position++ - goto l226 - l230: - position, tokenIndex = position226, tokenIndex226 + goto l344 + l348: + position, tokenIndex = position344, tokenIndex344 { - position231, tokenIndex231 := position, tokenIndex + position349, tokenIndex349 := position, tokenIndex { - position232, tokenIndex232 := position, tokenIndex + position350, tokenIndex350 := position, tokenIndex if buffer[position] != rune('\'') { - goto l233 + goto l351 } position++ - goto l232 - l233: - position, tokenIndex = position232, tokenIndex232 + goto l350 + l351: + position, tokenIndex = position350, tokenIndex350 if buffer[position] != rune('\\') { - goto l231 + goto l349 } position++ } - l232: - goto l225 - l231: - position, tokenIndex = position231, tokenIndex231 + l350: + goto l343 + l349: + position, tokenIndex = position349, tokenIndex349 } if !matchDot() { - goto l225 + goto l343 } } - l226: - goto l224 - l225: - position, tokenIndex = position225, tokenIndex225 + l344: + goto l342 + l343: + position, tokenIndex = position343, tokenIndex343 } - add(rulesinglequotedstring, position223) + add(rulesinglequotedstring, position341) } return true }, /* 15 fieldExpr <- <(([a-z] / [A-Z] / '_') ([a-z] / [A-Z] / [0-9] / '_' / '-')*)> */ func() bool { - position234, tokenIndex234 := position, tokenIndex + position352, tokenIndex352 := position, tokenIndex { - position235 := position + position353 := position { - position236, tokenIndex236 := position, tokenIndex + position354, tokenIndex354 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l237 + goto l355 } position++ - goto l236 - l237: - position, tokenIndex = position236, tokenIndex236 + goto l354 + l355: + position, tokenIndex = position354, tokenIndex354 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l238 + goto l356 } position++ - goto l236 - l238: - position, tokenIndex = position236, tokenIndex236 + goto l354 + l356: + position, tokenIndex = position354, tokenIndex354 if buffer[position] != rune('_') { - goto l234 + goto l352 } position++ } - l236: - l239: + l354: + l357: { - position240, tokenIndex240 := position, tokenIndex + position358, tokenIndex358 := position, tokenIndex { - position241, tokenIndex241 := position, tokenIndex + position359, tokenIndex359 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l242 + goto l360 } position++ - goto l241 - l242: - position, tokenIndex = position241, tokenIndex241 + goto l359 + l360: + position, tokenIndex = position359, tokenIndex359 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l243 + goto l361 } position++ - goto l241 - l243: - position, tokenIndex = position241, tokenIndex241 + goto l359 + l361: + position, tokenIndex = position359, tokenIndex359 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l244 + goto l362 } position++ - goto l241 - l244: - position, tokenIndex = position241, tokenIndex241 + goto l359 + l362: + position, tokenIndex = position359, tokenIndex359 if buffer[position] != rune('_') { - goto l245 + goto l363 } position++ - goto l241 - l245: - position, tokenIndex = position241, tokenIndex241 + goto l359 + l363: + position, tokenIndex = position359, tokenIndex359 if buffer[position] != rune('-') { - goto l240 + goto l358 } position++ } - l241: - goto l239 - l240: - position, tokenIndex = position240, tokenIndex240 + l359: + goto l357 + l358: + position, tokenIndex = position358, tokenIndex358 } - add(rulefieldExpr, position235) + add(rulefieldExpr, position353) } return true - l234: - position, tokenIndex = position234, tokenIndex234 + l352: + position, tokenIndex = position352, tokenIndex352 return false }, /* 16 field <- <(<(fieldExpr / reserved)> Action49)> */ func() bool { - position246, tokenIndex246 := position, tokenIndex + position364, tokenIndex364 := position, tokenIndex { - position247 := position + position365 := position { - position248 := position + position366 := position { - position249, tokenIndex249 := position, tokenIndex + position367, tokenIndex367 := position, tokenIndex if !_rules[rulefieldExpr]() { - goto l250 + goto l368 } - goto l249 - l250: - position, tokenIndex = position249, tokenIndex249 + goto l367 + l368: + position, tokenIndex = position367, tokenIndex367 { - position251 := position + position369 := position { - position252, tokenIndex252 := position, tokenIndex + position370, tokenIndex370 := position, tokenIndex if buffer[position] != rune('_') { - goto l253 + goto l371 } position++ if buffer[position] != rune('r') { - goto l253 + goto l371 } position++ if buffer[position] != rune('o') { - goto l253 + goto l371 } position++ if buffer[position] != rune('w') { - goto l253 + goto l371 } position++ - goto l252 - l253: - position, tokenIndex = position252, tokenIndex252 + goto l370 + l371: + position, tokenIndex = position370, tokenIndex370 if buffer[position] != rune('_') { - goto l254 + goto l372 } position++ if buffer[position] != rune('c') { - goto l254 + goto l372 } position++ if buffer[position] != rune('o') { - goto l254 + goto l372 } position++ if buffer[position] != rune('l') { - goto l254 + goto l372 } position++ - goto l252 - l254: - position, tokenIndex = position252, tokenIndex252 + goto l370 + l372: + position, tokenIndex = position370, tokenIndex370 if buffer[position] != rune('_') { - goto l255 + goto l373 } position++ if buffer[position] != rune('s') { - goto l255 + goto l373 } position++ if buffer[position] != rune('t') { - goto l255 + goto l373 } position++ if buffer[position] != rune('a') { - goto l255 + goto l373 } position++ if buffer[position] != rune('r') { - goto l255 + goto l373 } position++ if buffer[position] != rune('t') { - goto l255 + goto l373 } position++ - goto l252 - l255: - position, tokenIndex = position252, tokenIndex252 + goto l370 + l373: + position, tokenIndex = position370, tokenIndex370 if buffer[position] != rune('_') { - goto l256 + goto l374 } position++ if buffer[position] != rune('e') { - goto l256 + goto l374 } position++ if buffer[position] != rune('n') { - goto l256 + goto l374 } position++ if buffer[position] != rune('d') { - goto l256 + goto l374 } position++ - goto l252 - l256: - position, tokenIndex = position252, tokenIndex252 + goto l370 + l374: + position, tokenIndex = position370, tokenIndex370 if buffer[position] != rune('_') { - goto l257 + goto l375 } position++ if buffer[position] != rune('t') { - goto l257 + goto l375 } position++ if buffer[position] != rune('i') { - goto l257 + goto l375 } position++ if buffer[position] != rune('m') { - goto l257 + goto l375 } position++ if buffer[position] != rune('e') { - goto l257 + goto l375 } position++ if buffer[position] != rune('s') { - goto l257 + goto l375 } position++ if buffer[position] != rune('t') { - goto l257 + goto l375 } position++ if buffer[position] != rune('a') { - goto l257 + goto l375 } position++ if buffer[position] != rune('m') { - goto l257 + goto l375 } position++ if buffer[position] != rune('p') { - goto l257 + goto l375 } position++ - goto l252 - l257: - position, tokenIndex = position252, tokenIndex252 + goto l370 + l375: + position, tokenIndex = position370, tokenIndex370 if buffer[position] != rune('_') { - goto l246 + goto l364 } position++ if buffer[position] != rune('f') { - goto l246 + goto l364 } position++ if buffer[position] != rune('i') { - goto l246 + goto l364 } position++ if buffer[position] != rune('e') { - goto l246 + goto l364 } position++ if buffer[position] != rune('l') { - goto l246 + goto l364 } position++ if buffer[position] != rune('d') { - goto l246 + goto l364 } position++ } - l252: - add(rulereserved, position251) + l370: + add(rulereserved, position369) } } - l249: - add(rulePegText, position248) + l367: + add(rulePegText, position366) } { add(ruleAction49, position) } - add(rulefield, position247) + add(rulefield, position365) } return true - l246: - position, tokenIndex = position246, tokenIndex246 + l364: + position, tokenIndex = position364, tokenIndex364 return false }, /* 17 reserved <- <(('_' 'r' 'o' 'w') / ('_' 'c' 'o' 'l') / ('_' 's' 't' 'a' 'r' 't') / ('_' 'e' 'n' 'd') / ('_' 't' 'i' 'm' 'e' 's' 't' 'a' 'm' 'p') / ('_' 'f' 'i' 'e' 'l' 'd'))> */ nil, /* 18 posfield <- <( Action50)> */ func() bool { - position260, tokenIndex260 := position, tokenIndex + position378, tokenIndex378 := position, tokenIndex { - position261 := position + position379 := position { - position262 := position + position380 := position if !_rules[rulefieldExpr]() { - goto l260 + goto l378 } - add(rulePegText, position262) + add(rulePegText, position380) } { add(ruleAction50, position) } - add(ruleposfield, position261) + add(ruleposfield, position379) } return true - l260: - position, tokenIndex = position260, tokenIndex260 + l378: + position, tokenIndex = position378, tokenIndex378 return false }, /* 19 uint <- <(([1-9] [0-9]*) / '0')> */ func() bool { - position264, tokenIndex264 := position, tokenIndex + position382, tokenIndex382 := position, tokenIndex { - position265 := position + position383 := position { - position266, tokenIndex266 := position, tokenIndex + position384, tokenIndex384 := position, tokenIndex if c := buffer[position]; c < rune('1') || c > rune('9') { - goto l267 + goto l385 } position++ - l268: + l386: { - position269, tokenIndex269 := position, tokenIndex + position387, tokenIndex387 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l269 + goto l387 } position++ - goto l268 - l269: - position, tokenIndex = position269, tokenIndex269 + goto l386 + l387: + position, tokenIndex = position387, tokenIndex387 } - goto l266 - l267: - position, tokenIndex = position266, tokenIndex266 + goto l384 + l385: + position, tokenIndex = position384, tokenIndex384 if buffer[position] != rune('0') { - goto l264 + goto l382 } position++ } - l266: - add(ruleuint, position265) + l384: + add(ruleuint, position383) } return true - l264: - position, tokenIndex = position264, tokenIndex264 + l382: + position, tokenIndex = position382, tokenIndex382 return false }, /* 20 col <- <(( Action51) / (<('\'' singlequotedstring '\'')> Action52) / (<('"' doublequotedstring '"')> Action53))> */ func() bool { - position270, tokenIndex270 := position, tokenIndex + position388, tokenIndex388 := position, tokenIndex { - position271 := position + position389 := position { - position272, tokenIndex272 := position, tokenIndex + position390, tokenIndex390 := position, tokenIndex { - position274 := position + position392 := position if !_rules[ruleuint]() { - goto l273 + goto l391 } - add(rulePegText, position274) + add(rulePegText, position392) } { add(ruleAction51, position) } - goto l272 - l273: - position, tokenIndex = position272, tokenIndex272 + goto l390 + l391: + position, tokenIndex = position390, tokenIndex390 { - position277 := position + position395 := position if buffer[position] != rune('\'') { - goto l276 + goto l394 } position++ if !_rules[rulesinglequotedstring]() { - goto l276 + goto l394 } if buffer[position] != rune('\'') { - goto l276 + goto l394 } position++ - add(rulePegText, position277) + add(rulePegText, position395) } { add(ruleAction52, position) } - goto l272 - l276: - position, tokenIndex = position272, tokenIndex272 + goto l390 + l394: + position, tokenIndex = position390, tokenIndex390 { - position279 := position + position397 := position if buffer[position] != rune('"') { - goto l270 + goto l388 } position++ if !_rules[ruledoublequotedstring]() { - goto l270 + goto l388 } if buffer[position] != rune('"') { - goto l270 + goto l388 } position++ - add(rulePegText, position279) + add(rulePegText, position397) } { add(ruleAction53, position) } } - l272: - add(rulecol, position271) + l390: + add(rulecol, position389) } return true - l270: - position, tokenIndex = position270, tokenIndex270 + l388: + position, tokenIndex = position388, tokenIndex388 return false }, /* 21 row <- <(( Action54) / (<('\'' singlequotedstring '\'')> Action55) / (<('"' doublequotedstring '"')> Action56))> */ nil, /* 22 open <- <('(' sp)> */ func() bool { - position282, tokenIndex282 := position, tokenIndex + position400, tokenIndex400 := position, tokenIndex { - position283 := position + position401 := position if buffer[position] != rune('(') { - goto l282 + goto l400 } position++ if !_rules[rulesp]() { - goto l282 + goto l400 } - add(ruleopen, position283) + add(ruleopen, position401) } return true - l282: - position, tokenIndex = position282, tokenIndex282 + l400: + position, tokenIndex = position400, tokenIndex400 return false }, /* 23 close <- <(')' sp)> */ func() bool { - position284, tokenIndex284 := position, tokenIndex + position402, tokenIndex402 := position, tokenIndex { - position285 := position + position403 := position if buffer[position] != rune(')') { - goto l284 + goto l402 } position++ if !_rules[rulesp]() { - goto l284 + goto l402 } - add(ruleclose, position285) + add(ruleclose, position403) } return true - l284: - position, tokenIndex = position284, tokenIndex284 + l402: + position, tokenIndex = position402, tokenIndex402 return false }, /* 24 sp <- <(' ' / '\t' / '\n')*> */ func() bool { { - position287 := position - l288: + position405 := position + l406: { - position289, tokenIndex289 := position, tokenIndex + position407, tokenIndex407 := position, tokenIndex { - position290, tokenIndex290 := position, tokenIndex + position408, tokenIndex408 := position, tokenIndex if buffer[position] != rune(' ') { - goto l291 + goto l409 } position++ - goto l290 - l291: - position, tokenIndex = position290, tokenIndex290 + goto l408 + l409: + position, tokenIndex = position408, tokenIndex408 if buffer[position] != rune('\t') { - goto l292 + goto l410 } position++ - goto l290 - l292: - position, tokenIndex = position290, tokenIndex290 + goto l408 + l410: + position, tokenIndex = position408, tokenIndex408 if buffer[position] != rune('\n') { - goto l289 + goto l407 } position++ } - l290: - goto l288 - l289: - position, tokenIndex = position289, tokenIndex289 + l408: + goto l406 + l407: + position, tokenIndex = position407, tokenIndex407 } - add(rulesp, position287) + add(rulesp, position405) } return true }, /* 25 comma <- <(sp ',' sp)> */ func() bool { - position293, tokenIndex293 := position, tokenIndex + position411, tokenIndex411 := position, tokenIndex { - position294 := position + position412 := position if !_rules[rulesp]() { - goto l293 + goto l411 } if buffer[position] != rune(',') { - goto l293 + goto l411 } position++ if !_rules[rulesp]() { - goto l293 + goto l411 } - add(rulecomma, position294) + add(rulecomma, position412) } return true - l293: - position, tokenIndex = position293, tokenIndex293 + l411: + position, tokenIndex = position411, tokenIndex411 return false }, /* 26 lbrack <- <('[' sp)> */ @@ -2953,204 +3602,204 @@ func (p *PQL) Init(options ...func(*PQL) error) error { nil, /* 28 IDENT <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / [0-9])*)> */ func() bool { - position297, tokenIndex297 := position, tokenIndex + position415, tokenIndex415 := position, tokenIndex { - position298 := position + position416 := position { - position299, tokenIndex299 := position, tokenIndex + position417, tokenIndex417 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l300 + goto l418 } position++ - goto l299 - l300: - position, tokenIndex = position299, tokenIndex299 + goto l417 + l418: + position, tokenIndex = position417, tokenIndex417 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l297 + goto l415 } position++ } - l299: - l301: + l417: + l419: { - position302, tokenIndex302 := position, tokenIndex + position420, tokenIndex420 := position, tokenIndex { - position303, tokenIndex303 := position, tokenIndex + position421, tokenIndex421 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l304 + goto l422 } position++ - goto l303 - l304: - position, tokenIndex = position303, tokenIndex303 + goto l421 + l422: + position, tokenIndex = position421, tokenIndex421 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l305 + goto l423 } position++ - goto l303 - l305: - position, tokenIndex = position303, tokenIndex303 + goto l421 + l423: + position, tokenIndex = position421, tokenIndex421 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l302 + goto l420 } position++ } - l303: - goto l301 - l302: - position, tokenIndex = position302, tokenIndex302 + l421: + goto l419 + l420: + position, tokenIndex = position420, tokenIndex420 } - add(ruleIDENT, position298) + add(ruleIDENT, position416) } return true - l297: - position, tokenIndex = position297, tokenIndex297 + l415: + position, tokenIndex = position415, tokenIndex415 return false }, /* 29 timestampbasicfmt <- <([0-9] [0-9] [0-9] [0-9] '-' ('0' / '1') [0-9] '-' [0-3] [0-9] 'T' [0-9] [0-9] ':' [0-9] [0-9])> */ func() bool { - position306, tokenIndex306 := position, tokenIndex + position424, tokenIndex424 := position, tokenIndex { - position307 := position + position425 := position if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if buffer[position] != rune('-') { - goto l306 + goto l424 } position++ { - position308, tokenIndex308 := position, tokenIndex + position426, tokenIndex426 := position, tokenIndex if buffer[position] != rune('0') { - goto l309 + goto l427 } position++ - goto l308 - l309: - position, tokenIndex = position308, tokenIndex308 + goto l426 + l427: + position, tokenIndex = position426, tokenIndex426 if buffer[position] != rune('1') { - goto l306 + goto l424 } position++ } - l308: + l426: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if buffer[position] != rune('-') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('3') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if buffer[position] != rune('T') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if buffer[position] != rune(':') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l306 + goto l424 } position++ - add(ruletimestampbasicfmt, position307) + add(ruletimestampbasicfmt, position425) } return true - l306: - position, tokenIndex = position306, tokenIndex306 + l424: + position, tokenIndex = position424, tokenIndex424 return false }, /* 30 timestampfmt <- <(('"' '"') / ('\'' '\'') / )> */ func() bool { - position310, tokenIndex310 := position, tokenIndex + position428, tokenIndex428 := position, tokenIndex { - position311 := position + position429 := position { - position312, tokenIndex312 := position, tokenIndex + position430, tokenIndex430 := position, tokenIndex if buffer[position] != rune('"') { - goto l313 + goto l431 } position++ { - position314 := position + position432 := position if !_rules[ruletimestampbasicfmt]() { - goto l313 + goto l431 } - add(rulePegText, position314) + add(rulePegText, position432) } if buffer[position] != rune('"') { - goto l313 + goto l431 } position++ - goto l312 - l313: - position, tokenIndex = position312, tokenIndex312 + goto l430 + l431: + position, tokenIndex = position430, tokenIndex430 if buffer[position] != rune('\'') { - goto l315 + goto l433 } position++ { - position316 := position + position434 := position if !_rules[ruletimestampbasicfmt]() { - goto l315 + goto l433 } - add(rulePegText, position316) + add(rulePegText, position434) } if buffer[position] != rune('\'') { - goto l315 + goto l433 } position++ - goto l312 - l315: - position, tokenIndex = position312, tokenIndex312 + goto l430 + l433: + position, tokenIndex = position430, tokenIndex430 { - position317 := position + position435 := position if !_rules[ruletimestampbasicfmt]() { - goto l310 + goto l428 } - add(rulePegText, position317) + add(rulePegText, position435) } } - l312: - add(ruletimestampfmt, position311) + l430: + add(ruletimestampfmt, position429) } return true - l310: - position, tokenIndex = position310, tokenIndex310 + l428: + position, tokenIndex = position428, tokenIndex428 return false }, /* 31 timestamp <- <( Action57)> */ @@ -3200,7 +3849,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { /* 54 Action21 <- <{p.endCall()}> */ nil, nil, - /* 56 Action22 <- <{ p.startCall(text ) }> */ + /* 56 Action22 <- <{ p.startCall(text) }> */ nil, /* 57 Action23 <- <{ p.endCall() }> */ nil, From c19d571112a2354bd92d34f74db18b4c83e9b977 Mon Sep 17 00:00:00 2001 From: Seebs Date: Wed, 7 Oct 2020 18:16:44 -0500 Subject: [PATCH 5/7] more consistent spacing We still prohibit a space before a leading '(', which maybe we shouldn't, but we now allow spaces on both sides of a closing ')' more consistently. Drop the unneeded "sp" before "close" in the special handling after null, true, and false, because close now implies that. Also, refactored the two instances of "sp '=' sp" into a thing called eq, which may not be worth it. --- pql/parser_test.go | 14 ++ pql/pql.peg | 16 +- pql/pql.peg.go | 382 +++++++++++++++++++++++---------------------- 3 files changed, 215 insertions(+), 197 deletions(-) diff --git a/pql/parser_test.go b/pql/parser_test.go index 3e88d4b9f..f050cc15a 100644 --- a/pql/parser_test.go +++ b/pql/parser_test.go @@ -210,6 +210,20 @@ func TestParser_Parse(t *testing.T) { } }) + t.Run("VariousSpaces", func(t *testing.T) { + q, err := pql.ParseString(`TopN( x )`) + if err != nil { + t.Fatal(err) + } else if !reflect.DeepEqual(q.Calls[0], + &pql.Call{ + Name: "TopN", + Args: map[string]interface{}{"_field": "x"}, + }, + ) { + t.Fatalf("unexpected call: %#v", q.Calls[0]) + } + }) + } func TestUnquote(t *testing.T) { diff --git a/pql/pql.peg b/pql/pql.peg index 39b9127d0..1554f4c26 100644 --- a/pql/pql.peg +++ b/pql/pql.peg @@ -4,7 +4,6 @@ type PQL Peg { Query } - Calls <- sp (Call sp)* !. Call <- "Set" {p.startCall("Set")} open col comma args (comma timestamp)? close {p.endCall()} / "SetRowAttrs" {p.startCall("SetRowAttrs")} open posfield comma row comma args close {p.endCall()} @@ -14,11 +13,11 @@ Call <- "Set" {p.startCall("Set")} open col comma args (comma timestamp)? close / "Store" {p.startCall("Store")} open Call comma arg close {p.endCall()} / "TopN" {p.startCall("TopN")} open posfield (comma allargs)? close {p.endCall()} / "Rows" {p.startCall("Rows")} open posfield (comma allargs)? close {p.endCall()} - / "Range" {p.startCall("Range")} open field sp '=' sp value comma 'from='? {p.addField("from")} timestampfmt {p.addVal(text)} comma 'to='? sp {p.addField("to")} timestampfmt {p.addVal(text)} close {p.endCall()} + / "Range" {p.startCall("Range")} open field eq value comma 'from='? {p.addField("from")} timestampfmt {p.addVal(text)} comma 'to='? sp {p.addField("to")} timestampfmt {p.addVal(text)} close {p.endCall()} / < IDENT > { p.startCall(text) } open allargs comma? close { p.endCall() } allargs <- Call (comma Call)* (comma args)? / args / sp args <- arg (comma args)? sp -arg <- field sp '=' sp value +arg <- field eq value / field sp COND sp value / conditional COND <- '><' { p.addBTWN() } @@ -34,12 +33,12 @@ condint <- < '-'? [0-9]* '.' [0-9]+ / '0' / '-'? [1-9] [0-9]* > sp {p.condAdd(te condLT <- <('<=' / '<')> sp {p.condAdd(text)} condfield <- sp {p.condAdd(text)} -value <- item +value <- item / lbrack { p.startList() } list rbrack { p.endList() } list <- item (comma list)? -item <- 'null' &(comma / sp close) { p.addVal(nil) } - / 'true' &(comma / sp close) { p.addVal(true) } - / 'false' &(comma / sp close) { p.addVal(false) } +item <- 'null' &(comma / close) { p.addVal(nil) } + / 'true' &(comma / close) { p.addVal(true) } + / 'false' &(comma / close) { p.addVal(false) } / timestampfmt { p.addVal(text) } / < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text) } / < '-'? '.'[0-9]+ > { p.addNumVal(text) } @@ -64,8 +63,9 @@ row <- {p.addPosNum("_row", text)} / < '"' doublequotedstring '"' > {p.addPosStr("_row", text)} open <- '(' sp -close <- ')' sp +close <- sp ')' sp sp <- [ \t\n]* +eq <- sp '=' sp comma <- sp ',' sp lbrack <- '[' sp rbrack <- sp ']' sp diff --git a/pql/pql.peg.go b/pql/pql.peg.go index c0ebdf638..d36ee4bcb 100644 --- a/pql/pql.peg.go +++ b/pql/pql.peg.go @@ -43,6 +43,7 @@ const ( ruleopen ruleclose rulesp + ruleeq rulecomma rulelbrack rulerbrack @@ -138,6 +139,7 @@ var rul3s = [...]string{ "open", "close", "sp", + "eq", "comma", "lbrack", "rbrack", @@ -320,7 +322,7 @@ type PQL struct { Buffer string buffer []rune - rules [92]func() bool + rules [93]func() bool parse func(rule ...int) error reset func() Pretty bool @@ -668,7 +670,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position, tokenIndex = position0, tokenIndex0 return false }, - /* 1 Call <- <((('s' / 'S') ('e' / 'E') ('t' / 'T') Action0 open col comma args (comma timestamp)? close Action1) / (('s' / 'S') ('e' / 'E') ('t' / 'T') ('r' / 'R') ('o' / 'O') ('w' / 'W') ('a' / 'A') ('t' / 'T') ('t' / 'T') ('r' / 'R') ('s' / 'S') Action2 open posfield comma row comma args close Action3) / (('s' / 'S') ('e' / 'E') ('t' / 'T') ('c' / 'C') ('o' / 'O') ('l' / 'L') ('u' / 'U') ('m' / 'M') ('n' / 'N') ('a' / 'A') ('t' / 'T') ('t' / 'T') ('r' / 'R') ('s' / 'S') Action4 open col comma args close Action5) / (('c' / 'C') ('l' / 'L') ('e' / 'E') ('a' / 'A') ('r' / 'R') Action6 open col comma args close Action7) / (('c' / 'C') ('l' / 'L') ('e' / 'E') ('a' / 'A') ('r' / 'R') ('r' / 'R') ('o' / 'O') ('w' / 'W') Action8 open arg close Action9) / (('s' / 'S') ('t' / 'T') ('o' / 'O') ('r' / 'R') ('e' / 'E') Action10 open Call comma arg close Action11) / (('t' / 'T') ('o' / 'O') ('p' / 'P') ('n' / 'N') Action12 open posfield (comma allargs)? close Action13) / (('r' / 'R') ('o' / 'O') ('w' / 'W') ('s' / 'S') Action14 open posfield (comma allargs)? close Action15) / (('r' / 'R') ('a' / 'A') ('n' / 'N') ('g' / 'G') ('e' / 'E') Action16 open field sp '=' sp value comma ('f' 'r' 'o' 'm' '=')? Action17 timestampfmt Action18 comma ('t' 'o' '=')? sp Action19 timestampfmt Action20 close Action21) / ( Action22 open allargs comma? close Action23))> */ + /* 1 Call <- <((('s' / 'S') ('e' / 'E') ('t' / 'T') Action0 open col comma args (comma timestamp)? close Action1) / (('s' / 'S') ('e' / 'E') ('t' / 'T') ('r' / 'R') ('o' / 'O') ('w' / 'W') ('a' / 'A') ('t' / 'T') ('t' / 'T') ('r' / 'R') ('s' / 'S') Action2 open posfield comma row comma args close Action3) / (('s' / 'S') ('e' / 'E') ('t' / 'T') ('c' / 'C') ('o' / 'O') ('l' / 'L') ('u' / 'U') ('m' / 'M') ('n' / 'N') ('a' / 'A') ('t' / 'T') ('t' / 'T') ('r' / 'R') ('s' / 'S') Action4 open col comma args close Action5) / (('c' / 'C') ('l' / 'L') ('e' / 'E') ('a' / 'A') ('r' / 'R') Action6 open col comma args close Action7) / (('c' / 'C') ('l' / 'L') ('e' / 'E') ('a' / 'A') ('r' / 'R') ('r' / 'R') ('o' / 'O') ('w' / 'W') Action8 open arg close Action9) / (('s' / 'S') ('t' / 'T') ('o' / 'O') ('r' / 'R') ('e' / 'E') Action10 open Call comma arg close Action11) / (('t' / 'T') ('o' / 'O') ('p' / 'P') ('n' / 'N') Action12 open posfield (comma allargs)? close Action13) / (('r' / 'R') ('o' / 'O') ('w' / 'W') ('s' / 'S') Action14 open posfield (comma allargs)? close Action15) / (('r' / 'R') ('a' / 'A') ('n' / 'N') ('g' / 'G') ('e' / 'E') Action16 open field eq value comma ('f' 'r' 'o' 'm' '=')? Action17 timestampfmt Action18 comma ('t' 'o' '=')? sp Action19 timestampfmt Action20 close Action21) / ( Action22 open allargs comma? close Action23))> */ func() bool { position5, tokenIndex5 := position, tokenIndex { @@ -1856,14 +1858,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulefield]() { goto l159 } - if !_rules[rulesp]() { - goto l159 - } - if buffer[position] != rune('=') { - goto l159 - } - position++ - if !_rules[rulesp]() { + if !_rules[ruleeq]() { goto l159 } if !_rules[rulevalue]() { @@ -2080,7 +2075,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position, tokenIndex = position194, tokenIndex194 return false }, - /* 4 arg <- <((field sp '=' sp value) / (field sp COND sp value) / conditional)> */ + /* 4 arg <- <((field eq value) / (field sp COND sp value) / conditional)> */ func() bool { position198, tokenIndex198 := position, tokenIndex { @@ -2090,14 +2085,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulefield]() { goto l201 } - if !_rules[rulesp]() { - goto l201 - } - if buffer[position] != rune('=') { - goto l201 - } - position++ - if !_rules[rulesp]() { + if !_rules[ruleeq]() { goto l201 } if !_rules[rulevalue]() { @@ -2498,7 +2486,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position, tokenIndex = position258, tokenIndex258 return false }, - /* 12 item <- <(('n' 'u' 'l' 'l' &(comma / (sp close)) Action38) / ('t' 'r' 'u' 'e' &(comma / (sp close)) Action39) / ('f' 'a' 'l' 's' 'e' &(comma / (sp close)) Action40) / (timestampfmt Action41) / (<('-'? [0-9]+ ('.' [0-9]*)?)> Action42) / (<('-'? '.' [0-9]+)> Action43) / ( Action44 open allargs comma? close Action45) / (<([a-z] / [A-Z] / [0-9] / '-' / '_' / ':')+> Action46) / (<('"' doublequotedstring '"')> Action47) / (<('\'' singlequotedstring '\'')> Action48))> */ + /* 12 item <- <(('n' 'u' 'l' 'l' &(comma / close) Action38) / ('t' 'r' 'u' 'e' &(comma / close) Action39) / ('f' 'a' 'l' 's' 'e' &(comma / close) Action40) / (timestampfmt Action41) / (<('-'? [0-9]+ ('.' [0-9]*)?)> Action42) / (<('-'? '.' [0-9]+)> Action43) / ( Action44 open allargs comma? close Action45) / (<([a-z] / [A-Z] / [0-9] / '-' / '_' / ':')+> Action46) / (<('"' doublequotedstring '"')> Action47) / (<('\'' singlequotedstring '\'')> Action48))> */ func() bool { position262, tokenIndex262 := position, tokenIndex { @@ -2531,9 +2519,6 @@ func (p *PQL) Init(options ...func(*PQL) error) error { goto l267 l268: position, tokenIndex = position267, tokenIndex267 - if !_rules[rulesp]() { - goto l265 - } if !_rules[ruleclose]() { goto l265 } @@ -2573,9 +2558,6 @@ func (p *PQL) Init(options ...func(*PQL) error) error { goto l272 l273: position, tokenIndex = position272, tokenIndex272 - if !_rules[rulesp]() { - goto l270 - } if !_rules[ruleclose]() { goto l270 } @@ -2619,9 +2601,6 @@ func (p *PQL) Init(options ...func(*PQL) error) error { goto l277 l278: position, tokenIndex = position277, tokenIndex277 - if !_rules[rulesp]() { - goto l275 - } if !_rules[ruleclose]() { goto l275 } @@ -3518,11 +3497,14 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position, tokenIndex = position400, tokenIndex400 return false }, - /* 23 close <- <(')' sp)> */ + /* 23 close <- <(sp ')' sp)> */ func() bool { position402, tokenIndex402 := position, tokenIndex { position403 := position + if !_rules[rulesp]() { + goto l402 + } if buffer[position] != rune(')') { goto l402 } @@ -3574,7 +3556,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { } return true }, - /* 25 comma <- <(sp ',' sp)> */ + /* 25 eq <- <(sp '=' sp)> */ func() bool { position411, tokenIndex411 := position, tokenIndex { @@ -3582,193 +3564,197 @@ func (p *PQL) Init(options ...func(*PQL) error) error { if !_rules[rulesp]() { goto l411 } - if buffer[position] != rune(',') { + if buffer[position] != rune('=') { goto l411 } position++ if !_rules[rulesp]() { goto l411 } - add(rulecomma, position412) + add(ruleeq, position412) } return true l411: position, tokenIndex = position411, tokenIndex411 return false }, - /* 26 lbrack <- <('[' sp)> */ - nil, - /* 27 rbrack <- <(sp ']' sp)> */ - nil, - /* 28 IDENT <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / [0-9])*)> */ + /* 26 comma <- <(sp ',' sp)> */ func() bool { - position415, tokenIndex415 := position, tokenIndex + position413, tokenIndex413 := position, tokenIndex { - position416 := position + position414 := position + if !_rules[rulesp]() { + goto l413 + } + if buffer[position] != rune(',') { + goto l413 + } + position++ + if !_rules[rulesp]() { + goto l413 + } + add(rulecomma, position414) + } + return true + l413: + position, tokenIndex = position413, tokenIndex413 + return false + }, + /* 27 lbrack <- <('[' sp)> */ + nil, + /* 28 rbrack <- <(sp ']' sp)> */ + nil, + /* 29 IDENT <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / [0-9])*)> */ + func() bool { + position417, tokenIndex417 := position, tokenIndex + { + position418 := position { - position417, tokenIndex417 := position, tokenIndex + position419, tokenIndex419 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l418 + goto l420 } position++ - goto l417 - l418: - position, tokenIndex = position417, tokenIndex417 + goto l419 + l420: + position, tokenIndex = position419, tokenIndex419 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l415 + goto l417 } position++ } - l417: l419: + l421: { - position420, tokenIndex420 := position, tokenIndex + position422, tokenIndex422 := position, tokenIndex { - position421, tokenIndex421 := position, tokenIndex + position423, tokenIndex423 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l424 + } + position++ + goto l423 + l424: + position, tokenIndex = position423, tokenIndex423 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l425 + } + position++ + goto l423 + l425: + position, tokenIndex = position423, tokenIndex423 + if c := buffer[position]; c < rune('0') || c > rune('9') { goto l422 } position++ - goto l421 - l422: - position, tokenIndex = position421, tokenIndex421 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l423 - } - position++ - goto l421 - l423: - position, tokenIndex = position421, tokenIndex421 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l420 - } - position++ } - l421: - goto l419 - l420: - position, tokenIndex = position420, tokenIndex420 + l423: + goto l421 + l422: + position, tokenIndex = position422, tokenIndex422 } - add(ruleIDENT, position416) + add(ruleIDENT, position418) } return true - l415: - position, tokenIndex = position415, tokenIndex415 + l417: + position, tokenIndex = position417, tokenIndex417 return false }, - /* 29 timestampbasicfmt <- <([0-9] [0-9] [0-9] [0-9] '-' ('0' / '1') [0-9] '-' [0-3] [0-9] 'T' [0-9] [0-9] ':' [0-9] [0-9])> */ + /* 30 timestampbasicfmt <- <([0-9] [0-9] [0-9] [0-9] '-' ('0' / '1') [0-9] '-' [0-3] [0-9] 'T' [0-9] [0-9] ':' [0-9] [0-9])> */ func() bool { - position424, tokenIndex424 := position, tokenIndex + position426, tokenIndex426 := position, tokenIndex { - position425 := position + position427 := position if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if buffer[position] != rune('-') { - goto l424 + goto l426 } position++ { - position426, tokenIndex426 := position, tokenIndex + position428, tokenIndex428 := position, tokenIndex if buffer[position] != rune('0') { - goto l427 + goto l429 } position++ - goto l426 - l427: - position, tokenIndex = position426, tokenIndex426 + goto l428 + l429: + position, tokenIndex = position428, tokenIndex428 if buffer[position] != rune('1') { - goto l424 + goto l426 } position++ } - l426: + l428: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if buffer[position] != rune('-') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('3') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if buffer[position] != rune('T') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if buffer[position] != rune(':') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l424 + goto l426 } position++ - add(ruletimestampbasicfmt, position425) + add(ruletimestampbasicfmt, position427) } return true - l424: - position, tokenIndex = position424, tokenIndex424 + l426: + position, tokenIndex = position426, tokenIndex426 return false }, - /* 30 timestampfmt <- <(('"' '"') / ('\'' '\'') / )> */ + /* 31 timestampfmt <- <(('"' '"') / ('\'' '\'') / )> */ func() bool { - position428, tokenIndex428 := position, tokenIndex + position430, tokenIndex430 := position, tokenIndex { - position429 := position + position431 := position { - position430, tokenIndex430 := position, tokenIndex + position432, tokenIndex432 := position, tokenIndex if buffer[position] != rune('"') { - goto l431 - } - position++ - { - position432 := position - if !_rules[ruletimestampbasicfmt]() { - goto l431 - } - add(rulePegText, position432) - } - if buffer[position] != rune('"') { - goto l431 - } - position++ - goto l430 - l431: - position, tokenIndex = position430, tokenIndex430 - if buffer[position] != rune('\'') { goto l433 } position++ @@ -3779,147 +3765,165 @@ func (p *PQL) Init(options ...func(*PQL) error) error { } add(rulePegText, position434) } - if buffer[position] != rune('\'') { + if buffer[position] != rune('"') { goto l433 } position++ - goto l430 + goto l432 l433: - position, tokenIndex = position430, tokenIndex430 + position, tokenIndex = position432, tokenIndex432 + if buffer[position] != rune('\'') { + goto l435 + } + position++ { - position435 := position + position436 := position if !_rules[ruletimestampbasicfmt]() { - goto l428 + goto l435 } - add(rulePegText, position435) + add(rulePegText, position436) + } + if buffer[position] != rune('\'') { + goto l435 + } + position++ + goto l432 + l435: + position, tokenIndex = position432, tokenIndex432 + { + position437 := position + if !_rules[ruletimestampbasicfmt]() { + goto l430 + } + add(rulePegText, position437) } } - l430: - add(ruletimestampfmt, position429) + l432: + add(ruletimestampfmt, position431) } return true - l428: - position, tokenIndex = position428, tokenIndex428 + l430: + position, tokenIndex = position430, tokenIndex430 return false }, - /* 31 timestamp <- <( Action57)> */ + /* 32 timestamp <- <( Action57)> */ nil, - /* 33 Action0 <- <{p.startCall("Set")}> */ + /* 34 Action0 <- <{p.startCall("Set")}> */ nil, - /* 34 Action1 <- <{p.endCall()}> */ + /* 35 Action1 <- <{p.endCall()}> */ nil, - /* 35 Action2 <- <{p.startCall("SetRowAttrs")}> */ + /* 36 Action2 <- <{p.startCall("SetRowAttrs")}> */ nil, - /* 36 Action3 <- <{p.endCall()}> */ + /* 37 Action3 <- <{p.endCall()}> */ nil, - /* 37 Action4 <- <{p.startCall("SetColumnAttrs")}> */ + /* 38 Action4 <- <{p.startCall("SetColumnAttrs")}> */ nil, - /* 38 Action5 <- <{p.endCall()}> */ + /* 39 Action5 <- <{p.endCall()}> */ nil, - /* 39 Action6 <- <{p.startCall("Clear")}> */ + /* 40 Action6 <- <{p.startCall("Clear")}> */ nil, - /* 40 Action7 <- <{p.endCall()}> */ + /* 41 Action7 <- <{p.endCall()}> */ nil, - /* 41 Action8 <- <{p.startCall("ClearRow")}> */ + /* 42 Action8 <- <{p.startCall("ClearRow")}> */ nil, - /* 42 Action9 <- <{p.endCall()}> */ + /* 43 Action9 <- <{p.endCall()}> */ nil, - /* 43 Action10 <- <{p.startCall("Store")}> */ + /* 44 Action10 <- <{p.startCall("Store")}> */ nil, - /* 44 Action11 <- <{p.endCall()}> */ + /* 45 Action11 <- <{p.endCall()}> */ nil, - /* 45 Action12 <- <{p.startCall("TopN")}> */ + /* 46 Action12 <- <{p.startCall("TopN")}> */ nil, - /* 46 Action13 <- <{p.endCall()}> */ + /* 47 Action13 <- <{p.endCall()}> */ nil, - /* 47 Action14 <- <{p.startCall("Rows")}> */ + /* 48 Action14 <- <{p.startCall("Rows")}> */ nil, - /* 48 Action15 <- <{p.endCall()}> */ + /* 49 Action15 <- <{p.endCall()}> */ nil, - /* 49 Action16 <- <{p.startCall("Range")}> */ + /* 50 Action16 <- <{p.startCall("Range")}> */ nil, - /* 50 Action17 <- <{p.addField("from")}> */ + /* 51 Action17 <- <{p.addField("from")}> */ nil, - /* 51 Action18 <- <{p.addVal(text)}> */ + /* 52 Action18 <- <{p.addVal(text)}> */ nil, - /* 52 Action19 <- <{p.addField("to")}> */ + /* 53 Action19 <- <{p.addField("to")}> */ nil, - /* 53 Action20 <- <{p.addVal(text)}> */ + /* 54 Action20 <- <{p.addVal(text)}> */ nil, - /* 54 Action21 <- <{p.endCall()}> */ + /* 55 Action21 <- <{p.endCall()}> */ nil, nil, - /* 56 Action22 <- <{ p.startCall(text) }> */ + /* 57 Action22 <- <{ p.startCall(text) }> */ nil, - /* 57 Action23 <- <{ p.endCall() }> */ + /* 58 Action23 <- <{ p.endCall() }> */ nil, - /* 58 Action24 <- <{ p.addBTWN() }> */ + /* 59 Action24 <- <{ p.addBTWN() }> */ nil, - /* 59 Action25 <- <{ p.addLTE() }> */ + /* 60 Action25 <- <{ p.addLTE() }> */ nil, - /* 60 Action26 <- <{ p.addGTE() }> */ + /* 61 Action26 <- <{ p.addGTE() }> */ nil, - /* 61 Action27 <- <{ p.addEQ() }> */ + /* 62 Action27 <- <{ p.addEQ() }> */ nil, - /* 62 Action28 <- <{ p.addNEQ() }> */ + /* 63 Action28 <- <{ p.addNEQ() }> */ nil, - /* 63 Action29 <- <{ p.addLT() }> */ + /* 64 Action29 <- <{ p.addLT() }> */ nil, - /* 64 Action30 <- <{ p.addGT() }> */ + /* 65 Action30 <- <{ p.addGT() }> */ nil, - /* 65 Action31 <- <{p.startConditional()}> */ + /* 66 Action31 <- <{p.startConditional()}> */ nil, - /* 66 Action32 <- <{p.endConditional()}> */ + /* 67 Action32 <- <{p.endConditional()}> */ nil, - /* 67 Action33 <- <{p.condAdd(text)}> */ + /* 68 Action33 <- <{p.condAdd(text)}> */ nil, - /* 68 Action34 <- <{p.condAdd(text)}> */ + /* 69 Action34 <- <{p.condAdd(text)}> */ nil, - /* 69 Action35 <- <{p.condAdd(text)}> */ + /* 70 Action35 <- <{p.condAdd(text)}> */ nil, - /* 70 Action36 <- <{ p.startList() }> */ + /* 71 Action36 <- <{ p.startList() }> */ nil, - /* 71 Action37 <- <{ p.endList() }> */ + /* 72 Action37 <- <{ p.endList() }> */ nil, - /* 72 Action38 <- <{ p.addVal(nil) }> */ + /* 73 Action38 <- <{ p.addVal(nil) }> */ nil, - /* 73 Action39 <- <{ p.addVal(true) }> */ + /* 74 Action39 <- <{ p.addVal(true) }> */ nil, - /* 74 Action40 <- <{ p.addVal(false) }> */ + /* 75 Action40 <- <{ p.addVal(false) }> */ nil, - /* 75 Action41 <- <{ p.addVal(text) }> */ + /* 76 Action41 <- <{ p.addVal(text) }> */ nil, - /* 76 Action42 <- <{ p.addNumVal(text) }> */ + /* 77 Action42 <- <{ p.addNumVal(text) }> */ nil, - /* 77 Action43 <- <{ p.addNumVal(text) }> */ + /* 78 Action43 <- <{ p.addNumVal(text) }> */ nil, - /* 78 Action44 <- <{ p.startCall(text) }> */ + /* 79 Action44 <- <{ p.startCall(text) }> */ nil, - /* 79 Action45 <- <{ p.addVal(p.endCall()) }> */ + /* 80 Action45 <- <{ p.addVal(p.endCall()) }> */ nil, - /* 80 Action46 <- <{ p.addVal(text) }> */ + /* 81 Action46 <- <{ p.addVal(text) }> */ nil, - /* 81 Action47 <- <{ p.addVal(text) }> */ + /* 82 Action47 <- <{ p.addVal(text) }> */ nil, - /* 82 Action48 <- <{ p.addVal(text) }> */ + /* 83 Action48 <- <{ p.addVal(text) }> */ nil, - /* 83 Action49 <- <{ p.addField(text) }> */ + /* 84 Action49 <- <{ p.addField(text) }> */ nil, - /* 84 Action50 <- <{ p.addPosStr("_field", text) }> */ + /* 85 Action50 <- <{ p.addPosStr("_field", text) }> */ nil, - /* 85 Action51 <- <{p.addPosNum("_col", text)}> */ + /* 86 Action51 <- <{p.addPosNum("_col", text)}> */ nil, - /* 86 Action52 <- <{p.addPosStr("_col", text)}> */ + /* 87 Action52 <- <{p.addPosStr("_col", text)}> */ nil, - /* 87 Action53 <- <{p.addPosStr("_col", text)}> */ + /* 88 Action53 <- <{p.addPosStr("_col", text)}> */ nil, - /* 88 Action54 <- <{p.addPosNum("_row", text)}> */ + /* 89 Action54 <- <{p.addPosNum("_row", text)}> */ nil, - /* 89 Action55 <- <{p.addPosStr("_row", text)}> */ + /* 90 Action55 <- <{p.addPosStr("_row", text)}> */ nil, - /* 90 Action56 <- <{p.addPosStr("_row", text)}> */ + /* 91 Action56 <- <{p.addPosStr("_row", text)}> */ nil, - /* 91 Action57 <- <{p.addPosStr("_timestamp", text)}> */ + /* 92 Action57 <- <{p.addPosStr("_timestamp", text)}> */ nil, } p.rules = _rules From e84d2d2a59cbf394d282f825a4ffa9f5ed56ab2f Mon Sep 17 00:00:00 2001 From: Seebs Date: Thu, 8 Oct 2020 15:31:21 -0500 Subject: [PATCH 6/7] refactor number parsing a bit There are subtle inconsistencies, like "01" being a valid decimal but not a valid integer, which vaguely bug me. Cleaning this up, and the corresponding parser logic. A number can't have leading spaces because the grammar doesn't put spaces in them in the first place, so stop accepting them in the number syntax. This should never have any impact on anything, it's just simpler. Update a couple of test cases to reflect this -- no longer testing that trailing spaces are okay, now testing that they're not, for instance. --- pql/decimal.go | 39 +- pql/decimal_test.go | 20 +- pql/pql.peg | 20 +- pql/pql.peg.go | 1770 ++++++++++++++++++++----------------------- 4 files changed, 870 insertions(+), 979 deletions(-) diff --git a/pql/decimal.go b/pql/decimal.go index 46ef82eb7..61843f580 100644 --- a/pql/decimal.go +++ b/pql/decimal.go @@ -309,7 +309,6 @@ func ParseDecimal(s string) (Decimal, error) { var err error // General steps: - // - Trim leading whitespace/zeros // - Get the sign value // - Trim leading zeros // - Push characters into a buffer @@ -328,26 +327,23 @@ func ParseDecimal(s string) (Decimal, error) { switch state { case stateSign: switch s[i] { - case ' ': - continue case '-': sign = true fallthrough case '+': state = stateLeadingZeros - default: - state = stateLeadingZeros - i-- + // Resume loop and look at next character + continue } + state = stateLeadingZeros + fallthrough case stateLeadingZeros: - switch s[i] { - case '0': + if s[i] == '0' { foundLeadingZero = true continue - default: - state = stateMantissa - i-- } + state = stateMantissa + fallthrough case stateMantissa: switch s[i] { case '.': @@ -371,23 +367,14 @@ func ParseDecimal(s string) (Decimal, error) { return Decimal{}, errors.New("decimal string is empty") } - // Trim trailing zeros/spaces of mantissa - // for any portion that would have been to the - // right of the decimal. + // Trim trailing zeros from mantissa. If we ended up with no + // characters at all in string, thus, pos == 0, the loop doesn't + // happen and we pick [:0], which is correct, probably. trimZeroCnt := 0 - trimSpaceCnt := 0 - for i := len(mantissa) - 1; i >= 0; i-- { - switch mantissa[i] { - case uint8(0), uint8(32): // nil/space - trimSpaceCnt++ - continue - case uint8(48): // zero - trimZeroCnt++ - continue - } - break + for i := pos - 1; i >= 0 && mantissa[i] == '0'; i-- { + trimZeroCnt++ } - mantissa = mantissa[:len(mantissa)-trimSpaceCnt-trimZeroCnt] + mantissa = mantissa[:pos-trimZeroCnt] // Based on where (or if) the decimal was found, // calculate scale. diff --git a/pql/decimal_test.go b/pql/decimal_test.go index b5b77fc79..34372651f 100644 --- a/pql/decimal_test.go +++ b/pql/decimal_test.go @@ -34,10 +34,9 @@ func TestDecimal(t *testing.T) { {"0", pql.Decimal{0, 0}, ""}, {"-0", pql.Decimal{0, 0}, ""}, {"0.0", pql.Decimal{0, 0}, ""}, + {"0.", pql.Decimal{0, 0}, ""}, {"-0.00", pql.Decimal{0, 0}, ""}, {"123.4567", pql.Decimal{1234567, 4}, ""}, - {" 123.4567", pql.Decimal{1234567, 4}, ""}, - {" 123.4567 ", pql.Decimal{1234567, 4}, ""}, {"123.456700", pql.Decimal{1234567, 4}, ""}, {"00123.4567", pql.Decimal{1234567, 4}, ""}, {"+123.4567", pql.Decimal{1234567, 4}, ""}, @@ -56,8 +55,7 @@ func TestDecimal(t *testing.T) { {".123", pql.Decimal{123, 3}, ""}, {"0.123", pql.Decimal{123, 3}, ""}, {"0.001230", pql.Decimal{123, 5}, ""}, - {" 0.001230 ", pql.Decimal{123, 5}, ""}, - {"-0.001230 ", pql.Decimal{-123, 5}, ""}, + {"-0.001230", pql.Decimal{-123, 5}, ""}, // int64 edges. {".000009223372036854775807", pql.Decimal{9223372036854775807, 24}, ""}, @@ -83,6 +81,10 @@ func TestDecimal(t *testing.T) { {"abc", pql.Decimal{}, "invalid syntax"}, {"0.12.3", pql.Decimal{}, "invalid decimal string"}, {"--12300", pql.Decimal{}, "invalid syntax"}, + {" 123.4567 ", pql.Decimal{}, "invalid syntax"}, + {" 123.4567", pql.Decimal{}, "invalid syntax"}, + {"123.4567 ", pql.Decimal{}, "invalid syntax"}, + {"0.a", pql.Decimal{}, "invalid syntax"}, // These are no longer error cases since we introduced precision adjustment. //{"922337203685477580.9", pql.Decimal{}, "value out of range"}, @@ -94,12 +96,12 @@ func TestDecimal(t *testing.T) { dec, err := pql.ParseDecimal(test.s) if test.expErr != "" { if err == nil || !strings.Contains(err.Error(), test.expErr) { - t.Fatalf("test %d expected error to contain: %s, but got: %v", i, test.expErr, err) + t.Fatalf("test %d parsing string `%s`: expected error to contain: %s, but got: %v", i, test.s, test.expErr, err) } } else if err != nil { t.Fatalf("test %d parsing string `%s`: %s", i, test.s, err) } else if dec != test.exp { - t.Fatalf("test %d expected: %v, but got: %v", i, test.exp, dec) + t.Fatalf("test %d parsing string `%s`: expected: %v, but got: %v", i, test.s, test.exp, dec) } } }) @@ -141,8 +143,6 @@ func TestDecimal(t *testing.T) { exp string }{ {"123.4567", "123.4567"}, - {" 123.4567", "123.4567"}, - {" 123.4567 ", "123.4567"}, {"123.456700", "123.4567"}, {"00123.4567", "123.4567"}, {"+123.4567", "123.4567"}, @@ -161,8 +161,8 @@ func TestDecimal(t *testing.T) { {"0.123", "0.123"}, {"0.001230", "0.00123"}, - {" 0.001230 ", "0.00123"}, - {"-0.001230 ", "-0.00123"}, + {"+0.001230", "0.00123"}, + {"-0.001230", "-0.00123"}, } for i, test := range tests { dec, err := pql.ParseDecimal(test.s) diff --git a/pql/pql.peg b/pql/pql.peg index 1554f4c26..e413769e1 100644 --- a/pql/pql.peg +++ b/pql/pql.peg @@ -4,6 +4,7 @@ type PQL Peg { Query } +# All input queries consist of a sequence of calls, at the top level. Calls <- sp (Call sp)* !. Call <- "Set" {p.startCall("Set")} open col comma args (comma timestamp)? close {p.endCall()} / "SetRowAttrs" {p.startCall("SetRowAttrs")} open posfield comma row comma args close {p.endCall()} @@ -29,19 +30,18 @@ COND <- '><' { p.addBTWN() } / '>' { p.addGT() } conditional <- {p.startConditional()} condint condLT condfield condLT condint {p.endConditional()} -condint <- < '-'? [0-9]* '.' [0-9]+ / '0' / '-'? [1-9] [0-9]* > sp {p.condAdd(text)} +condint <- < decimal > sp {p.condAdd(text)} condLT <- <('<=' / '<')> sp {p.condAdd(text)} condfield <- sp {p.condAdd(text)} value <- item - / lbrack { p.startList() } list rbrack { p.endList() } -list <- item (comma list)? + / lbrack { p.startList() } items rbrack { p.endList() } +items <- item (comma items)? item <- 'null' &(comma / close) { p.addVal(nil) } / 'true' &(comma / close) { p.addVal(true) } / 'false' &(comma / close) { p.addVal(false) } / timestampfmt { p.addVal(text) } - / < '-'? [0-9]+ ('.'[0-9]*)? > { p.addNumVal(text) } - / < '-'? '.'[0-9]+ > { p.addNumVal(text) } + / < decimal > { p.addNumVal(text) } / < IDENT > { p.startCall(text) } open allargs comma? close { p.addVal(p.endCall()) } / < ([[A-Z]] / [0-9] / '-' / '_' / ':')+ > { p.addVal(text) } / < '"' doublequotedstring '"' > { p.addVal(text) } @@ -54,11 +54,10 @@ fieldExpr <- ( [[A-Z]] / '_' ) ( [[A-Z]] / [0-9] / '_' / '-' )* field <- { p.addField(text) } reserved <- '_row' / '_col' / '_start' / '_end' / '_timestamp' / '_field' posfield <- { p.addPosStr("_field", text) } -uint <- [1-9] [0-9]* / '0' -col <- {p.addPosNum("_col", text)} +col <- < digits > {p.addPosNum("_col", text)} / < '\'' singlequotedstring '\'' > {p.addPosStr("_col", text)} / < '"' doublequotedstring '"' > {p.addPosStr("_col", text)} -row <- {p.addPosNum("_row", text)} +row <- < digits > {p.addPosNum("_row", text)} / < '\'' singlequotedstring '\'' > {p.addPosStr("_row", text)} / < '"' doublequotedstring '"' > {p.addPosStr("_row", text)} @@ -70,7 +69,10 @@ comma <- sp ',' sp lbrack <- '[' sp rbrack <- sp ']' sp IDENT <- [[A-Z]] ([[A-Z]] / [0-9])* - +digits <- [0-9]+ +signedDigits <- '-'? digits +decimal <- signedDigits ('.' digits?)? + / '-'? '.' digits timestampbasicfmt <- [0-9][0-9][0-9][0-9]'-'[01][0-9]'-'[0-3][0-9]'T'[0-9][0-9]':'[0-9][0-9] timestampfmt <- '"' '"' / '\'' '\'' / diff --git a/pql/pql.peg.go b/pql/pql.peg.go index d36ee4bcb..61f765211 100644 --- a/pql/pql.peg.go +++ b/pql/pql.peg.go @@ -29,7 +29,7 @@ const ( rulecondLT rulecondfield rulevalue - rulelist + ruleitems ruleitem ruledoublequotedstring rulesinglequotedstring @@ -37,7 +37,6 @@ const ( rulefield rulereserved ruleposfield - ruleuint rulecol rulerow ruleopen @@ -48,6 +47,9 @@ const ( rulelbrack rulerbrack ruleIDENT + ruledigits + rulesignedDigits + ruledecimal ruletimestampbasicfmt ruletimestampfmt ruletimestamp @@ -109,7 +111,6 @@ const ( ruleAction54 ruleAction55 ruleAction56 - ruleAction57 ) var rul3s = [...]string{ @@ -125,7 +126,7 @@ var rul3s = [...]string{ "condLT", "condfield", "value", - "list", + "items", "item", "doublequotedstring", "singlequotedstring", @@ -133,7 +134,6 @@ var rul3s = [...]string{ "field", "reserved", "posfield", - "uint", "col", "row", "open", @@ -144,6 +144,9 @@ var rul3s = [...]string{ "lbrack", "rbrack", "IDENT", + "digits", + "signedDigits", + "decimal", "timestampbasicfmt", "timestampfmt", "timestamp", @@ -205,7 +208,6 @@ var rul3s = [...]string{ "Action54", "Action55", "Action56", - "Action57", } type token32 struct { @@ -322,7 +324,7 @@ type PQL struct { Buffer string buffer []rune - rules [93]func() bool + rules [94]func() bool parse func(rule ...int) error reset func() Pretty bool @@ -511,34 +513,32 @@ func (p *PQL) Execute() { case ruleAction42: p.addNumVal(text) case ruleAction43: - p.addNumVal(text) - case ruleAction44: p.startCall(text) - case ruleAction45: + case ruleAction44: p.addVal(p.endCall()) + case ruleAction45: + p.addVal(text) case ruleAction46: p.addVal(text) case ruleAction47: p.addVal(text) case ruleAction48: - p.addVal(text) - case ruleAction49: p.addField(text) - case ruleAction50: + case ruleAction49: p.addPosStr("_field", text) - case ruleAction51: + case ruleAction50: p.addPosNum("_col", text) + case ruleAction51: + p.addPosStr("_col", text) case ruleAction52: p.addPosStr("_col", text) case ruleAction53: - p.addPosStr("_col", text) - case ruleAction54: p.addPosNum("_row", text) + case ruleAction54: + p.addPosStr("_row", text) case ruleAction55: p.addPosStr("_row", text) case ruleAction56: - p.addPosStr("_row", text) - case ruleAction57: p.addPosStr("_timestamp", text) } @@ -752,7 +752,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { add(rulePegText, position19) } { - add(ruleAction57, position) + add(ruleAction56, position) } add(ruletimestamp, position18) } @@ -953,13 +953,13 @@ func (p *PQL) Init(options ...func(*PQL) error) error { position47, tokenIndex47 := position, tokenIndex { position49 := position - if !_rules[ruleuint]() { + if !_rules[ruledigits]() { goto l48 } add(rulePegText, position49) } { - add(ruleAction54, position) + add(ruleAction53, position) } goto l47 l48: @@ -980,7 +980,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { add(rulePegText, position52) } { - add(ruleAction55, position) + add(ruleAction54, position) } goto l47 l51: @@ -1001,7 +1001,7 @@ func (p *PQL) Init(options ...func(*PQL) error) error { add(rulePegText, position54) } { - add(ruleAction56, position) + add(ruleAction55, position) } } l47: @@ -2256,94 +2256,16 @@ func (p *PQL) Init(options ...func(*PQL) error) error { nil, /* 6 conditional <- <(Action31 condint condLT condfield condLT condint Action32)> */ nil, - /* 7 condint <- <(<(('-'? [0-9]* '.' [0-9]+) / '0' / ('-'? [1-9] [0-9]*))> sp Action33)> */ + /* 7 condint <- <( sp Action33)> */ func() bool { position226, tokenIndex226 := position, tokenIndex { position227 := position { position228 := position - { - position229, tokenIndex229 := position, tokenIndex - { - position231, tokenIndex231 := position, tokenIndex - if buffer[position] != rune('-') { - goto l231 - } - position++ - goto l232 - l231: - position, tokenIndex = position231, tokenIndex231 - } - l232: - l233: - { - position234, tokenIndex234 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l234 - } - position++ - goto l233 - l234: - position, tokenIndex = position234, tokenIndex234 - } - if buffer[position] != rune('.') { - goto l230 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l230 - } - position++ - l235: - { - position236, tokenIndex236 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l236 - } - position++ - goto l235 - l236: - position, tokenIndex = position236, tokenIndex236 - } - goto l229 - l230: - position, tokenIndex = position229, tokenIndex229 - if buffer[position] != rune('0') { - goto l237 - } - position++ - goto l229 - l237: - position, tokenIndex = position229, tokenIndex229 - { - position238, tokenIndex238 := position, tokenIndex - if buffer[position] != rune('-') { - goto l238 - } - position++ - goto l239 - l238: - position, tokenIndex = position238, tokenIndex238 - } - l239: - if c := buffer[position]; c < rune('1') || c > rune('9') { - goto l226 - } - position++ - l240: - { - position241, tokenIndex241 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l241 - } - position++ - goto l240 - l241: - position, tokenIndex = position241, tokenIndex241 - } + if !_rules[ruledecimal]() { + goto l226 } - l229: add(rulePegText, position228) } if !_rules[rulesp]() { @@ -2361,1569 +2283,1549 @@ func (p *PQL) Init(options ...func(*PQL) error) error { }, /* 8 condLT <- <(<(('<' '=') / '<')> sp Action34)> */ func() bool { - position243, tokenIndex243 := position, tokenIndex + position230, tokenIndex230 := position, tokenIndex { - position244 := position + position231 := position { - position245 := position + position232 := position { - position246, tokenIndex246 := position, tokenIndex + position233, tokenIndex233 := position, tokenIndex if buffer[position] != rune('<') { - goto l247 + goto l234 } position++ if buffer[position] != rune('=') { - goto l247 + goto l234 } position++ - goto l246 - l247: - position, tokenIndex = position246, tokenIndex246 + goto l233 + l234: + position, tokenIndex = position233, tokenIndex233 if buffer[position] != rune('<') { - goto l243 + goto l230 } position++ } - l246: - add(rulePegText, position245) + l233: + add(rulePegText, position232) } if !_rules[rulesp]() { - goto l243 + goto l230 } { add(ruleAction34, position) } - add(rulecondLT, position244) + add(rulecondLT, position231) } return true - l243: - position, tokenIndex = position243, tokenIndex243 + l230: + position, tokenIndex = position230, tokenIndex230 return false }, /* 9 condfield <- <( sp Action35)> */ nil, - /* 10 value <- <(item / (lbrack Action36 list rbrack Action37))> */ + /* 10 value <- <(item / (lbrack Action36 items rbrack Action37))> */ func() bool { - position250, tokenIndex250 := position, tokenIndex + position237, tokenIndex237 := position, tokenIndex { - position251 := position + position238 := position { - position252, tokenIndex252 := position, tokenIndex + position239, tokenIndex239 := position, tokenIndex if !_rules[ruleitem]() { - goto l253 + goto l240 } - goto l252 - l253: - position, tokenIndex = position252, tokenIndex252 + goto l239 + l240: + position, tokenIndex = position239, tokenIndex239 { - position254 := position + position241 := position if buffer[position] != rune('[') { - goto l250 + goto l237 } position++ if !_rules[rulesp]() { - goto l250 + goto l237 } - add(rulelbrack, position254) + add(rulelbrack, position241) } { add(ruleAction36, position) } - if !_rules[rulelist]() { - goto l250 + if !_rules[ruleitems]() { + goto l237 } { - position256 := position + position243 := position if !_rules[rulesp]() { - goto l250 + goto l237 } if buffer[position] != rune(']') { - goto l250 + goto l237 } position++ if !_rules[rulesp]() { - goto l250 + goto l237 } - add(rulerbrack, position256) + add(rulerbrack, position243) } { add(ruleAction37, position) } } - l252: - add(rulevalue, position251) + l239: + add(rulevalue, position238) } return true - l250: - position, tokenIndex = position250, tokenIndex250 + l237: + position, tokenIndex = position237, tokenIndex237 return false }, - /* 11 list <- <(item (comma list)?)> */ + /* 11 items <- <(item (comma items)?)> */ func() bool { - position258, tokenIndex258 := position, tokenIndex + position245, tokenIndex245 := position, tokenIndex { - position259 := position + position246 := position if !_rules[ruleitem]() { - goto l258 + goto l245 } { - position260, tokenIndex260 := position, tokenIndex + position247, tokenIndex247 := position, tokenIndex if !_rules[rulecomma]() { - goto l260 + goto l247 } - if !_rules[rulelist]() { - goto l260 + if !_rules[ruleitems]() { + goto l247 } - goto l261 - l260: - position, tokenIndex = position260, tokenIndex260 + goto l248 + l247: + position, tokenIndex = position247, tokenIndex247 } - l261: - add(rulelist, position259) + l248: + add(ruleitems, position246) } return true - l258: - position, tokenIndex = position258, tokenIndex258 + l245: + position, tokenIndex = position245, tokenIndex245 return false }, - /* 12 item <- <(('n' 'u' 'l' 'l' &(comma / close) Action38) / ('t' 'r' 'u' 'e' &(comma / close) Action39) / ('f' 'a' 'l' 's' 'e' &(comma / close) Action40) / (timestampfmt Action41) / (<('-'? [0-9]+ ('.' [0-9]*)?)> Action42) / (<('-'? '.' [0-9]+)> Action43) / ( Action44 open allargs comma? close Action45) / (<([a-z] / [A-Z] / [0-9] / '-' / '_' / ':')+> Action46) / (<('"' doublequotedstring '"')> Action47) / (<('\'' singlequotedstring '\'')> Action48))> */ + /* 12 item <- <(('n' 'u' 'l' 'l' &(comma / close) Action38) / ('t' 'r' 'u' 'e' &(comma / close) Action39) / ('f' 'a' 'l' 's' 'e' &(comma / close) Action40) / (timestampfmt Action41) / ( Action42) / ( Action43 open allargs comma? close Action44) / (<([a-z] / [A-Z] / [0-9] / '-' / '_' / ':')+> Action45) / (<('"' doublequotedstring '"')> Action46) / (<('\'' singlequotedstring '\'')> Action47))> */ func() bool { - position262, tokenIndex262 := position, tokenIndex + position249, tokenIndex249 := position, tokenIndex { - position263 := position + position250 := position { - position264, tokenIndex264 := position, tokenIndex + position251, tokenIndex251 := position, tokenIndex if buffer[position] != rune('n') { - goto l265 + goto l252 } position++ if buffer[position] != rune('u') { - goto l265 + goto l252 } position++ if buffer[position] != rune('l') { - goto l265 + goto l252 } position++ if buffer[position] != rune('l') { - goto l265 + goto l252 } position++ { - position266, tokenIndex266 := position, tokenIndex + position253, tokenIndex253 := position, tokenIndex { - position267, tokenIndex267 := position, tokenIndex + position254, tokenIndex254 := position, tokenIndex if !_rules[rulecomma]() { - goto l268 + goto l255 } - goto l267 - l268: - position, tokenIndex = position267, tokenIndex267 + goto l254 + l255: + position, tokenIndex = position254, tokenIndex254 if !_rules[ruleclose]() { - goto l265 + goto l252 } } - l267: - position, tokenIndex = position266, tokenIndex266 + l254: + position, tokenIndex = position253, tokenIndex253 } { add(ruleAction38, position) } - goto l264 - l265: - position, tokenIndex = position264, tokenIndex264 + goto l251 + l252: + position, tokenIndex = position251, tokenIndex251 if buffer[position] != rune('t') { - goto l270 + goto l257 } position++ if buffer[position] != rune('r') { - goto l270 + goto l257 } position++ if buffer[position] != rune('u') { - goto l270 + goto l257 } position++ if buffer[position] != rune('e') { - goto l270 + goto l257 } position++ { - position271, tokenIndex271 := position, tokenIndex + position258, tokenIndex258 := position, tokenIndex { - position272, tokenIndex272 := position, tokenIndex + position259, tokenIndex259 := position, tokenIndex if !_rules[rulecomma]() { - goto l273 + goto l260 } - goto l272 - l273: - position, tokenIndex = position272, tokenIndex272 + goto l259 + l260: + position, tokenIndex = position259, tokenIndex259 if !_rules[ruleclose]() { - goto l270 + goto l257 } } - l272: - position, tokenIndex = position271, tokenIndex271 + l259: + position, tokenIndex = position258, tokenIndex258 } { add(ruleAction39, position) } - goto l264 - l270: - position, tokenIndex = position264, tokenIndex264 + goto l251 + l257: + position, tokenIndex = position251, tokenIndex251 if buffer[position] != rune('f') { - goto l275 + goto l262 } position++ if buffer[position] != rune('a') { - goto l275 + goto l262 } position++ if buffer[position] != rune('l') { - goto l275 + goto l262 } position++ if buffer[position] != rune('s') { - goto l275 + goto l262 } position++ if buffer[position] != rune('e') { - goto l275 + goto l262 } position++ { - position276, tokenIndex276 := position, tokenIndex + position263, tokenIndex263 := position, tokenIndex { - position277, tokenIndex277 := position, tokenIndex + position264, tokenIndex264 := position, tokenIndex if !_rules[rulecomma]() { - goto l278 + goto l265 } - goto l277 - l278: - position, tokenIndex = position277, tokenIndex277 + goto l264 + l265: + position, tokenIndex = position264, tokenIndex264 if !_rules[ruleclose]() { - goto l275 + goto l262 } } - l277: - position, tokenIndex = position276, tokenIndex276 + l264: + position, tokenIndex = position263, tokenIndex263 } { add(ruleAction40, position) } - goto l264 - l275: - position, tokenIndex = position264, tokenIndex264 + goto l251 + l262: + position, tokenIndex = position251, tokenIndex251 if !_rules[ruletimestampfmt]() { - goto l280 + goto l267 } { add(ruleAction41, position) } - goto l264 - l280: - position, tokenIndex = position264, tokenIndex264 + goto l251 + l267: + position, tokenIndex = position251, tokenIndex251 { - position283 := position - { - position284, tokenIndex284 := position, tokenIndex - if buffer[position] != rune('-') { - goto l284 - } - position++ - goto l285 - l284: - position, tokenIndex = position284, tokenIndex284 + position270 := position + if !_rules[ruledecimal]() { + goto l269 } - l285: - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l282 - } - position++ - l286: - { - position287, tokenIndex287 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l287 - } - position++ - goto l286 - l287: - position, tokenIndex = position287, tokenIndex287 - } - { - position288, tokenIndex288 := position, tokenIndex - if buffer[position] != rune('.') { - goto l288 - } - position++ - l290: - { - position291, tokenIndex291 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l291 - } - position++ - goto l290 - l291: - position, tokenIndex = position291, tokenIndex291 - } - goto l289 - l288: - position, tokenIndex = position288, tokenIndex288 - } - l289: - add(rulePegText, position283) + add(rulePegText, position270) } { add(ruleAction42, position) } - goto l264 - l282: - position, tokenIndex = position264, tokenIndex264 + goto l251 + l269: + position, tokenIndex = position251, tokenIndex251 { - position294 := position - { - position295, tokenIndex295 := position, tokenIndex - if buffer[position] != rune('-') { - goto l295 - } - position++ - goto l296 - l295: - position, tokenIndex = position295, tokenIndex295 + position273 := position + if !_rules[ruleIDENT]() { + goto l272 } - l296: - if buffer[position] != rune('.') { - goto l293 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l293 - } - position++ - l297: - { - position298, tokenIndex298 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l298 - } - position++ - goto l297 - l298: - position, tokenIndex = position298, tokenIndex298 - } - add(rulePegText, position294) + add(rulePegText, position273) } { add(ruleAction43, position) } - goto l264 - l293: - position, tokenIndex = position264, tokenIndex264 + if !_rules[ruleopen]() { + goto l272 + } + if !_rules[ruleallargs]() { + goto l272 + } { - position301 := position - if !_rules[ruleIDENT]() { - goto l300 + position275, tokenIndex275 := position, tokenIndex + if !_rules[rulecomma]() { + goto l275 } - add(rulePegText, position301) + goto l276 + l275: + position, tokenIndex = position275, tokenIndex275 + } + l276: + if !_rules[ruleclose]() { + goto l272 } { add(ruleAction44, position) } - if !_rules[ruleopen]() { - goto l300 - } - if !_rules[ruleallargs]() { - goto l300 - } + goto l251 + l272: + position, tokenIndex = position251, tokenIndex251 { - position303, tokenIndex303 := position, tokenIndex - if !_rules[rulecomma]() { - goto l303 + position279 := position + { + position282, tokenIndex282 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l283 + } + position++ + goto l282 + l283: + position, tokenIndex = position282, tokenIndex282 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l284 + } + position++ + goto l282 + l284: + position, tokenIndex = position282, tokenIndex282 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l285 + } + position++ + goto l282 + l285: + position, tokenIndex = position282, tokenIndex282 + if buffer[position] != rune('-') { + goto l286 + } + position++ + goto l282 + l286: + position, tokenIndex = position282, tokenIndex282 + if buffer[position] != rune('_') { + goto l287 + } + position++ + goto l282 + l287: + position, tokenIndex = position282, tokenIndex282 + if buffer[position] != rune(':') { + goto l278 + } + position++ } - goto l304 - l303: - position, tokenIndex = position303, tokenIndex303 - } - l304: - if !_rules[ruleclose]() { - goto l300 + l282: + l280: + { + position281, tokenIndex281 := position, tokenIndex + { + position288, tokenIndex288 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l289 + } + position++ + goto l288 + l289: + position, tokenIndex = position288, tokenIndex288 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l290 + } + position++ + goto l288 + l290: + position, tokenIndex = position288, tokenIndex288 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l291 + } + position++ + goto l288 + l291: + position, tokenIndex = position288, tokenIndex288 + if buffer[position] != rune('-') { + goto l292 + } + position++ + goto l288 + l292: + position, tokenIndex = position288, tokenIndex288 + if buffer[position] != rune('_') { + goto l293 + } + position++ + goto l288 + l293: + position, tokenIndex = position288, tokenIndex288 + if buffer[position] != rune(':') { + goto l281 + } + position++ + } + l288: + goto l280 + l281: + position, tokenIndex = position281, tokenIndex281 + } + add(rulePegText, position279) } { add(ruleAction45, position) } - goto l264 - l300: - position, tokenIndex = position264, tokenIndex264 + goto l251 + l278: + position, tokenIndex = position251, tokenIndex251 { - position307 := position - { - position310, tokenIndex310 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l311 - } - position++ - goto l310 - l311: - position, tokenIndex = position310, tokenIndex310 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l312 - } - position++ - goto l310 - l312: - position, tokenIndex = position310, tokenIndex310 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l313 - } - position++ - goto l310 - l313: - position, tokenIndex = position310, tokenIndex310 - if buffer[position] != rune('-') { - goto l314 - } - position++ - goto l310 - l314: - position, tokenIndex = position310, tokenIndex310 - if buffer[position] != rune('_') { - goto l315 - } - position++ - goto l310 - l315: - position, tokenIndex = position310, tokenIndex310 - if buffer[position] != rune(':') { - goto l306 - } - position++ + position296 := position + if buffer[position] != rune('"') { + goto l295 } - l310: - l308: - { - position309, tokenIndex309 := position, tokenIndex - { - position316, tokenIndex316 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l317 - } - position++ - goto l316 - l317: - position, tokenIndex = position316, tokenIndex316 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l318 - } - position++ - goto l316 - l318: - position, tokenIndex = position316, tokenIndex316 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l319 - } - position++ - goto l316 - l319: - position, tokenIndex = position316, tokenIndex316 - if buffer[position] != rune('-') { - goto l320 - } - position++ - goto l316 - l320: - position, tokenIndex = position316, tokenIndex316 - if buffer[position] != rune('_') { - goto l321 - } - position++ - goto l316 - l321: - position, tokenIndex = position316, tokenIndex316 - if buffer[position] != rune(':') { - goto l309 - } - position++ - } - l316: - goto l308 - l309: - position, tokenIndex = position309, tokenIndex309 + position++ + if !_rules[ruledoublequotedstring]() { + goto l295 } - add(rulePegText, position307) + if buffer[position] != rune('"') { + goto l295 + } + position++ + add(rulePegText, position296) } { add(ruleAction46, position) } - goto l264 - l306: - position, tokenIndex = position264, tokenIndex264 + goto l251 + l295: + position, tokenIndex = position251, tokenIndex251 { - position324 := position - if buffer[position] != rune('"') { - goto l323 + position298 := position + if buffer[position] != rune('\'') { + goto l249 } position++ - if !_rules[ruledoublequotedstring]() { - goto l323 + if !_rules[rulesinglequotedstring]() { + goto l249 } - if buffer[position] != rune('"') { - goto l323 + if buffer[position] != rune('\'') { + goto l249 } position++ - add(rulePegText, position324) + add(rulePegText, position298) } { add(ruleAction47, position) } - goto l264 - l323: - position, tokenIndex = position264, tokenIndex264 - { - position326 := position - if buffer[position] != rune('\'') { - goto l262 - } - position++ - if !_rules[rulesinglequotedstring]() { - goto l262 - } - if buffer[position] != rune('\'') { - goto l262 - } - position++ - add(rulePegText, position326) - } - { - add(ruleAction48, position) - } } - l264: - add(ruleitem, position263) + l251: + add(ruleitem, position250) } return true - l262: - position, tokenIndex = position262, tokenIndex262 + l249: + position, tokenIndex = position249, tokenIndex249 return false }, /* 13 doublequotedstring <- <(('\\' '"') / ('\\' '\\') / ('\\' 'n') / ('\\' 't') / (!('"' / '\\') .))*> */ func() bool { { - position329 := position - l330: + position301 := position + l302: { - position331, tokenIndex331 := position, tokenIndex + position303, tokenIndex303 := position, tokenIndex { - position332, tokenIndex332 := position, tokenIndex + position304, tokenIndex304 := position, tokenIndex if buffer[position] != rune('\\') { - goto l333 + goto l305 } position++ if buffer[position] != rune('"') { - goto l333 + goto l305 } position++ - goto l332 - l333: - position, tokenIndex = position332, tokenIndex332 + goto l304 + l305: + position, tokenIndex = position304, tokenIndex304 if buffer[position] != rune('\\') { - goto l334 + goto l306 } position++ if buffer[position] != rune('\\') { - goto l334 + goto l306 } position++ - goto l332 - l334: - position, tokenIndex = position332, tokenIndex332 + goto l304 + l306: + position, tokenIndex = position304, tokenIndex304 if buffer[position] != rune('\\') { - goto l335 + goto l307 } position++ if buffer[position] != rune('n') { - goto l335 + goto l307 } position++ - goto l332 - l335: - position, tokenIndex = position332, tokenIndex332 + goto l304 + l307: + position, tokenIndex = position304, tokenIndex304 if buffer[position] != rune('\\') { - goto l336 + goto l308 } position++ if buffer[position] != rune('t') { - goto l336 + goto l308 } position++ - goto l332 - l336: - position, tokenIndex = position332, tokenIndex332 + goto l304 + l308: + position, tokenIndex = position304, tokenIndex304 { - position337, tokenIndex337 := position, tokenIndex + position309, tokenIndex309 := position, tokenIndex { - position338, tokenIndex338 := position, tokenIndex + position310, tokenIndex310 := position, tokenIndex if buffer[position] != rune('"') { - goto l339 + goto l311 } position++ - goto l338 - l339: - position, tokenIndex = position338, tokenIndex338 + goto l310 + l311: + position, tokenIndex = position310, tokenIndex310 if buffer[position] != rune('\\') { - goto l337 + goto l309 } position++ } - l338: - goto l331 - l337: - position, tokenIndex = position337, tokenIndex337 + l310: + goto l303 + l309: + position, tokenIndex = position309, tokenIndex309 } if !matchDot() { - goto l331 + goto l303 } } - l332: - goto l330 - l331: - position, tokenIndex = position331, tokenIndex331 + l304: + goto l302 + l303: + position, tokenIndex = position303, tokenIndex303 } - add(ruledoublequotedstring, position329) + add(ruledoublequotedstring, position301) } return true }, /* 14 singlequotedstring <- <(('\\' '\'') / ('\\' '\\') / ('\\' 'n') / ('\\' 't') / (!('\'' / '\\') .))*> */ func() bool { { - position341 := position - l342: + position313 := position + l314: { - position343, tokenIndex343 := position, tokenIndex + position315, tokenIndex315 := position, tokenIndex { - position344, tokenIndex344 := position, tokenIndex + position316, tokenIndex316 := position, tokenIndex if buffer[position] != rune('\\') { - goto l345 + goto l317 } position++ if buffer[position] != rune('\'') { - goto l345 + goto l317 } position++ - goto l344 - l345: - position, tokenIndex = position344, tokenIndex344 + goto l316 + l317: + position, tokenIndex = position316, tokenIndex316 if buffer[position] != rune('\\') { - goto l346 + goto l318 } position++ if buffer[position] != rune('\\') { - goto l346 + goto l318 } position++ - goto l344 - l346: - position, tokenIndex = position344, tokenIndex344 + goto l316 + l318: + position, tokenIndex = position316, tokenIndex316 if buffer[position] != rune('\\') { - goto l347 + goto l319 } position++ if buffer[position] != rune('n') { - goto l347 + goto l319 } position++ - goto l344 - l347: - position, tokenIndex = position344, tokenIndex344 + goto l316 + l319: + position, tokenIndex = position316, tokenIndex316 if buffer[position] != rune('\\') { - goto l348 + goto l320 } position++ if buffer[position] != rune('t') { - goto l348 + goto l320 } position++ - goto l344 - l348: - position, tokenIndex = position344, tokenIndex344 + goto l316 + l320: + position, tokenIndex = position316, tokenIndex316 { - position349, tokenIndex349 := position, tokenIndex + position321, tokenIndex321 := position, tokenIndex { - position350, tokenIndex350 := position, tokenIndex + position322, tokenIndex322 := position, tokenIndex if buffer[position] != rune('\'') { - goto l351 + goto l323 } position++ - goto l350 - l351: - position, tokenIndex = position350, tokenIndex350 + goto l322 + l323: + position, tokenIndex = position322, tokenIndex322 if buffer[position] != rune('\\') { - goto l349 + goto l321 } position++ } - l350: - goto l343 - l349: - position, tokenIndex = position349, tokenIndex349 + l322: + goto l315 + l321: + position, tokenIndex = position321, tokenIndex321 } if !matchDot() { - goto l343 + goto l315 } } - l344: - goto l342 - l343: - position, tokenIndex = position343, tokenIndex343 + l316: + goto l314 + l315: + position, tokenIndex = position315, tokenIndex315 } - add(rulesinglequotedstring, position341) + add(rulesinglequotedstring, position313) } return true }, /* 15 fieldExpr <- <(([a-z] / [A-Z] / '_') ([a-z] / [A-Z] / [0-9] / '_' / '-')*)> */ func() bool { - position352, tokenIndex352 := position, tokenIndex + position324, tokenIndex324 := position, tokenIndex { - position353 := position + position325 := position { - position354, tokenIndex354 := position, tokenIndex + position326, tokenIndex326 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l355 + goto l327 } position++ - goto l354 - l355: - position, tokenIndex = position354, tokenIndex354 + goto l326 + l327: + position, tokenIndex = position326, tokenIndex326 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l356 + goto l328 } position++ - goto l354 - l356: - position, tokenIndex = position354, tokenIndex354 + goto l326 + l328: + position, tokenIndex = position326, tokenIndex326 if buffer[position] != rune('_') { - goto l352 + goto l324 } position++ } - l354: - l357: + l326: + l329: { - position358, tokenIndex358 := position, tokenIndex + position330, tokenIndex330 := position, tokenIndex { - position359, tokenIndex359 := position, tokenIndex + position331, tokenIndex331 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l360 + goto l332 } position++ - goto l359 - l360: - position, tokenIndex = position359, tokenIndex359 + goto l331 + l332: + position, tokenIndex = position331, tokenIndex331 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l361 + goto l333 } position++ - goto l359 - l361: - position, tokenIndex = position359, tokenIndex359 + goto l331 + l333: + position, tokenIndex = position331, tokenIndex331 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l362 + goto l334 } position++ - goto l359 - l362: - position, tokenIndex = position359, tokenIndex359 + goto l331 + l334: + position, tokenIndex = position331, tokenIndex331 if buffer[position] != rune('_') { - goto l363 + goto l335 } position++ - goto l359 - l363: - position, tokenIndex = position359, tokenIndex359 + goto l331 + l335: + position, tokenIndex = position331, tokenIndex331 if buffer[position] != rune('-') { - goto l358 + goto l330 } position++ } - l359: - goto l357 - l358: - position, tokenIndex = position358, tokenIndex358 + l331: + goto l329 + l330: + position, tokenIndex = position330, tokenIndex330 } - add(rulefieldExpr, position353) + add(rulefieldExpr, position325) } return true - l352: - position, tokenIndex = position352, tokenIndex352 + l324: + position, tokenIndex = position324, tokenIndex324 return false }, - /* 16 field <- <(<(fieldExpr / reserved)> Action49)> */ + /* 16 field <- <(<(fieldExpr / reserved)> Action48)> */ func() bool { - position364, tokenIndex364 := position, tokenIndex + position336, tokenIndex336 := position, tokenIndex { - position365 := position + position337 := position { - position366 := position + position338 := position { - position367, tokenIndex367 := position, tokenIndex + position339, tokenIndex339 := position, tokenIndex if !_rules[rulefieldExpr]() { - goto l368 + goto l340 } - goto l367 - l368: - position, tokenIndex = position367, tokenIndex367 + goto l339 + l340: + position, tokenIndex = position339, tokenIndex339 { - position369 := position + position341 := position { - position370, tokenIndex370 := position, tokenIndex + position342, tokenIndex342 := position, tokenIndex if buffer[position] != rune('_') { - goto l371 + goto l343 } position++ if buffer[position] != rune('r') { - goto l371 + goto l343 } position++ if buffer[position] != rune('o') { - goto l371 + goto l343 } position++ if buffer[position] != rune('w') { - goto l371 + goto l343 } position++ - goto l370 - l371: - position, tokenIndex = position370, tokenIndex370 + goto l342 + l343: + position, tokenIndex = position342, tokenIndex342 if buffer[position] != rune('_') { - goto l372 + goto l344 } position++ if buffer[position] != rune('c') { - goto l372 + goto l344 } position++ if buffer[position] != rune('o') { - goto l372 + goto l344 } position++ if buffer[position] != rune('l') { - goto l372 + goto l344 } position++ - goto l370 - l372: - position, tokenIndex = position370, tokenIndex370 + goto l342 + l344: + position, tokenIndex = position342, tokenIndex342 if buffer[position] != rune('_') { - goto l373 + goto l345 } position++ if buffer[position] != rune('s') { - goto l373 + goto l345 } position++ if buffer[position] != rune('t') { - goto l373 + goto l345 } position++ if buffer[position] != rune('a') { - goto l373 + goto l345 } position++ if buffer[position] != rune('r') { - goto l373 + goto l345 } position++ if buffer[position] != rune('t') { - goto l373 + goto l345 } position++ - goto l370 - l373: - position, tokenIndex = position370, tokenIndex370 + goto l342 + l345: + position, tokenIndex = position342, tokenIndex342 if buffer[position] != rune('_') { - goto l374 + goto l346 } position++ if buffer[position] != rune('e') { - goto l374 + goto l346 } position++ if buffer[position] != rune('n') { - goto l374 + goto l346 } position++ if buffer[position] != rune('d') { - goto l374 + goto l346 } position++ - goto l370 - l374: - position, tokenIndex = position370, tokenIndex370 + goto l342 + l346: + position, tokenIndex = position342, tokenIndex342 if buffer[position] != rune('_') { - goto l375 + goto l347 } position++ if buffer[position] != rune('t') { - goto l375 + goto l347 } position++ if buffer[position] != rune('i') { - goto l375 + goto l347 } position++ if buffer[position] != rune('m') { - goto l375 + goto l347 } position++ if buffer[position] != rune('e') { - goto l375 + goto l347 } position++ if buffer[position] != rune('s') { - goto l375 + goto l347 } position++ if buffer[position] != rune('t') { - goto l375 + goto l347 } position++ if buffer[position] != rune('a') { - goto l375 + goto l347 } position++ if buffer[position] != rune('m') { - goto l375 + goto l347 } position++ if buffer[position] != rune('p') { - goto l375 + goto l347 } position++ - goto l370 - l375: - position, tokenIndex = position370, tokenIndex370 + goto l342 + l347: + position, tokenIndex = position342, tokenIndex342 if buffer[position] != rune('_') { - goto l364 + goto l336 } position++ if buffer[position] != rune('f') { - goto l364 + goto l336 } position++ if buffer[position] != rune('i') { - goto l364 + goto l336 } position++ if buffer[position] != rune('e') { - goto l364 + goto l336 } position++ if buffer[position] != rune('l') { - goto l364 + goto l336 } position++ if buffer[position] != rune('d') { - goto l364 + goto l336 } position++ } - l370: - add(rulereserved, position369) + l342: + add(rulereserved, position341) } } - l367: - add(rulePegText, position366) + l339: + add(rulePegText, position338) } { - add(ruleAction49, position) + add(ruleAction48, position) } - add(rulefield, position365) + add(rulefield, position337) } return true - l364: - position, tokenIndex = position364, tokenIndex364 + l336: + position, tokenIndex = position336, tokenIndex336 return false }, /* 17 reserved <- <(('_' 'r' 'o' 'w') / ('_' 'c' 'o' 'l') / ('_' 's' 't' 'a' 'r' 't') / ('_' 'e' 'n' 'd') / ('_' 't' 'i' 'm' 'e' 's' 't' 'a' 'm' 'p') / ('_' 'f' 'i' 'e' 'l' 'd'))> */ nil, - /* 18 posfield <- <( Action50)> */ + /* 18 posfield <- <( Action49)> */ func() bool { - position378, tokenIndex378 := position, tokenIndex + position350, tokenIndex350 := position, tokenIndex { - position379 := position + position351 := position { - position380 := position + position352 := position if !_rules[rulefieldExpr]() { - goto l378 + goto l350 } - add(rulePegText, position380) + add(rulePegText, position352) } { - add(ruleAction50, position) + add(ruleAction49, position) } - add(ruleposfield, position379) + add(ruleposfield, position351) } return true - l378: - position, tokenIndex = position378, tokenIndex378 + l350: + position, tokenIndex = position350, tokenIndex350 return false }, - /* 19 uint <- <(([1-9] [0-9]*) / '0')> */ + /* 19 col <- <(( Action50) / (<('\'' singlequotedstring '\'')> Action51) / (<('"' doublequotedstring '"')> Action52))> */ func() bool { - position382, tokenIndex382 := position, tokenIndex + position354, tokenIndex354 := position, tokenIndex { - position383 := position + position355 := position { - position384, tokenIndex384 := position, tokenIndex - if c := buffer[position]; c < rune('1') || c > rune('9') { - goto l385 - } - position++ - l386: + position356, tokenIndex356 := position, tokenIndex { - position387, tokenIndex387 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l387 + position358 := position + if !_rules[ruledigits]() { + goto l357 + } + add(rulePegText, position358) + } + { + add(ruleAction50, position) + } + goto l356 + l357: + position, tokenIndex = position356, tokenIndex356 + { + position361 := position + if buffer[position] != rune('\'') { + goto l360 } position++ - goto l386 - l387: - position, tokenIndex = position387, tokenIndex387 - } - goto l384 - l385: - position, tokenIndex = position384, tokenIndex384 - if buffer[position] != rune('0') { - goto l382 - } - position++ - } - l384: - add(ruleuint, position383) - } - return true - l382: - position, tokenIndex = position382, tokenIndex382 - return false - }, - /* 20 col <- <(( Action51) / (<('\'' singlequotedstring '\'')> Action52) / (<('"' doublequotedstring '"')> Action53))> */ - func() bool { - position388, tokenIndex388 := position, tokenIndex - { - position389 := position - { - position390, tokenIndex390 := position, tokenIndex - { - position392 := position - if !_rules[ruleuint]() { - goto l391 + if !_rules[rulesinglequotedstring]() { + goto l360 } - add(rulePegText, position392) + if buffer[position] != rune('\'') { + goto l360 + } + position++ + add(rulePegText, position361) } { add(ruleAction51, position) } - goto l390 - l391: - position, tokenIndex = position390, tokenIndex390 + goto l356 + l360: + position, tokenIndex = position356, tokenIndex356 { - position395 := position - if buffer[position] != rune('\'') { - goto l394 + position363 := position + if buffer[position] != rune('"') { + goto l354 } position++ - if !_rules[rulesinglequotedstring]() { - goto l394 + if !_rules[ruledoublequotedstring]() { + goto l354 } - if buffer[position] != rune('\'') { - goto l394 + if buffer[position] != rune('"') { + goto l354 } position++ - add(rulePegText, position395) + add(rulePegText, position363) } { add(ruleAction52, position) } - goto l390 - l394: - position, tokenIndex = position390, tokenIndex390 - { - position397 := position - if buffer[position] != rune('"') { - goto l388 - } - position++ - if !_rules[ruledoublequotedstring]() { - goto l388 - } - if buffer[position] != rune('"') { - goto l388 - } - position++ - add(rulePegText, position397) - } - { - add(ruleAction53, position) - } } - l390: - add(rulecol, position389) + l356: + add(rulecol, position355) } return true - l388: - position, tokenIndex = position388, tokenIndex388 + l354: + position, tokenIndex = position354, tokenIndex354 return false }, - /* 21 row <- <(( Action54) / (<('\'' singlequotedstring '\'')> Action55) / (<('"' doublequotedstring '"')> Action56))> */ + /* 20 row <- <(( Action53) / (<('\'' singlequotedstring '\'')> Action54) / (<('"' doublequotedstring '"')> Action55))> */ nil, - /* 22 open <- <('(' sp)> */ + /* 21 open <- <('(' sp)> */ func() bool { - position400, tokenIndex400 := position, tokenIndex + position366, tokenIndex366 := position, tokenIndex { - position401 := position + position367 := position if buffer[position] != rune('(') { - goto l400 + goto l366 } position++ if !_rules[rulesp]() { - goto l400 + goto l366 } - add(ruleopen, position401) + add(ruleopen, position367) } return true - l400: - position, tokenIndex = position400, tokenIndex400 + l366: + position, tokenIndex = position366, tokenIndex366 return false }, - /* 23 close <- <(sp ')' sp)> */ + /* 22 close <- <(sp ')' sp)> */ func() bool { - position402, tokenIndex402 := position, tokenIndex + position368, tokenIndex368 := position, tokenIndex { - position403 := position + position369 := position if !_rules[rulesp]() { - goto l402 + goto l368 } if buffer[position] != rune(')') { - goto l402 + goto l368 } position++ if !_rules[rulesp]() { - goto l402 + goto l368 } - add(ruleclose, position403) + add(ruleclose, position369) } return true - l402: - position, tokenIndex = position402, tokenIndex402 + l368: + position, tokenIndex = position368, tokenIndex368 return false }, - /* 24 sp <- <(' ' / '\t' / '\n')*> */ + /* 23 sp <- <(' ' / '\t' / '\n')*> */ func() bool { { - position405 := position - l406: + position371 := position + l372: { - position407, tokenIndex407 := position, tokenIndex + position373, tokenIndex373 := position, tokenIndex { - position408, tokenIndex408 := position, tokenIndex + position374, tokenIndex374 := position, tokenIndex if buffer[position] != rune(' ') { - goto l409 + goto l375 } position++ - goto l408 - l409: - position, tokenIndex = position408, tokenIndex408 + goto l374 + l375: + position, tokenIndex = position374, tokenIndex374 if buffer[position] != rune('\t') { - goto l410 + goto l376 } position++ - goto l408 - l410: - position, tokenIndex = position408, tokenIndex408 + goto l374 + l376: + position, tokenIndex = position374, tokenIndex374 if buffer[position] != rune('\n') { - goto l407 + goto l373 } position++ } - l408: - goto l406 - l407: - position, tokenIndex = position407, tokenIndex407 + l374: + goto l372 + l373: + position, tokenIndex = position373, tokenIndex373 } - add(rulesp, position405) + add(rulesp, position371) } return true }, - /* 25 eq <- <(sp '=' sp)> */ + /* 24 eq <- <(sp '=' sp)> */ func() bool { - position411, tokenIndex411 := position, tokenIndex + position377, tokenIndex377 := position, tokenIndex { - position412 := position + position378 := position if !_rules[rulesp]() { - goto l411 + goto l377 } if buffer[position] != rune('=') { - goto l411 + goto l377 } position++ if !_rules[rulesp]() { - goto l411 + goto l377 } - add(ruleeq, position412) + add(ruleeq, position378) } return true - l411: - position, tokenIndex = position411, tokenIndex411 + l377: + position, tokenIndex = position377, tokenIndex377 return false }, - /* 26 comma <- <(sp ',' sp)> */ + /* 25 comma <- <(sp ',' sp)> */ func() bool { - position413, tokenIndex413 := position, tokenIndex + position379, tokenIndex379 := position, tokenIndex { - position414 := position + position380 := position if !_rules[rulesp]() { - goto l413 + goto l379 } if buffer[position] != rune(',') { - goto l413 + goto l379 } position++ if !_rules[rulesp]() { - goto l413 + goto l379 } - add(rulecomma, position414) + add(rulecomma, position380) } return true - l413: - position, tokenIndex = position413, tokenIndex413 + l379: + position, tokenIndex = position379, tokenIndex379 return false }, - /* 27 lbrack <- <('[' sp)> */ + /* 26 lbrack <- <('[' sp)> */ nil, - /* 28 rbrack <- <(sp ']' sp)> */ + /* 27 rbrack <- <(sp ']' sp)> */ nil, - /* 29 IDENT <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / [0-9])*)> */ + /* 28 IDENT <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / [0-9])*)> */ func() bool { - position417, tokenIndex417 := position, tokenIndex + position383, tokenIndex383 := position, tokenIndex { - position418 := position + position384 := position { - position419, tokenIndex419 := position, tokenIndex + position385, tokenIndex385 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l420 + goto l386 } position++ - goto l419 - l420: - position, tokenIndex = position419, tokenIndex419 + goto l385 + l386: + position, tokenIndex = position385, tokenIndex385 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l417 + goto l383 } position++ } - l419: - l421: + l385: + l387: { - position422, tokenIndex422 := position, tokenIndex + position388, tokenIndex388 := position, tokenIndex { - position423, tokenIndex423 := position, tokenIndex + position389, tokenIndex389 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l424 + goto l390 } position++ - goto l423 - l424: - position, tokenIndex = position423, tokenIndex423 + goto l389 + l390: + position, tokenIndex = position389, tokenIndex389 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l425 + goto l391 } position++ - goto l423 - l425: - position, tokenIndex = position423, tokenIndex423 + goto l389 + l391: + position, tokenIndex = position389, tokenIndex389 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l422 + goto l388 } position++ } - l423: - goto l421 - l422: - position, tokenIndex = position422, tokenIndex422 + l389: + goto l387 + l388: + position, tokenIndex = position388, tokenIndex388 } - add(ruleIDENT, position418) + add(ruleIDENT, position384) } return true - l417: - position, tokenIndex = position417, tokenIndex417 + l383: + position, tokenIndex = position383, tokenIndex383 return false }, - /* 30 timestampbasicfmt <- <([0-9] [0-9] [0-9] [0-9] '-' ('0' / '1') [0-9] '-' [0-3] [0-9] 'T' [0-9] [0-9] ':' [0-9] [0-9])> */ + /* 29 digits <- <[0-9]+> */ func() bool { - position426, tokenIndex426 := position, tokenIndex + position392, tokenIndex392 := position, tokenIndex { - position427 := position + position393 := position if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l392 + } + position++ + l394: + { + position395, tokenIndex395 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l395 + } + position++ + goto l394 + l395: + position, tokenIndex = position395, tokenIndex395 + } + add(ruledigits, position393) + } + return true + l392: + position, tokenIndex = position392, tokenIndex392 + return false + }, + /* 30 signedDigits <- <('-'? digits)> */ + nil, + /* 31 decimal <- <((signedDigits ('.' digits?)?) / ('-'? '.' digits))> */ + func() bool { + position397, tokenIndex397 := position, tokenIndex + { + position398 := position + { + position399, tokenIndex399 := position, tokenIndex + { + position401 := position + { + position402, tokenIndex402 := position, tokenIndex + if buffer[position] != rune('-') { + goto l402 + } + position++ + goto l403 + l402: + position, tokenIndex = position402, tokenIndex402 + } + l403: + if !_rules[ruledigits]() { + goto l400 + } + add(rulesignedDigits, position401) + } + { + position404, tokenIndex404 := position, tokenIndex + if buffer[position] != rune('.') { + goto l404 + } + position++ + { + position406, tokenIndex406 := position, tokenIndex + if !_rules[ruledigits]() { + goto l406 + } + goto l407 + l406: + position, tokenIndex = position406, tokenIndex406 + } + l407: + goto l405 + l404: + position, tokenIndex = position404, tokenIndex404 + } + l405: + goto l399 + l400: + position, tokenIndex = position399, tokenIndex399 + { + position408, tokenIndex408 := position, tokenIndex + if buffer[position] != rune('-') { + goto l408 + } + position++ + goto l409 + l408: + position, tokenIndex = position408, tokenIndex408 + } + l409: + if buffer[position] != rune('.') { + goto l397 + } + position++ + if !_rules[ruledigits]() { + goto l397 + } + } + l399: + add(ruledecimal, position398) + } + return true + l397: + position, tokenIndex = position397, tokenIndex397 + return false + }, + /* 32 timestampbasicfmt <- <([0-9] [0-9] [0-9] [0-9] '-' ('0' / '1') [0-9] '-' [0-3] [0-9] 'T' [0-9] [0-9] ':' [0-9] [0-9])> */ + func() bool { + position410, tokenIndex410 := position, tokenIndex + { + position411 := position + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ if buffer[position] != rune('-') { - goto l426 + goto l410 } position++ { - position428, tokenIndex428 := position, tokenIndex + position412, tokenIndex412 := position, tokenIndex if buffer[position] != rune('0') { - goto l429 + goto l413 } position++ - goto l428 - l429: - position, tokenIndex = position428, tokenIndex428 + goto l412 + l413: + position, tokenIndex = position412, tokenIndex412 if buffer[position] != rune('1') { - goto l426 + goto l410 } position++ } - l428: + l412: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ if buffer[position] != rune('-') { - goto l426 + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('3') { - goto l426 + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ if buffer[position] != rune('T') { - goto l426 + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ if buffer[position] != rune(':') { - goto l426 + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l426 + goto l410 } position++ - add(ruletimestampbasicfmt, position427) + add(ruletimestampbasicfmt, position411) } return true - l426: - position, tokenIndex = position426, tokenIndex426 + l410: + position, tokenIndex = position410, tokenIndex410 return false }, - /* 31 timestampfmt <- <(('"' '"') / ('\'' '\'') / )> */ + /* 33 timestampfmt <- <(('"' '"') / ('\'' '\'') / )> */ func() bool { - position430, tokenIndex430 := position, tokenIndex + position414, tokenIndex414 := position, tokenIndex { - position431 := position + position415 := position { - position432, tokenIndex432 := position, tokenIndex + position416, tokenIndex416 := position, tokenIndex if buffer[position] != rune('"') { - goto l433 + goto l417 } position++ { - position434 := position + position418 := position if !_rules[ruletimestampbasicfmt]() { - goto l433 + goto l417 } - add(rulePegText, position434) + add(rulePegText, position418) } if buffer[position] != rune('"') { - goto l433 + goto l417 } position++ - goto l432 - l433: - position, tokenIndex = position432, tokenIndex432 + goto l416 + l417: + position, tokenIndex = position416, tokenIndex416 if buffer[position] != rune('\'') { - goto l435 + goto l419 } position++ { - position436 := position + position420 := position if !_rules[ruletimestampbasicfmt]() { - goto l435 + goto l419 } - add(rulePegText, position436) + add(rulePegText, position420) } if buffer[position] != rune('\'') { - goto l435 + goto l419 } position++ - goto l432 - l435: - position, tokenIndex = position432, tokenIndex432 + goto l416 + l419: + position, tokenIndex = position416, tokenIndex416 { - position437 := position + position421 := position if !_rules[ruletimestampbasicfmt]() { - goto l430 + goto l414 } - add(rulePegText, position437) + add(rulePegText, position421) } } - l432: - add(ruletimestampfmt, position431) + l416: + add(ruletimestampfmt, position415) } return true - l430: - position, tokenIndex = position430, tokenIndex430 + l414: + position, tokenIndex = position414, tokenIndex414 return false }, - /* 32 timestamp <- <( Action57)> */ + /* 34 timestamp <- <( Action56)> */ nil, - /* 34 Action0 <- <{p.startCall("Set")}> */ + /* 36 Action0 <- <{p.startCall("Set")}> */ nil, - /* 35 Action1 <- <{p.endCall()}> */ + /* 37 Action1 <- <{p.endCall()}> */ nil, - /* 36 Action2 <- <{p.startCall("SetRowAttrs")}> */ + /* 38 Action2 <- <{p.startCall("SetRowAttrs")}> */ nil, - /* 37 Action3 <- <{p.endCall()}> */ + /* 39 Action3 <- <{p.endCall()}> */ nil, - /* 38 Action4 <- <{p.startCall("SetColumnAttrs")}> */ + /* 40 Action4 <- <{p.startCall("SetColumnAttrs")}> */ nil, - /* 39 Action5 <- <{p.endCall()}> */ + /* 41 Action5 <- <{p.endCall()}> */ nil, - /* 40 Action6 <- <{p.startCall("Clear")}> */ + /* 42 Action6 <- <{p.startCall("Clear")}> */ nil, - /* 41 Action7 <- <{p.endCall()}> */ + /* 43 Action7 <- <{p.endCall()}> */ nil, - /* 42 Action8 <- <{p.startCall("ClearRow")}> */ + /* 44 Action8 <- <{p.startCall("ClearRow")}> */ nil, - /* 43 Action9 <- <{p.endCall()}> */ + /* 45 Action9 <- <{p.endCall()}> */ nil, - /* 44 Action10 <- <{p.startCall("Store")}> */ + /* 46 Action10 <- <{p.startCall("Store")}> */ nil, - /* 45 Action11 <- <{p.endCall()}> */ + /* 47 Action11 <- <{p.endCall()}> */ nil, - /* 46 Action12 <- <{p.startCall("TopN")}> */ + /* 48 Action12 <- <{p.startCall("TopN")}> */ nil, - /* 47 Action13 <- <{p.endCall()}> */ + /* 49 Action13 <- <{p.endCall()}> */ nil, - /* 48 Action14 <- <{p.startCall("Rows")}> */ + /* 50 Action14 <- <{p.startCall("Rows")}> */ nil, - /* 49 Action15 <- <{p.endCall()}> */ + /* 51 Action15 <- <{p.endCall()}> */ nil, - /* 50 Action16 <- <{p.startCall("Range")}> */ + /* 52 Action16 <- <{p.startCall("Range")}> */ nil, - /* 51 Action17 <- <{p.addField("from")}> */ + /* 53 Action17 <- <{p.addField("from")}> */ nil, - /* 52 Action18 <- <{p.addVal(text)}> */ + /* 54 Action18 <- <{p.addVal(text)}> */ nil, - /* 53 Action19 <- <{p.addField("to")}> */ + /* 55 Action19 <- <{p.addField("to")}> */ nil, - /* 54 Action20 <- <{p.addVal(text)}> */ + /* 56 Action20 <- <{p.addVal(text)}> */ nil, - /* 55 Action21 <- <{p.endCall()}> */ + /* 57 Action21 <- <{p.endCall()}> */ nil, nil, - /* 57 Action22 <- <{ p.startCall(text) }> */ + /* 59 Action22 <- <{ p.startCall(text) }> */ nil, - /* 58 Action23 <- <{ p.endCall() }> */ + /* 60 Action23 <- <{ p.endCall() }> */ nil, - /* 59 Action24 <- <{ p.addBTWN() }> */ + /* 61 Action24 <- <{ p.addBTWN() }> */ nil, - /* 60 Action25 <- <{ p.addLTE() }> */ + /* 62 Action25 <- <{ p.addLTE() }> */ nil, - /* 61 Action26 <- <{ p.addGTE() }> */ + /* 63 Action26 <- <{ p.addGTE() }> */ nil, - /* 62 Action27 <- <{ p.addEQ() }> */ + /* 64 Action27 <- <{ p.addEQ() }> */ nil, - /* 63 Action28 <- <{ p.addNEQ() }> */ + /* 65 Action28 <- <{ p.addNEQ() }> */ nil, - /* 64 Action29 <- <{ p.addLT() }> */ + /* 66 Action29 <- <{ p.addLT() }> */ nil, - /* 65 Action30 <- <{ p.addGT() }> */ + /* 67 Action30 <- <{ p.addGT() }> */ nil, - /* 66 Action31 <- <{p.startConditional()}> */ + /* 68 Action31 <- <{p.startConditional()}> */ nil, - /* 67 Action32 <- <{p.endConditional()}> */ + /* 69 Action32 <- <{p.endConditional()}> */ nil, - /* 68 Action33 <- <{p.condAdd(text)}> */ + /* 70 Action33 <- <{p.condAdd(text)}> */ nil, - /* 69 Action34 <- <{p.condAdd(text)}> */ + /* 71 Action34 <- <{p.condAdd(text)}> */ nil, - /* 70 Action35 <- <{p.condAdd(text)}> */ + /* 72 Action35 <- <{p.condAdd(text)}> */ nil, - /* 71 Action36 <- <{ p.startList() }> */ + /* 73 Action36 <- <{ p.startList() }> */ nil, - /* 72 Action37 <- <{ p.endList() }> */ + /* 74 Action37 <- <{ p.endList() }> */ nil, - /* 73 Action38 <- <{ p.addVal(nil) }> */ + /* 75 Action38 <- <{ p.addVal(nil) }> */ nil, - /* 74 Action39 <- <{ p.addVal(true) }> */ + /* 76 Action39 <- <{ p.addVal(true) }> */ nil, - /* 75 Action40 <- <{ p.addVal(false) }> */ + /* 77 Action40 <- <{ p.addVal(false) }> */ nil, - /* 76 Action41 <- <{ p.addVal(text) }> */ + /* 78 Action41 <- <{ p.addVal(text) }> */ nil, - /* 77 Action42 <- <{ p.addNumVal(text) }> */ + /* 79 Action42 <- <{ p.addNumVal(text) }> */ nil, - /* 78 Action43 <- <{ p.addNumVal(text) }> */ + /* 80 Action43 <- <{ p.startCall(text) }> */ nil, - /* 79 Action44 <- <{ p.startCall(text) }> */ + /* 81 Action44 <- <{ p.addVal(p.endCall()) }> */ nil, - /* 80 Action45 <- <{ p.addVal(p.endCall()) }> */ + /* 82 Action45 <- <{ p.addVal(text) }> */ nil, - /* 81 Action46 <- <{ p.addVal(text) }> */ + /* 83 Action46 <- <{ p.addVal(text) }> */ nil, - /* 82 Action47 <- <{ p.addVal(text) }> */ + /* 84 Action47 <- <{ p.addVal(text) }> */ nil, - /* 83 Action48 <- <{ p.addVal(text) }> */ + /* 85 Action48 <- <{ p.addField(text) }> */ nil, - /* 84 Action49 <- <{ p.addField(text) }> */ + /* 86 Action49 <- <{ p.addPosStr("_field", text) }> */ nil, - /* 85 Action50 <- <{ p.addPosStr("_field", text) }> */ + /* 87 Action50 <- <{p.addPosNum("_col", text)}> */ nil, - /* 86 Action51 <- <{p.addPosNum("_col", text)}> */ + /* 88 Action51 <- <{p.addPosStr("_col", text)}> */ nil, - /* 87 Action52 <- <{p.addPosStr("_col", text)}> */ + /* 89 Action52 <- <{p.addPosStr("_col", text)}> */ nil, - /* 88 Action53 <- <{p.addPosStr("_col", text)}> */ + /* 90 Action53 <- <{p.addPosNum("_row", text)}> */ nil, - /* 89 Action54 <- <{p.addPosNum("_row", text)}> */ + /* 91 Action54 <- <{p.addPosStr("_row", text)}> */ nil, - /* 90 Action55 <- <{p.addPosStr("_row", text)}> */ + /* 92 Action55 <- <{p.addPosStr("_row", text)}> */ nil, - /* 91 Action56 <- <{p.addPosStr("_row", text)}> */ - nil, - /* 92 Action57 <- <{p.addPosStr("_timestamp", text)}> */ + /* 93 Action56 <- <{p.addPosStr("_timestamp", text)}> */ nil, } p.rules = _rules From 6e725d50ce960389aca9778fa88b8e5cdaa94615 Mon Sep 17 00:00:00 2001 From: Seebs Date: Mon, 19 Oct 2020 13:47:42 -0500 Subject: [PATCH 7/7] check error return from peg parser Init The updated peg tool produces an Init that can return an error. As of this writing, the error can't be non-nil unless you specified an option which itself returned an error, but that could change later, so let's be careful. --- pql/parser.go | 5 ++++- pql/pqlpeg_test.go | 14 +++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pql/parser.go b/pql/parser.go index e09b431ef..706cf5a7d 100644 --- a/pql/parser.go +++ b/pql/parser.go @@ -61,7 +61,10 @@ func (p *parser) Parse() (*Query, error) { p.PQL = PQL{ Buffer: string(buf), } - p.Init() + err = p.Init() + if err != nil { + return nil, errors.Wrap(err, "creating parser") + } err = p.PQL.Parse() if err != nil { return nil, errors.Wrap(err, "parsing") diff --git a/pql/pqlpeg_test.go b/pql/pqlpeg_test.go index 9339cad3a..12b9e4b15 100644 --- a/pql/pqlpeg_test.go +++ b/pql/pqlpeg_test.go @@ -19,20 +19,28 @@ import ( "reflect" "strconv" "testing" + + "github.com/pkg/errors" ) func TestPEG(t *testing.T) { p := PQL{Buffer: ` SetBit(Union(Zitmap(row==4), Intersect(Qitmap(blah>4), Ritmap(field="http://zoo9.com=\\'hello' and \"hello\"")), Hitmap(row=ag-bee)), a="4z", b=5) Count(Union(Witmap(row=5.73, frame=.10), Row(zztop><[2, 9]))) TopN(blah, fields=["hello", "goodbye", "zero"])`[1:]} - p.Init() - err := p.Parse() + err := p.Init() + if err != nil { + t.Fatal(errors.Wrap(err, "creating parser")) + } + err = p.Parse() if err != nil { t.Fatalf("parse error: %v", err) } p.Execute() p = PQL{Buffer: `SetRowAttrs(attr="http://zoo9.com=\\'hello' "and \"hello\"")`} - p.Init() + err = p.Init() + if err != nil { + t.Fatal(errors.Wrap(err, "creating parser")) + } err = p.Parse() if err == nil { t.Fatalf("should have been an error because of the interior unescaped double quote")