// nolint
|
|
package query
|
|
|
|
import (
|
|
"fmt"
|
|
"math"
|
|
"sort"
|
|
"strconv"
|
|
)
|
|
|
|
const endSymbol rune = 1114112
|
|
|
|
/* The rule types inferred from the grammar are below. */
|
|
type pegRule uint8
|
|
|
|
const (
|
|
ruleUnknown pegRule = iota
|
|
rulee
|
|
rulecondition
|
|
ruletag
|
|
rulevalue
|
|
rulenumber
|
|
ruledigit
|
|
ruletime
|
|
ruledate
|
|
ruleyear
|
|
rulemonth
|
|
ruleday
|
|
ruleand
|
|
ruleequal
|
|
rulecontains
|
|
ruleexists
|
|
rulele
|
|
rulege
|
|
rulel
|
|
ruleg
|
|
rulePegText
|
|
|
|
rulePre
|
|
ruleIn
|
|
ruleSuf
|
|
)
|
|
|
|
var rul3s = [...]string{
|
|
"Unknown",
|
|
"e",
|
|
"condition",
|
|
"tag",
|
|
"value",
|
|
"number",
|
|
"digit",
|
|
"time",
|
|
"date",
|
|
"year",
|
|
"month",
|
|
"day",
|
|
"and",
|
|
"equal",
|
|
"contains",
|
|
"exists",
|
|
"le",
|
|
"ge",
|
|
"l",
|
|
"g",
|
|
"PegText",
|
|
|
|
"Pre_",
|
|
"_In_",
|
|
"_Suf",
|
|
}
|
|
|
|
type node32 struct {
|
|
token32
|
|
up, next *node32
|
|
}
|
|
|
|
func (node *node32) print(depth int, buffer string) {
|
|
for node != nil {
|
|
for c := 0; c < depth; c++ {
|
|
fmt.Printf(" ")
|
|
}
|
|
fmt.Printf("\x1B[34m%v\x1B[m %v\n", rul3s[node.pegRule], strconv.Quote(string(([]rune(buffer)[node.begin:node.end]))))
|
|
if node.up != nil {
|
|
node.up.print(depth+1, buffer)
|
|
}
|
|
node = node.next
|
|
}
|
|
}
|
|
|
|
func (node *node32) Print(buffer string) {
|
|
node.print(0, buffer)
|
|
}
|
|
|
|
type element struct {
|
|
node *node32
|
|
down *element
|
|
}
|
|
|
|
/* ${@} bit structure for abstract syntax tree */
|
|
type token32 struct {
|
|
pegRule
|
|
begin, end, next uint32
|
|
}
|
|
|
|
func (t *token32) isZero() bool {
|
|
return t.pegRule == ruleUnknown && t.begin == 0 && t.end == 0 && t.next == 0
|
|
}
|
|
|
|
func (t *token32) isParentOf(u token32) bool {
|
|
return t.begin <= u.begin && t.end >= u.end && t.next > u.next
|
|
}
|
|
|
|
func (t *token32) getToken32() token32 {
|
|
return token32{pegRule: t.pegRule, begin: uint32(t.begin), end: uint32(t.end), next: uint32(t.next)}
|
|
}
|
|
|
|
func (t *token32) String() string {
|
|
return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v %v", rul3s[t.pegRule], t.begin, t.end, t.next)
|
|
}
|
|
|
|
type tokens32 struct {
|
|
tree []token32
|
|
ordered [][]token32
|
|
}
|
|
|
|
func (t *tokens32) trim(length int) {
|
|
t.tree = t.tree[0:length]
|
|
}
|
|
|
|
func (t *tokens32) Print() {
|
|
for _, token := range t.tree {
|
|
fmt.Println(token.String())
|
|
}
|
|
}
|
|
|
|
func (t *tokens32) Order() [][]token32 {
|
|
if t.ordered != nil {
|
|
return t.ordered
|
|
}
|
|
|
|
depths := make([]int32, 1, math.MaxInt16)
|
|
for i, token := range t.tree {
|
|
if token.pegRule == ruleUnknown {
|
|
t.tree = t.tree[:i]
|
|
break
|
|
}
|
|
depth := int(token.next)
|
|
if length := len(depths); depth >= length {
|
|
depths = depths[:depth+1]
|
|
}
|
|
depths[depth]++
|
|
}
|
|
depths = append(depths, 0)
|
|
|
|
ordered, pool := make([][]token32, len(depths)), make([]token32, len(t.tree)+len(depths))
|
|
for i, depth := range depths {
|
|
depth++
|
|
ordered[i], pool, depths[i] = pool[:depth], pool[depth:], 0
|
|
}
|
|
|
|
for i, token := range t.tree {
|
|
depth := token.next
|
|
token.next = uint32(i)
|
|
ordered[depth][depths[depth]] = token
|
|
depths[depth]++
|
|
}
|
|
t.ordered = ordered
|
|
return ordered
|
|
}
|
|
|
|
type state32 struct {
|
|
token32
|
|
depths []int32
|
|
leaf bool
|
|
}
|
|
|
|
func (t *tokens32) AST() *node32 {
|
|
tokens := t.Tokens()
|
|
stack := &element{node: &node32{token32: <-tokens}}
|
|
for token := range tokens {
|
|
if token.begin == token.end {
|
|
continue
|
|
}
|
|
node := &node32{token32: token}
|
|
for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end {
|
|
stack.node.next = node.up
|
|
node.up = stack.node
|
|
stack = stack.down
|
|
}
|
|
stack = &element{node: node, down: stack}
|
|
}
|
|
return stack.node
|
|
}
|
|
|
|
func (t *tokens32) PreOrder() (<-chan state32, [][]token32) {
|
|
s, ordered := make(chan state32, 6), t.Order()
|
|
go func() {
|
|
var states [8]state32
|
|
for i := range states {
|
|
states[i].depths = make([]int32, len(ordered))
|
|
}
|
|
depths, state, depth := make([]int32, len(ordered)), 0, 1
|
|
write := func(t token32, leaf bool) {
|
|
S := states[state]
|
|
state, S.pegRule, S.begin, S.end, S.next, S.leaf = (state+1)%8, t.pegRule, t.begin, t.end, uint32(depth), leaf
|
|
copy(S.depths, depths)
|
|
s <- S
|
|
}
|
|
|
|
states[state].token32 = ordered[0][0]
|
|
depths[0]++
|
|
state++
|
|
a, b := ordered[depth-1][depths[depth-1]-1], ordered[depth][depths[depth]]
|
|
depthFirstSearch:
|
|
for {
|
|
for {
|
|
if i := depths[depth]; i > 0 {
|
|
if c, j := ordered[depth][i-1], depths[depth-1]; a.isParentOf(c) &&
|
|
(j < 2 || !ordered[depth-1][j-2].isParentOf(c)) {
|
|
if c.end != b.begin {
|
|
write(token32{pegRule: ruleIn, begin: c.end, end: b.begin}, true)
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
if a.begin < b.begin {
|
|
write(token32{pegRule: rulePre, begin: a.begin, end: b.begin}, true)
|
|
}
|
|
break
|
|
}
|
|
|
|
next := depth + 1
|
|
if c := ordered[next][depths[next]]; c.pegRule != ruleUnknown && b.isParentOf(c) {
|
|
write(b, false)
|
|
depths[depth]++
|
|
depth, a, b = next, b, c
|
|
continue
|
|
}
|
|
|
|
write(b, true)
|
|
depths[depth]++
|
|
c, parent := ordered[depth][depths[depth]], true
|
|
for {
|
|
if c.pegRule != ruleUnknown && a.isParentOf(c) {
|
|
b = c
|
|
continue depthFirstSearch
|
|
} else if parent && b.end != a.end {
|
|
write(token32{pegRule: ruleSuf, begin: b.end, end: a.end}, true)
|
|
}
|
|
|
|
depth--
|
|
if depth > 0 {
|
|
a, b, c = ordered[depth-1][depths[depth-1]-1], a, ordered[depth][depths[depth]]
|
|
parent = a.isParentOf(b)
|
|
continue
|
|
}
|
|
|
|
break depthFirstSearch
|
|
}
|
|
}
|
|
|
|
close(s)
|
|
}()
|
|
return s, ordered
|
|
}
|
|
|
|
func (t *tokens32) PrintSyntax() {
|
|
tokens, ordered := t.PreOrder()
|
|
max := -1
|
|
for token := range tokens {
|
|
if !token.leaf {
|
|
fmt.Printf("%v", token.begin)
|
|
for i, leaf, depths := 0, int(token.next), token.depths; i < leaf; i++ {
|
|
fmt.Printf(" \x1B[36m%v\x1B[m", rul3s[ordered[i][depths[i]-1].pegRule])
|
|
}
|
|
fmt.Printf(" \x1B[36m%v\x1B[m\n", rul3s[token.pegRule])
|
|
} else if token.begin == token.end {
|
|
fmt.Printf("%v", token.begin)
|
|
for i, leaf, depths := 0, int(token.next), token.depths; i < leaf; i++ {
|
|
fmt.Printf(" \x1B[31m%v\x1B[m", rul3s[ordered[i][depths[i]-1].pegRule])
|
|
}
|
|
fmt.Printf(" \x1B[31m%v\x1B[m\n", rul3s[token.pegRule])
|
|
} else {
|
|
for c, end := token.begin, token.end; c < end; c++ {
|
|
if i := int(c); max+1 < i {
|
|
for j := max; j < i; j++ {
|
|
fmt.Printf("skip %v %v\n", j, token.String())
|
|
}
|
|
max = i
|
|
} else if i := int(c); i <= max {
|
|
for j := i; j <= max; j++ {
|
|
fmt.Printf("dupe %v %v\n", j, token.String())
|
|
}
|
|
} else {
|
|
max = int(c)
|
|
}
|
|
fmt.Printf("%v", c)
|
|
for i, leaf, depths := 0, int(token.next), token.depths; i < leaf; i++ {
|
|
fmt.Printf(" \x1B[34m%v\x1B[m", rul3s[ordered[i][depths[i]-1].pegRule])
|
|
}
|
|
fmt.Printf(" \x1B[34m%v\x1B[m\n", rul3s[token.pegRule])
|
|
}
|
|
fmt.Printf("\n")
|
|
}
|
|
}
|
|
}
|
|
|
|
func (t *tokens32) PrintSyntaxTree(buffer string) {
|
|
tokens, _ := t.PreOrder()
|
|
for token := range tokens {
|
|
for c := 0; c < int(token.next); c++ {
|
|
fmt.Printf(" ")
|
|
}
|
|
fmt.Printf("\x1B[34m%v\x1B[m %v\n", rul3s[token.pegRule], strconv.Quote(string(([]rune(buffer)[token.begin:token.end]))))
|
|
}
|
|
}
|
|
|
|
func (t *tokens32) Add(rule pegRule, begin, end, depth uint32, index int) {
|
|
t.tree[index] = token32{pegRule: rule, begin: uint32(begin), end: uint32(end), next: uint32(depth)}
|
|
}
|
|
|
|
func (t *tokens32) Tokens() <-chan token32 {
|
|
s := make(chan token32, 16)
|
|
go func() {
|
|
for _, v := range t.tree {
|
|
s <- v.getToken32()
|
|
}
|
|
close(s)
|
|
}()
|
|
return s
|
|
}
|
|
|
|
func (t *tokens32) Error() []token32 {
|
|
ordered := t.Order()
|
|
length := len(ordered)
|
|
tokens, length := make([]token32, length), length-1
|
|
for i := range tokens {
|
|
o := ordered[length-i]
|
|
if len(o) > 1 {
|
|
tokens[i] = o[len(o)-2].getToken32()
|
|
}
|
|
}
|
|
return tokens
|
|
}
|
|
|
|
func (t *tokens32) Expand(index int) {
|
|
tree := t.tree
|
|
if index >= len(tree) {
|
|
expanded := make([]token32, 2*len(tree))
|
|
copy(expanded, tree)
|
|
t.tree = expanded
|
|
}
|
|
}
|
|
|
|
type QueryParser struct {
|
|
Buffer string
|
|
buffer []rune
|
|
rules [21]func() bool
|
|
Parse func(rule ...int) error
|
|
Reset func()
|
|
Pretty bool
|
|
tokens32
|
|
}
|
|
|
|
type textPosition struct {
|
|
line, symbol int
|
|
}
|
|
|
|
type textPositionMap map[int]textPosition
|
|
|
|
func translatePositions(buffer []rune, positions []int) textPositionMap {
|
|
length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0
|
|
sort.Ints(positions)
|
|
|
|
search:
|
|
for i, c := range buffer {
|
|
if c == '\n' {
|
|
line, symbol = line+1, 0
|
|
} else {
|
|
symbol++
|
|
}
|
|
if i == positions[j] {
|
|
translations[positions[j]] = textPosition{line, symbol}
|
|
for j++; j < length; j++ {
|
|
if i != positions[j] {
|
|
continue search
|
|
}
|
|
}
|
|
break search
|
|
}
|
|
}
|
|
|
|
return translations
|
|
}
|
|
|
|
type parseError struct {
|
|
p *QueryParser
|
|
max token32
|
|
}
|
|
|
|
func (e *parseError) Error() string {
|
|
tokens, error := []token32{e.max}, "\n"
|
|
positions, p := make([]int, 2*len(tokens)), 0
|
|
for _, token := range tokens {
|
|
positions[p], p = int(token.begin), p+1
|
|
positions[p], p = int(token.end), p+1
|
|
}
|
|
translations := translatePositions(e.p.buffer, positions)
|
|
format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n"
|
|
if e.p.Pretty {
|
|
format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n"
|
|
}
|
|
for _, token := range tokens {
|
|
begin, end := int(token.begin), int(token.end)
|
|
error += 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
|
|
}
|
|
|
|
func (p *QueryParser) PrintSyntaxTree() {
|
|
p.tokens32.PrintSyntaxTree(p.Buffer)
|
|
}
|
|
|
|
func (p *QueryParser) Highlighter() {
|
|
p.PrintSyntax()
|
|
}
|
|
|
|
func (p *QueryParser) Init() {
|
|
p.buffer = []rune(p.Buffer)
|
|
if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
|
|
p.buffer = append(p.buffer, endSymbol)
|
|
}
|
|
|
|
tree := tokens32{tree: make([]token32, math.MaxInt16)}
|
|
var max token32
|
|
position, depth, tokenIndex, buffer, _rules := uint32(0), uint32(0), 0, p.buffer, p.rules
|
|
|
|
p.Parse = func(rule ...int) error {
|
|
r := 1
|
|
if len(rule) > 0 {
|
|
r = rule[0]
|
|
}
|
|
matches := p.rules[r]()
|
|
p.tokens32 = tree
|
|
if matches {
|
|
p.trim(tokenIndex)
|
|
return nil
|
|
}
|
|
return &parseError{p, max}
|
|
}
|
|
|
|
p.Reset = func() {
|
|
position, tokenIndex, depth = 0, 0, 0
|
|
}
|
|
|
|
add := func(rule pegRule, begin uint32) {
|
|
tree.Expand(tokenIndex)
|
|
tree.Add(rule, begin, position, depth, tokenIndex)
|
|
tokenIndex++
|
|
if begin != position && position > max.end {
|
|
max = token32{rule, begin, position, depth}
|
|
}
|
|
}
|
|
|
|
matchDot := func() bool {
|
|
if buffer[position] != endSymbol {
|
|
position++
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
/*matchChar := func(c byte) bool {
|
|
if buffer[position] == c {
|
|
position++
|
|
return true
|
|
}
|
|
return false
|
|
}*/
|
|
|
|
/*matchRange := func(lower byte, upper byte) bool {
|
|
if c := buffer[position]; c >= lower && c <= upper {
|
|
position++
|
|
return true
|
|
}
|
|
return false
|
|
}*/
|
|
|
|
_rules = [...]func() bool{
|
|
nil,
|
|
/* 0 e <- <('"' condition (' '+ and ' '+ condition)* '"' !.)> */
|
|
func() bool {
|
|
position0, tokenIndex0, depth0 := position, tokenIndex, depth
|
|
{
|
|
position1 := position
|
|
depth++
|
|
if buffer[position] != rune('"') {
|
|
goto l0
|
|
}
|
|
position++
|
|
if !_rules[rulecondition]() {
|
|
goto l0
|
|
}
|
|
l2:
|
|
{
|
|
position3, tokenIndex3, depth3 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l3
|
|
}
|
|
position++
|
|
l4:
|
|
{
|
|
position5, tokenIndex5, depth5 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l5
|
|
}
|
|
position++
|
|
goto l4
|
|
l5:
|
|
position, tokenIndex, depth = position5, tokenIndex5, depth5
|
|
}
|
|
{
|
|
position6 := position
|
|
depth++
|
|
{
|
|
position7, tokenIndex7, depth7 := position, tokenIndex, depth
|
|
if buffer[position] != rune('a') {
|
|
goto l8
|
|
}
|
|
position++
|
|
goto l7
|
|
l8:
|
|
position, tokenIndex, depth = position7, tokenIndex7, depth7
|
|
if buffer[position] != rune('A') {
|
|
goto l3
|
|
}
|
|
position++
|
|
}
|
|
l7:
|
|
{
|
|
position9, tokenIndex9, depth9 := position, tokenIndex, depth
|
|
if buffer[position] != rune('n') {
|
|
goto l10
|
|
}
|
|
position++
|
|
goto l9
|
|
l10:
|
|
position, tokenIndex, depth = position9, tokenIndex9, depth9
|
|
if buffer[position] != rune('N') {
|
|
goto l3
|
|
}
|
|
position++
|
|
}
|
|
l9:
|
|
{
|
|
position11, tokenIndex11, depth11 := position, tokenIndex, depth
|
|
if buffer[position] != rune('d') {
|
|
goto l12
|
|
}
|
|
position++
|
|
goto l11
|
|
l12:
|
|
position, tokenIndex, depth = position11, tokenIndex11, depth11
|
|
if buffer[position] != rune('D') {
|
|
goto l3
|
|
}
|
|
position++
|
|
}
|
|
l11:
|
|
depth--
|
|
add(ruleand, position6)
|
|
}
|
|
if buffer[position] != rune(' ') {
|
|
goto l3
|
|
}
|
|
position++
|
|
l13:
|
|
{
|
|
position14, tokenIndex14, depth14 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l14
|
|
}
|
|
position++
|
|
goto l13
|
|
l14:
|
|
position, tokenIndex, depth = position14, tokenIndex14, depth14
|
|
}
|
|
if !_rules[rulecondition]() {
|
|
goto l3
|
|
}
|
|
goto l2
|
|
l3:
|
|
position, tokenIndex, depth = position3, tokenIndex3, depth3
|
|
}
|
|
if buffer[position] != rune('"') {
|
|
goto l0
|
|
}
|
|
position++
|
|
{
|
|
position15, tokenIndex15, depth15 := position, tokenIndex, depth
|
|
if !matchDot() {
|
|
goto l15
|
|
}
|
|
goto l0
|
|
l15:
|
|
position, tokenIndex, depth = position15, tokenIndex15, depth15
|
|
}
|
|
depth--
|
|
add(rulee, position1)
|
|
}
|
|
return true
|
|
l0:
|
|
position, tokenIndex, depth = position0, tokenIndex0, depth0
|
|
return false
|
|
},
|
|
/* 1 condition <- <(tag ' '* ((le ' '* ((&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number))) / (ge ' '* ((&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number))) / ((&('E' | 'e') exists) | (&('=') (equal ' '* ((&('\'') value) | (&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number)))) | (&('>') (g ' '* ((&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number)))) | (&('<') (l ' '* ((&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number)))) | (&('C' | 'c') (contains ' '* value)))))> */
|
|
func() bool {
|
|
position16, tokenIndex16, depth16 := position, tokenIndex, depth
|
|
{
|
|
position17 := position
|
|
depth++
|
|
{
|
|
position18 := position
|
|
depth++
|
|
{
|
|
position19 := position
|
|
depth++
|
|
{
|
|
position22, tokenIndex22, depth22 := position, tokenIndex, depth
|
|
{
|
|
switch buffer[position] {
|
|
case '<':
|
|
if buffer[position] != rune('<') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '>':
|
|
if buffer[position] != rune('>') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '=':
|
|
if buffer[position] != rune('=') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '\'':
|
|
if buffer[position] != rune('\'') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '"':
|
|
if buffer[position] != rune('"') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case ')':
|
|
if buffer[position] != rune(')') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '(':
|
|
if buffer[position] != rune('(') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '\\':
|
|
if buffer[position] != rune('\\') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '\r':
|
|
if buffer[position] != rune('\r') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '\n':
|
|
if buffer[position] != rune('\n') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
case '\t':
|
|
if buffer[position] != rune('\t') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
default:
|
|
if buffer[position] != rune(' ') {
|
|
goto l22
|
|
}
|
|
position++
|
|
break
|
|
}
|
|
}
|
|
|
|
goto l16
|
|
l22:
|
|
position, tokenIndex, depth = position22, tokenIndex22, depth22
|
|
}
|
|
if !matchDot() {
|
|
goto l16
|
|
}
|
|
l20:
|
|
{
|
|
position21, tokenIndex21, depth21 := position, tokenIndex, depth
|
|
{
|
|
position24, tokenIndex24, depth24 := position, tokenIndex, depth
|
|
{
|
|
switch buffer[position] {
|
|
case '<':
|
|
if buffer[position] != rune('<') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '>':
|
|
if buffer[position] != rune('>') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '=':
|
|
if buffer[position] != rune('=') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '\'':
|
|
if buffer[position] != rune('\'') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '"':
|
|
if buffer[position] != rune('"') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case ')':
|
|
if buffer[position] != rune(')') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '(':
|
|
if buffer[position] != rune('(') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '\\':
|
|
if buffer[position] != rune('\\') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '\r':
|
|
if buffer[position] != rune('\r') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '\n':
|
|
if buffer[position] != rune('\n') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
case '\t':
|
|
if buffer[position] != rune('\t') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
default:
|
|
if buffer[position] != rune(' ') {
|
|
goto l24
|
|
}
|
|
position++
|
|
break
|
|
}
|
|
}
|
|
|
|
goto l21
|
|
l24:
|
|
position, tokenIndex, depth = position24, tokenIndex24, depth24
|
|
}
|
|
if !matchDot() {
|
|
goto l21
|
|
}
|
|
goto l20
|
|
l21:
|
|
position, tokenIndex, depth = position21, tokenIndex21, depth21
|
|
}
|
|
depth--
|
|
add(rulePegText, position19)
|
|
}
|
|
depth--
|
|
add(ruletag, position18)
|
|
}
|
|
l26:
|
|
{
|
|
position27, tokenIndex27, depth27 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l27
|
|
}
|
|
position++
|
|
goto l26
|
|
l27:
|
|
position, tokenIndex, depth = position27, tokenIndex27, depth27
|
|
}
|
|
{
|
|
position28, tokenIndex28, depth28 := position, tokenIndex, depth
|
|
{
|
|
position30 := position
|
|
depth++
|
|
if buffer[position] != rune('<') {
|
|
goto l29
|
|
}
|
|
position++
|
|
if buffer[position] != rune('=') {
|
|
goto l29
|
|
}
|
|
position++
|
|
depth--
|
|
add(rulele, position30)
|
|
}
|
|
l31:
|
|
{
|
|
position32, tokenIndex32, depth32 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l32
|
|
}
|
|
position++
|
|
goto l31
|
|
l32:
|
|
position, tokenIndex, depth = position32, tokenIndex32, depth32
|
|
}
|
|
{
|
|
switch buffer[position] {
|
|
case 'D', 'd':
|
|
if !_rules[ruledate]() {
|
|
goto l29
|
|
}
|
|
break
|
|
case 'T', 't':
|
|
if !_rules[ruletime]() {
|
|
goto l29
|
|
}
|
|
break
|
|
default:
|
|
if !_rules[rulenumber]() {
|
|
goto l29
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
goto l28
|
|
l29:
|
|
position, tokenIndex, depth = position28, tokenIndex28, depth28
|
|
{
|
|
position35 := position
|
|
depth++
|
|
if buffer[position] != rune('>') {
|
|
goto l34
|
|
}
|
|
position++
|
|
if buffer[position] != rune('=') {
|
|
goto l34
|
|
}
|
|
position++
|
|
depth--
|
|
add(rulege, position35)
|
|
}
|
|
l36:
|
|
{
|
|
position37, tokenIndex37, depth37 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l37
|
|
}
|
|
position++
|
|
goto l36
|
|
l37:
|
|
position, tokenIndex, depth = position37, tokenIndex37, depth37
|
|
}
|
|
{
|
|
switch buffer[position] {
|
|
case 'D', 'd':
|
|
if !_rules[ruledate]() {
|
|
goto l34
|
|
}
|
|
break
|
|
case 'T', 't':
|
|
if !_rules[ruletime]() {
|
|
goto l34
|
|
}
|
|
break
|
|
default:
|
|
if !_rules[rulenumber]() {
|
|
goto l34
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
goto l28
|
|
l34:
|
|
position, tokenIndex, depth = position28, tokenIndex28, depth28
|
|
{
|
|
switch buffer[position] {
|
|
case 'E', 'e':
|
|
{
|
|
position40 := position
|
|
depth++
|
|
{
|
|
position41, tokenIndex41, depth41 := position, tokenIndex, depth
|
|
if buffer[position] != rune('e') {
|
|
goto l42
|
|
}
|
|
position++
|
|
goto l41
|
|
l42:
|
|
position, tokenIndex, depth = position41, tokenIndex41, depth41
|
|
if buffer[position] != rune('E') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l41:
|
|
{
|
|
position43, tokenIndex43, depth43 := position, tokenIndex, depth
|
|
if buffer[position] != rune('x') {
|
|
goto l44
|
|
}
|
|
position++
|
|
goto l43
|
|
l44:
|
|
position, tokenIndex, depth = position43, tokenIndex43, depth43
|
|
if buffer[position] != rune('X') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l43:
|
|
{
|
|
position45, tokenIndex45, depth45 := position, tokenIndex, depth
|
|
if buffer[position] != rune('i') {
|
|
goto l46
|
|
}
|
|
position++
|
|
goto l45
|
|
l46:
|
|
position, tokenIndex, depth = position45, tokenIndex45, depth45
|
|
if buffer[position] != rune('I') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l45:
|
|
{
|
|
position47, tokenIndex47, depth47 := position, tokenIndex, depth
|
|
if buffer[position] != rune('s') {
|
|
goto l48
|
|
}
|
|
position++
|
|
goto l47
|
|
l48:
|
|
position, tokenIndex, depth = position47, tokenIndex47, depth47
|
|
if buffer[position] != rune('S') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l47:
|
|
{
|
|
position49, tokenIndex49, depth49 := position, tokenIndex, depth
|
|
if buffer[position] != rune('t') {
|
|
goto l50
|
|
}
|
|
position++
|
|
goto l49
|
|
l50:
|
|
position, tokenIndex, depth = position49, tokenIndex49, depth49
|
|
if buffer[position] != rune('T') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l49:
|
|
{
|
|
position51, tokenIndex51, depth51 := position, tokenIndex, depth
|
|
if buffer[position] != rune('s') {
|
|
goto l52
|
|
}
|
|
position++
|
|
goto l51
|
|
l52:
|
|
position, tokenIndex, depth = position51, tokenIndex51, depth51
|
|
if buffer[position] != rune('S') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l51:
|
|
depth--
|
|
add(ruleexists, position40)
|
|
}
|
|
break
|
|
case '=':
|
|
{
|
|
position53 := position
|
|
depth++
|
|
if buffer[position] != rune('=') {
|
|
goto l16
|
|
}
|
|
position++
|
|
depth--
|
|
add(ruleequal, position53)
|
|
}
|
|
l54:
|
|
{
|
|
position55, tokenIndex55, depth55 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l55
|
|
}
|
|
position++
|
|
goto l54
|
|
l55:
|
|
position, tokenIndex, depth = position55, tokenIndex55, depth55
|
|
}
|
|
{
|
|
switch buffer[position] {
|
|
case '\'':
|
|
if !_rules[rulevalue]() {
|
|
goto l16
|
|
}
|
|
break
|
|
case 'D', 'd':
|
|
if !_rules[ruledate]() {
|
|
goto l16
|
|
}
|
|
break
|
|
case 'T', 't':
|
|
if !_rules[ruletime]() {
|
|
goto l16
|
|
}
|
|
break
|
|
default:
|
|
if !_rules[rulenumber]() {
|
|
goto l16
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
break
|
|
case '>':
|
|
{
|
|
position57 := position
|
|
depth++
|
|
if buffer[position] != rune('>') {
|
|
goto l16
|
|
}
|
|
position++
|
|
depth--
|
|
add(ruleg, position57)
|
|
}
|
|
l58:
|
|
{
|
|
position59, tokenIndex59, depth59 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l59
|
|
}
|
|
position++
|
|
goto l58
|
|
l59:
|
|
position, tokenIndex, depth = position59, tokenIndex59, depth59
|
|
}
|
|
{
|
|
switch buffer[position] {
|
|
case 'D', 'd':
|
|
if !_rules[ruledate]() {
|
|
goto l16
|
|
}
|
|
break
|
|
case 'T', 't':
|
|
if !_rules[ruletime]() {
|
|
goto l16
|
|
}
|
|
break
|
|
default:
|
|
if !_rules[rulenumber]() {
|
|
goto l16
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
break
|
|
case '<':
|
|
{
|
|
position61 := position
|
|
depth++
|
|
if buffer[position] != rune('<') {
|
|
goto l16
|
|
}
|
|
position++
|
|
depth--
|
|
add(rulel, position61)
|
|
}
|
|
l62:
|
|
{
|
|
position63, tokenIndex63, depth63 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l63
|
|
}
|
|
position++
|
|
goto l62
|
|
l63:
|
|
position, tokenIndex, depth = position63, tokenIndex63, depth63
|
|
}
|
|
{
|
|
switch buffer[position] {
|
|
case 'D', 'd':
|
|
if !_rules[ruledate]() {
|
|
goto l16
|
|
}
|
|
break
|
|
case 'T', 't':
|
|
if !_rules[ruletime]() {
|
|
goto l16
|
|
}
|
|
break
|
|
default:
|
|
if !_rules[rulenumber]() {
|
|
goto l16
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
break
|
|
default:
|
|
{
|
|
position65 := position
|
|
depth++
|
|
{
|
|
position66, tokenIndex66, depth66 := position, tokenIndex, depth
|
|
if buffer[position] != rune('c') {
|
|
goto l67
|
|
}
|
|
position++
|
|
goto l66
|
|
l67:
|
|
position, tokenIndex, depth = position66, tokenIndex66, depth66
|
|
if buffer[position] != rune('C') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l66:
|
|
{
|
|
position68, tokenIndex68, depth68 := position, tokenIndex, depth
|
|
if buffer[position] != rune('o') {
|
|
goto l69
|
|
}
|
|
position++
|
|
goto l68
|
|
l69:
|
|
position, tokenIndex, depth = position68, tokenIndex68, depth68
|
|
if buffer[position] != rune('O') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l68:
|
|
{
|
|
position70, tokenIndex70, depth70 := position, tokenIndex, depth
|
|
if buffer[position] != rune('n') {
|
|
goto l71
|
|
}
|
|
position++
|
|
goto l70
|
|
l71:
|
|
position, tokenIndex, depth = position70, tokenIndex70, depth70
|
|
if buffer[position] != rune('N') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l70:
|
|
{
|
|
position72, tokenIndex72, depth72 := position, tokenIndex, depth
|
|
if buffer[position] != rune('t') {
|
|
goto l73
|
|
}
|
|
position++
|
|
goto l72
|
|
l73:
|
|
position, tokenIndex, depth = position72, tokenIndex72, depth72
|
|
if buffer[position] != rune('T') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l72:
|
|
{
|
|
position74, tokenIndex74, depth74 := position, tokenIndex, depth
|
|
if buffer[position] != rune('a') {
|
|
goto l75
|
|
}
|
|
position++
|
|
goto l74
|
|
l75:
|
|
position, tokenIndex, depth = position74, tokenIndex74, depth74
|
|
if buffer[position] != rune('A') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l74:
|
|
{
|
|
position76, tokenIndex76, depth76 := position, tokenIndex, depth
|
|
if buffer[position] != rune('i') {
|
|
goto l77
|
|
}
|
|
position++
|
|
goto l76
|
|
l77:
|
|
position, tokenIndex, depth = position76, tokenIndex76, depth76
|
|
if buffer[position] != rune('I') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l76:
|
|
{
|
|
position78, tokenIndex78, depth78 := position, tokenIndex, depth
|
|
if buffer[position] != rune('n') {
|
|
goto l79
|
|
}
|
|
position++
|
|
goto l78
|
|
l79:
|
|
position, tokenIndex, depth = position78, tokenIndex78, depth78
|
|
if buffer[position] != rune('N') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l78:
|
|
{
|
|
position80, tokenIndex80, depth80 := position, tokenIndex, depth
|
|
if buffer[position] != rune('s') {
|
|
goto l81
|
|
}
|
|
position++
|
|
goto l80
|
|
l81:
|
|
position, tokenIndex, depth = position80, tokenIndex80, depth80
|
|
if buffer[position] != rune('S') {
|
|
goto l16
|
|
}
|
|
position++
|
|
}
|
|
l80:
|
|
depth--
|
|
add(rulecontains, position65)
|
|
}
|
|
l82:
|
|
{
|
|
position83, tokenIndex83, depth83 := position, tokenIndex, depth
|
|
if buffer[position] != rune(' ') {
|
|
goto l83
|
|
}
|
|
position++
|
|
goto l82
|
|
l83:
|
|
position, tokenIndex, depth = position83, tokenIndex83, depth83
|
|
}
|
|
if !_rules[rulevalue]() {
|
|
goto l16
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
}
|
|
l28:
|
|
depth--
|
|
add(rulecondition, position17)
|
|
}
|
|
return true
|
|
l16:
|
|
position, tokenIndex, depth = position16, tokenIndex16, depth16
|
|
return false
|
|
},
|
|
/* 2 tag <- <<(!((&('<') '<') | (&('>') '>') | (&('=') '=') | (&('\'') '\'') | (&('"') '"') | (&(')') ')') | (&('(') '(') | (&('\\') '\\') | (&('\r') '\r') | (&('\n') '\n') | (&('\t') '\t') | (&(' ') ' ')) .)+>> */
|
|
nil,
|
|
/* 3 value <- <<('\'' (!('"' / '\'') .)* '\'')>> */
|
|
func() bool {
|
|
position85, tokenIndex85, depth85 := position, tokenIndex, depth
|
|
{
|
|
position86 := position
|
|
depth++
|
|
{
|
|
position87 := position
|
|
depth++
|
|
if buffer[position] != rune('\'') {
|
|
goto l85
|
|
}
|
|
position++
|
|
l88:
|
|
{
|
|
position89, tokenIndex89, depth89 := position, tokenIndex, depth
|
|
{
|
|
position90, tokenIndex90, depth90 := position, tokenIndex, depth
|
|
{
|
|
position91, tokenIndex91, depth91 := position, tokenIndex, depth
|
|
if buffer[position] != rune('"') {
|
|
goto l92
|
|
}
|
|
position++
|
|
goto l91
|
|
l92:
|
|
position, tokenIndex, depth = position91, tokenIndex91, depth91
|
|
if buffer[position] != rune('\'') {
|
|
goto l90
|
|
}
|
|
position++
|
|
}
|
|
l91:
|
|
goto l89
|
|
l90:
|
|
position, tokenIndex, depth = position90, tokenIndex90, depth90
|
|
}
|
|
if !matchDot() {
|
|
goto l89
|
|
}
|
|
goto l88
|
|
l89:
|
|
position, tokenIndex, depth = position89, tokenIndex89, depth89
|
|
}
|
|
if buffer[position] != rune('\'') {
|
|
goto l85
|
|
}
|
|
position++
|
|
depth--
|
|
add(rulePegText, position87)
|
|
}
|
|
depth--
|
|
add(rulevalue, position86)
|
|
}
|
|
return true
|
|
l85:
|
|
position, tokenIndex, depth = position85, tokenIndex85, depth85
|
|
return false
|
|
},
|
|
/* 4 number <- <<('0' / ([1-9] digit* ('.' digit*)?))>> */
|
|
func() bool {
|
|
position93, tokenIndex93, depth93 := position, tokenIndex, depth
|
|
{
|
|
position94 := position
|
|
depth++
|
|
{
|
|
position95 := position
|
|
depth++
|
|
{
|
|
position96, tokenIndex96, depth96 := position, tokenIndex, depth
|
|
if buffer[position] != rune('0') {
|
|
goto l97
|
|
}
|
|
position++
|
|
goto l96
|
|
l97:
|
|
position, tokenIndex, depth = position96, tokenIndex96, depth96
|
|
if c := buffer[position]; c < rune('1') || c > rune('9') {
|
|
goto l93
|
|
}
|
|
position++
|
|
l98:
|
|
{
|
|
position99, tokenIndex99, depth99 := position, tokenIndex, depth
|
|
if !_rules[ruledigit]() {
|
|
goto l99
|
|
}
|
|
goto l98
|
|
l99:
|
|
position, tokenIndex, depth = position99, tokenIndex99, depth99
|
|
}
|
|
{
|
|
position100, tokenIndex100, depth100 := position, tokenIndex, depth
|
|
if buffer[position] != rune('.') {
|
|
goto l100
|
|
}
|
|
position++
|
|
l102:
|
|
{
|
|
position103, tokenIndex103, depth103 := position, tokenIndex, depth
|
|
if !_rules[ruledigit]() {
|
|
goto l103
|
|
}
|
|
goto l102
|
|
l103:
|
|
position, tokenIndex, depth = position103, tokenIndex103, depth103
|
|
}
|
|
goto l101
|
|
l100:
|
|
position, tokenIndex, depth = position100, tokenIndex100, depth100
|
|
}
|
|
l101:
|
|
}
|
|
l96:
|
|
depth--
|
|
add(rulePegText, position95)
|
|
}
|
|
depth--
|
|
add(rulenumber, position94)
|
|
}
|
|
return true
|
|
l93:
|
|
position, tokenIndex, depth = position93, tokenIndex93, depth93
|
|
return false
|
|
},
|
|
/* 5 digit <- <[0-9]> */
|
|
func() bool {
|
|
position104, tokenIndex104, depth104 := position, tokenIndex, depth
|
|
{
|
|
position105 := position
|
|
depth++
|
|
if c := buffer[position]; c < rune('0') || c > rune('9') {
|
|
goto l104
|
|
}
|
|
position++
|
|
depth--
|
|
add(ruledigit, position105)
|
|
}
|
|
return true
|
|
l104:
|
|
position, tokenIndex, depth = position104, tokenIndex104, depth104
|
|
return false
|
|
},
|
|
/* 6 time <- <(('t' / 'T') ('i' / 'I') ('m' / 'M') ('e' / 'E') ' ' <(year '-' month '-' day 'T' digit digit ':' digit digit ':' digit digit ((('-' / '+') digit digit ':' digit digit) / 'Z'))>)> */
|
|
func() bool {
|
|
position106, tokenIndex106, depth106 := position, tokenIndex, depth
|
|
{
|
|
position107 := position
|
|
depth++
|
|
{
|
|
position108, tokenIndex108, depth108 := position, tokenIndex, depth
|
|
if buffer[position] != rune('t') {
|
|
goto l109
|
|
}
|
|
position++
|
|
goto l108
|
|
l109:
|
|
position, tokenIndex, depth = position108, tokenIndex108, depth108
|
|
if buffer[position] != rune('T') {
|
|
goto l106
|
|
}
|
|
position++
|
|
}
|
|
l108:
|
|
{
|
|
position110, tokenIndex110, depth110 := position, tokenIndex, depth
|
|
if buffer[position] != rune('i') {
|
|
goto l111
|
|
}
|
|
position++
|
|
goto l110
|
|
l111:
|
|
position, tokenIndex, depth = position110, tokenIndex110, depth110
|
|
if buffer[position] != rune('I') {
|
|
goto l106
|
|
}
|
|
position++
|
|
}
|
|
l110:
|
|
{
|
|
position112, tokenIndex112, depth112 := position, tokenIndex, depth
|
|
if buffer[position] != rune('m') {
|
|
goto l113
|
|
}
|
|
position++
|
|
goto l112
|
|
l113:
|
|
position, tokenIndex, depth = position112, tokenIndex112, depth112
|
|
if buffer[position] != rune('M') {
|
|
goto l106
|
|
}
|
|
position++
|
|
}
|
|
l112:
|
|
{
|
|
position114, tokenIndex114, depth114 := position, tokenIndex, depth
|
|
if buffer[position] != rune('e') {
|
|
goto l115
|
|
}
|
|
position++
|
|
goto l114
|
|
l115:
|
|
position, tokenIndex, depth = position114, tokenIndex114, depth114
|
|
if buffer[position] != rune('E') {
|
|
goto l106
|
|
}
|
|
position++
|
|
}
|
|
l114:
|
|
if buffer[position] != rune(' ') {
|
|
goto l106
|
|
}
|
|
position++
|
|
{
|
|
position116 := position
|
|
depth++
|
|
if !_rules[ruleyear]() {
|
|
goto l106
|
|
}
|
|
if buffer[position] != rune('-') {
|
|
goto l106
|
|
}
|
|
position++
|
|
if !_rules[rulemonth]() {
|
|
goto l106
|
|
}
|
|
if buffer[position] != rune('-') {
|
|
goto l106
|
|
}
|
|
position++
|
|
if !_rules[ruleday]() {
|
|
goto l106
|
|
}
|
|
if buffer[position] != rune('T') {
|
|
goto l106
|
|
}
|
|
position++
|
|
if !_rules[ruledigit]() {
|
|
goto l106
|
|
}
|
|
if !_rules[ruledigit]() {
|
|
goto l106
|
|
}
|
|
if buffer[position] != rune(':') {
|
|
goto l106
|
|
}
|
|
position++
|
|
if !_rules[ruledigit]() {
|
|
goto l106
|
|
}
|
|
if !_rules[ruledigit]() {
|
|
goto l106
|
|
}
|
|
if buffer[position] != rune(':') {
|
|
goto l106
|
|
}
|
|
position++
|
|
if !_rules[ruledigit]() {
|
|
goto l106
|
|
}
|
|
if !_rules[ruledigit]() {
|
|
goto l106
|
|
}
|
|
{
|
|
position117, tokenIndex117, depth117 := position, tokenIndex, depth
|
|
{
|
|
position119, tokenIndex119, depth119 := position, tokenIndex, depth
|
|
if buffer[position] != rune('-') {
|
|
goto l120
|
|
}
|
|
position++
|
|
goto l119
|
|
l120:
|
|
position, tokenIndex, depth = position119, tokenIndex119, depth119
|
|
if buffer[position] != rune('+') {
|
|
goto l118
|
|
}
|
|
position++
|
|
}
|
|
l119:
|
|
if !_rules[ruledigit]() {
|
|
goto l118
|
|
}
|
|
if !_rules[ruledigit]() {
|
|
goto l118
|
|
}
|
|
if buffer[position] != rune(':') {
|
|
goto l118
|
|
}
|
|
position++
|
|
if !_rules[ruledigit]() {
|
|
goto l118
|
|
}
|
|
if !_rules[ruledigit]() {
|
|
goto l118
|
|
}
|
|
goto l117
|
|
l118:
|
|
position, tokenIndex, depth = position117, tokenIndex117, depth117
|
|
if buffer[position] != rune('Z') {
|
|
goto l106
|
|
}
|
|
position++
|
|
}
|
|
l117:
|
|
depth--
|
|
add(rulePegText, position116)
|
|
}
|
|
depth--
|
|
add(ruletime, position107)
|
|
}
|
|
return true
|
|
l106:
|
|
position, tokenIndex, depth = position106, tokenIndex106, depth106
|
|
return false
|
|
},
|
|
/* 7 date <- <(('d' / 'D') ('a' / 'A') ('t' / 'T') ('e' / 'E') ' ' <(year '-' month '-' day)>)> */
|
|
func() bool {
|
|
position121, tokenIndex121, depth121 := position, tokenIndex, depth
|
|
{
|
|
position122 := position
|
|
depth++
|
|
{
|
|
position123, tokenIndex123, depth123 := position, tokenIndex, depth
|
|
if buffer[position] != rune('d') {
|
|
goto l124
|
|
}
|
|
position++
|
|
goto l123
|
|
l124:
|
|
position, tokenIndex, depth = position123, tokenIndex123, depth123
|
|
if buffer[position] != rune('D') {
|
|
goto l121
|
|
}
|
|
position++
|
|
}
|
|
l123:
|
|
{
|
|
position125, tokenIndex125, depth125 := position, tokenIndex, depth
|
|
if buffer[position] != rune('a') {
|
|
goto l126
|
|
}
|
|
position++
|
|
goto l125
|
|
l126:
|
|
position, tokenIndex, depth = position125, tokenIndex125, depth125
|
|
if buffer[position] != rune('A') {
|
|
goto l121
|
|
}
|
|
position++
|
|
}
|
|
l125:
|
|
{
|
|
position127, tokenIndex127, depth127 := position, tokenIndex, depth
|
|
if buffer[position] != rune('t') {
|
|
goto l128
|
|
}
|
|
position++
|
|
goto l127
|
|
l128:
|
|
position, tokenIndex, depth = position127, tokenIndex127, depth127
|
|
if buffer[position] != rune('T') {
|
|
goto l121
|
|
}
|
|
position++
|
|
}
|
|
l127:
|
|
{
|
|
position129, tokenIndex129, depth129 := position, tokenIndex, depth
|
|
if buffer[position] != rune('e') {
|
|
goto l130
|
|
}
|
|
position++
|
|
goto l129
|
|
l130:
|
|
position, tokenIndex, depth = position129, tokenIndex129, depth129
|
|
if buffer[position] != rune('E') {
|
|
goto l121
|
|
}
|
|
position++
|
|
}
|
|
l129:
|
|
if buffer[position] != rune(' ') {
|
|
goto l121
|
|
}
|
|
position++
|
|
{
|
|
position131 := position
|
|
depth++
|
|
if !_rules[ruleyear]() {
|
|
goto l121
|
|
}
|
|
if buffer[position] != rune('-') {
|
|
goto l121
|
|
}
|
|
position++
|
|
if !_rules[rulemonth]() {
|
|
goto l121
|
|
}
|
|
if buffer[position] != rune('-') {
|
|
goto l121
|
|
}
|
|
position++
|
|
if !_rules[ruleday]() {
|
|
goto l121
|
|
}
|
|
depth--
|
|
add(rulePegText, position131)
|
|
}
|
|
depth--
|
|
add(ruledate, position122)
|
|
}
|
|
return true
|
|
l121:
|
|
position, tokenIndex, depth = position121, tokenIndex121, depth121
|
|
return false
|
|
},
|
|
/* 8 year <- <(('1' / '2') digit digit digit)> */
|
|
func() bool {
|
|
position132, tokenIndex132, depth132 := position, tokenIndex, depth
|
|
{
|
|
position133 := position
|
|
depth++
|
|
{
|
|
position134, tokenIndex134, depth134 := position, tokenIndex, depth
|
|
if buffer[position] != rune('1') {
|
|
goto l135
|
|
}
|
|
position++
|
|
goto l134
|
|
l135:
|
|
position, tokenIndex, depth = position134, tokenIndex134, depth134
|
|
if buffer[position] != rune('2') {
|
|
goto l132
|
|
}
|
|
position++
|
|
}
|
|
l134:
|
|
if !_rules[ruledigit]() {
|
|
goto l132
|
|
}
|
|
if !_rules[ruledigit]() {
|
|
goto l132
|
|
}
|
|
if !_rules[ruledigit]() {
|
|
goto l132
|
|
}
|
|
depth--
|
|
add(ruleyear, position133)
|
|
}
|
|
return true
|
|
l132:
|
|
position, tokenIndex, depth = position132, tokenIndex132, depth132
|
|
return false
|
|
},
|
|
/* 9 month <- <(('0' / '1') digit)> */
|
|
func() bool {
|
|
position136, tokenIndex136, depth136 := position, tokenIndex, depth
|
|
{
|
|
position137 := position
|
|
depth++
|
|
{
|
|
position138, tokenIndex138, depth138 := position, tokenIndex, depth
|
|
if buffer[position] != rune('0') {
|
|
goto l139
|
|
}
|
|
position++
|
|
goto l138
|
|
l139:
|
|
position, tokenIndex, depth = position138, tokenIndex138, depth138
|
|
if buffer[position] != rune('1') {
|
|
goto l136
|
|
}
|
|
position++
|
|
}
|
|
l138:
|
|
if !_rules[ruledigit]() {
|
|
goto l136
|
|
}
|
|
depth--
|
|
add(rulemonth, position137)
|
|
}
|
|
return true
|
|
l136:
|
|
position, tokenIndex, depth = position136, tokenIndex136, depth136
|
|
return false
|
|
},
|
|
/* 10 day <- <(((&('3') '3') | (&('2') '2') | (&('1') '1') | (&('0') '0')) digit)> */
|
|
func() bool {
|
|
position140, tokenIndex140, depth140 := position, tokenIndex, depth
|
|
{
|
|
position141 := position
|
|
depth++
|
|
{
|
|
switch buffer[position] {
|
|
case '3':
|
|
if buffer[position] != rune('3') {
|
|
goto l140
|
|
}
|
|
position++
|
|
break
|
|
case '2':
|
|
if buffer[position] != rune('2') {
|
|
goto l140
|
|
}
|
|
position++
|
|
break
|
|
case '1':
|
|
if buffer[position] != rune('1') {
|
|
goto l140
|
|
}
|
|
position++
|
|
break
|
|
default:
|
|
if buffer[position] != rune('0') {
|
|
goto l140
|
|
}
|
|
position++
|
|
break
|
|
}
|
|
}
|
|
|
|
if !_rules[ruledigit]() {
|
|
goto l140
|
|
}
|
|
depth--
|
|
add(ruleday, position141)
|
|
}
|
|
return true
|
|
l140:
|
|
position, tokenIndex, depth = position140, tokenIndex140, depth140
|
|
return false
|
|
},
|
|
/* 11 and <- <(('a' / 'A') ('n' / 'N') ('d' / 'D'))> */
|
|
nil,
|
|
/* 12 equal <- <'='> */
|
|
nil,
|
|
/* 13 contains <- <(('c' / 'C') ('o' / 'O') ('n' / 'N') ('t' / 'T') ('a' / 'A') ('i' / 'I') ('n' / 'N') ('s' / 'S'))> */
|
|
nil,
|
|
/* 14 exists <- <(('e' / 'E') ('x' / 'X') ('i' / 'I') ('s' / 'S') ('t' / 'T') ('s' / 'S'))> */
|
|
nil,
|
|
/* 15 le <- <('<' '=')> */
|
|
nil,
|
|
/* 16 ge <- <('>' '=')> */
|
|
nil,
|
|
/* 17 l <- <'<'> */
|
|
nil,
|
|
/* 18 g <- <'>'> */
|
|
nil,
|
|
nil,
|
|
}
|
|
p.rules = _rules
|
|
}
|