From c19d571112a2354bd92d34f74db18b4c83e9b977 Mon Sep 17 00:00:00 2001 From: Seebs Date: Wed, 7 Oct 2020 18:16:44 -0500 Subject: [PATCH] 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