This repository has been archived on 2023-12-27. You can view files and clone it, but cannot push or open issues or pull requests.
autosnooze/vendor/github.com/tj/go-naturaldate/grammar.peg.go
2022-12-16 19:45:01 -08:00

5351 lines
118 KiB
Go

package naturaldate
// Code generated by peg -inline -switch grammar.peg DO NOT EDIT
import (
"fmt"
"io"
"os"
"sort"
"strconv"
"time"
)
const endSymbol rune = 1114112
/* The rule types inferred from the grammar are below. */
type pegRule uint8
const (
ruleUnknown pegRule = iota
ruleQuery
ruleExpr
ruleRelativeMinutes
ruleRelativeHours
ruleRelativeDays
ruleRelativeWeeks
ruleRelativeMonth
ruleRelativeYear
ruleRelativeWeekdays
ruleDate
ruleTime
ruleClock12Hour
ruleClock24Hour
ruleMinutes
ruleSeconds
ruleNumber
ruleWeekday
ruleMonth
ruleIn
ruleLast
ruleNext
ruleOrdinal
ruleWord
ruleYEARS
ruleMONTHS
ruleWEEKS
ruleDAYS
ruleHOURS
ruleMINUTES
ruleYESTERDAY
ruleTOMORROW
ruleTODAY
ruleAGO
ruleFROM_NOW
ruleNOW
ruleAM
rulePM
ruleNEXT
ruleIN
ruleLAST
rule_
ruleWhitespace
ruleEOL
ruleEOF
ruleAction0
ruleAction1
ruleAction2
ruleAction3
ruleAction4
ruleAction5
ruleAction6
ruleAction7
ruleAction8
ruleAction9
ruleAction10
ruleAction11
ruleAction12
ruleAction13
ruleAction14
ruleAction15
ruleAction16
ruleAction17
ruleAction18
ruleAction19
ruleAction20
ruleAction21
ruleAction22
ruleAction23
ruleAction24
ruleAction25
ruleAction26
ruleAction27
ruleAction28
ruleAction29
ruleAction30
ruleAction31
ruleAction32
ruleAction33
ruleAction34
ruleAction35
ruleAction36
ruleAction37
ruleAction38
ruleAction39
ruleAction40
ruleAction41
ruleAction42
ruleAction43
ruleAction44
rulePegText
ruleAction45
ruleAction46
ruleAction47
ruleAction48
ruleAction49
ruleAction50
ruleAction51
ruleAction52
ruleAction53
ruleAction54
ruleAction55
ruleAction56
ruleAction57
ruleAction58
ruleAction59
ruleAction60
ruleAction61
ruleAction62
ruleAction63
ruleAction64
ruleAction65
ruleAction66
ruleAction67
ruleAction68
ruleAction69
ruleAction70
ruleAction71
ruleAction72
ruleAction73
ruleAction74
ruleAction75
ruleAction76
ruleAction77
)
var rul3s = [...]string{
"Unknown",
"Query",
"Expr",
"RelativeMinutes",
"RelativeHours",
"RelativeDays",
"RelativeWeeks",
"RelativeMonth",
"RelativeYear",
"RelativeWeekdays",
"Date",
"Time",
"Clock12Hour",
"Clock24Hour",
"Minutes",
"Seconds",
"Number",
"Weekday",
"Month",
"In",
"Last",
"Next",
"Ordinal",
"Word",
"YEARS",
"MONTHS",
"WEEKS",
"DAYS",
"HOURS",
"MINUTES",
"YESTERDAY",
"TOMORROW",
"TODAY",
"AGO",
"FROM_NOW",
"NOW",
"AM",
"PM",
"NEXT",
"IN",
"LAST",
"_",
"Whitespace",
"EOL",
"EOF",
"Action0",
"Action1",
"Action2",
"Action3",
"Action4",
"Action5",
"Action6",
"Action7",
"Action8",
"Action9",
"Action10",
"Action11",
"Action12",
"Action13",
"Action14",
"Action15",
"Action16",
"Action17",
"Action18",
"Action19",
"Action20",
"Action21",
"Action22",
"Action23",
"Action24",
"Action25",
"Action26",
"Action27",
"Action28",
"Action29",
"Action30",
"Action31",
"Action32",
"Action33",
"Action34",
"Action35",
"Action36",
"Action37",
"Action38",
"Action39",
"Action40",
"Action41",
"Action42",
"Action43",
"Action44",
"PegText",
"Action45",
"Action46",
"Action47",
"Action48",
"Action49",
"Action50",
"Action51",
"Action52",
"Action53",
"Action54",
"Action55",
"Action56",
"Action57",
"Action58",
"Action59",
"Action60",
"Action61",
"Action62",
"Action63",
"Action64",
"Action65",
"Action66",
"Action67",
"Action68",
"Action69",
"Action70",
"Action71",
"Action72",
"Action73",
"Action74",
"Action75",
"Action76",
"Action77",
}
type token32 struct {
pegRule
begin, end uint32
}
func (t *token32) String() string {
return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end)
}
type node32 struct {
token32
up, next *node32
}
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.Fprintf(w, " ")
}
rule := rul3s[node.pegRule]
quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end])))
if !pretty {
fmt.Fprintf(w, "%v %v\n", rule, quote)
} else {
fmt.Fprintf(w, "\x1B[34m%v\x1B[m %v\n", rule, quote)
}
if node.up != nil {
print(node.up, depth+1)
}
node = node.next
}
}
print(node, 0)
}
func (node *node32) Print(w io.Writer, buffer string) {
node.print(w, false, buffer)
}
func (node *node32) PrettyPrint(w io.Writer, buffer string) {
node.print(w, true, buffer)
}
type tokens32 struct {
tree []token32
}
func (t *tokens32) Trim(length uint32) {
t.tree = t.tree[:length]
}
func (t *tokens32) Print() {
for _, token := range t.tree {
fmt.Println(token.String())
}
}
func (t *tokens32) AST() *node32 {
type element struct {
node *node32
down *element
}
tokens := t.Tokens()
var stack *element
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}
}
if stack != nil {
return stack.node
}
return nil
}
func (t *tokens32) PrintSyntaxTree(buffer string) {
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(os.Stdout, buffer)
}
func (t *tokens32) Add(rule pegRule, begin, end, index uint32) {
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 {
return t.tree
}
type parser struct {
t time.Time
number int
month time.Month
weekday time.Weekday
direction int
Buffer string
buffer []rune
rules [124]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
tokens32
}
func (p *parser) Parse(rule ...int) error {
return p.parse(rule...)
}
func (p *parser) Reset() {
p.reset()
}
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 *parser
max token32
}
func (e *parseError) Error() string {
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
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)
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 err
}
func (p *parser) PrintSyntaxTree() {
if p.Pretty {
p.tokens32.PrettyPrintSyntaxTree(p.Buffer)
} else {
p.tokens32.PrintSyntaxTree(p.Buffer)
}
}
func (p *parser) WriteSyntaxTree(w io.Writer) {
p.tokens32.WriteSyntaxTree(w, p.Buffer)
}
func (p *parser) Execute() {
buffer, _buffer, text, begin, end := p.Buffer, p.buffer, "", 0, 0
for _, token := range p.Tokens() {
switch token.pegRule {
case rulePegText:
begin, end = int(token.begin), int(token.end)
text = string(_buffer[begin:end])
case ruleAction0:
p.t = p.t.Add(-time.Minute * time.Duration(p.number))
case ruleAction1:
p.t = p.t.Add(time.Minute * time.Duration(p.number))
case ruleAction2:
p.t = p.t.Add(-time.Minute * time.Duration(p.number))
case ruleAction3:
p.t = p.t.Add(time.Minute * time.Duration(p.number))
case ruleAction4:
p.t = p.t.Add(p.withDirection(time.Minute) * time.Duration(p.number))
case ruleAction5:
p.t = p.t.Add(-time.Hour * time.Duration(p.number))
case ruleAction6:
p.t = p.t.Add(time.Hour * time.Duration(p.number))
case ruleAction7:
p.t = p.t.Add(-time.Hour * time.Duration(p.number))
case ruleAction8:
p.t = p.t.Add(time.Hour * time.Duration(p.number))
case ruleAction9:
p.t = p.t.Add(p.withDirection(time.Hour) * time.Duration(p.number))
case ruleAction10:
p.t = truncateDay(p.t.Add(-day * time.Duration(p.number)))
case ruleAction11:
p.t = p.t.Add(day * time.Duration(p.number))
case ruleAction12:
p.t = truncateDay(p.t.Add(-day * time.Duration(p.number)))
case ruleAction13:
p.t = truncateDay(p.t.Add(day * time.Duration(p.number)))
case ruleAction14:
p.t = truncateDay(p.t.Add(p.withDirection(day) * time.Duration(p.number)))
case ruleAction15:
p.t = truncateDay(p.t.Add(-week * time.Duration(p.number)))
case ruleAction16:
p.t = p.t.Add(week * time.Duration(p.number))
case ruleAction17:
p.t = truncateDay(p.t.Add(-week * time.Duration(p.number)))
case ruleAction18:
p.t = truncateDay(p.t.Add(week * time.Duration(p.number)))
case ruleAction19:
p.t = truncateDay(p.t.Add(p.withDirection(week) * time.Duration(p.number)))
case ruleAction20:
p.t = p.t.AddDate(0, -p.number, 0)
case ruleAction21:
p.t = p.t.AddDate(0, p.number, 0)
case ruleAction22:
p.t = p.t.AddDate(0, -p.number, 0)
case ruleAction23:
p.t = p.t.AddDate(0, p.number, 0)
case ruleAction24:
p.t = prevMonth(p.t, p.month)
case ruleAction25:
p.t = nextMonth(p.t, p.month)
case ruleAction26:
if p.direction < 0 {
p.t = prevMonth(p.t, p.month)
} else {
p.t = nextMonth(p.t, p.month)
}
case ruleAction27:
p.t = p.t.AddDate(-p.number, 0, 0)
case ruleAction28:
p.t = p.t.AddDate(p.number, 0, 0)
case ruleAction29:
p.t = p.t.AddDate(-p.number, 0, 0)
case ruleAction30:
p.t = p.t.AddDate(p.number, 0, 0)
case ruleAction31:
p.t = time.Date(p.t.Year()-1, 1, 1, 0, 0, 0, 0, p.t.Location())
case ruleAction32:
p.t = time.Date(p.t.Year()+1, 1, 1, 0, 0, 0, 0, p.t.Location())
case ruleAction33:
p.t = truncateDay(p.t)
case ruleAction34:
p.t = truncateDay(p.t.Add(-day))
case ruleAction35:
p.t = truncateDay(p.t.Add(+day))
case ruleAction36:
p.t = truncateDay(prevWeekday(p.t, p.weekday))
case ruleAction37:
p.t = truncateDay(nextWeekday(p.t, p.weekday))
case ruleAction38:
if p.direction < 0 {
p.t = truncateDay(prevWeekday(p.t, p.weekday))
} else {
p.t = truncateDay(nextWeekday(p.t, p.weekday))
}
case ruleAction39:
t := p.t
year, month, _ := t.Date()
hour, min, sec := t.Clock()
p.t = time.Date(year, month, p.number, hour, min, sec, 0, t.Location())
case ruleAction40:
year, month, day := p.t.Date()
p.t = time.Date(year, month, day, p.number, 0, 0, 0, p.t.Location())
case ruleAction41:
year, month, day := p.t.Date()
p.t = time.Date(year, month, day, p.number+12, 0, 0, 0, p.t.Location())
case ruleAction42:
year, month, day := p.t.Date()
p.t = time.Date(year, month, day, p.number, 0, 0, 0, p.t.Location())
case ruleAction43:
t := p.t
year, month, day := t.Date()
hour, _, _ := t.Clock()
p.t = time.Date(year, month, day, hour, p.number, 0, 0, t.Location())
case ruleAction44:
t := p.t
year, month, day := t.Date()
hour, min, _ := t.Clock()
p.t = time.Date(year, month, day, hour, min, p.number, 0, t.Location())
case ruleAction45:
n, _ := strconv.Atoi(text)
p.number = n
case ruleAction46:
p.number = 1
case ruleAction47:
p.number = 2
case ruleAction48:
p.number = 3
case ruleAction49:
p.number = 4
case ruleAction50:
p.number = 5
case ruleAction51:
p.number = 6
case ruleAction52:
p.number = 7
case ruleAction53:
p.number = 8
case ruleAction54:
p.number = 9
case ruleAction55:
p.number = 10
case ruleAction56:
p.weekday = time.Sunday
case ruleAction57:
p.weekday = time.Monday
case ruleAction58:
p.weekday = time.Tuesday
case ruleAction59:
p.weekday = time.Wednesday
case ruleAction60:
p.weekday = time.Thursday
case ruleAction61:
p.weekday = time.Friday
case ruleAction62:
p.weekday = time.Saturday
case ruleAction63:
p.month = time.January
case ruleAction64:
p.month = time.February
case ruleAction65:
p.month = time.March
case ruleAction66:
p.month = time.April
case ruleAction67:
p.month = time.May
case ruleAction68:
p.month = time.June
case ruleAction69:
p.month = time.July
case ruleAction70:
p.month = time.August
case ruleAction71:
p.month = time.September
case ruleAction72:
p.month = time.October
case ruleAction73:
p.month = time.November
case ruleAction74:
p.month = time.December
case ruleAction75:
p.number = 1
case ruleAction76:
p.number = 1
case ruleAction77:
p.number = 1
}
}
_, _, _, _, _ = buffer, _buffer, text, begin, end
}
func Pretty(pretty bool) func(*parser) error {
return func(p *parser) error {
p.Pretty = pretty
return nil
}
}
func Size(size int) func(*parser) error {
return func(p *parser) error {
p.tokens32 = tokens32{tree: make([]token32, 0, size)}
return nil
}
}
func (p *parser) Init(options ...func(*parser) 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
p.buffer = []rune(p.Buffer)
if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
p.buffer = append(p.buffer, endSymbol)
}
buffer = p.buffer
}
p.reset()
_rules := p.rules
tree := p.tokens32
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}
}
add := func(rule pegRule, begin uint32) {
tree.Add(rule, begin, position, tokenIndex)
tokenIndex++
if begin != position && position > max.end {
max = token32{rule, begin, position}
}
}
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 Query <- <(_ Expr+ EOF)> */
func() bool {
position0, tokenIndex0 := position, tokenIndex
{
position1 := position
if !_rules[rule_]() {
goto l0
}
{
position4 := position
{
position5, tokenIndex5 := position, tokenIndex
{
position7 := position
if buffer[position] != rune('n') {
goto l6
}
position++
if buffer[position] != rune('o') {
goto l6
}
position++
if buffer[position] != rune('w') {
goto l6
}
position++
if !_rules[rule_]() {
goto l6
}
add(ruleNOW, position7)
}
goto l5
l6:
position, tokenIndex = position5, tokenIndex5
{
position9 := position
{
position10, tokenIndex10 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l11
}
if !_rules[ruleMINUTES]() {
goto l11
}
if !_rules[ruleAGO]() {
goto l11
}
{
add(ruleAction0, position)
}
goto l10
l11:
position, tokenIndex = position10, tokenIndex10
{
position14, tokenIndex14 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l15
}
if !_rules[ruleMINUTES]() {
goto l15
}
if !_rules[ruleFROM_NOW]() {
goto l15
}
goto l14
l15:
position, tokenIndex = position14, tokenIndex14
if !_rules[ruleIn]() {
goto l13
}
{
position16, tokenIndex16 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l16
}
goto l17
l16:
position, tokenIndex = position16, tokenIndex16
}
l17:
if !_rules[ruleMINUTES]() {
goto l13
}
{
position18, tokenIndex18 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l18
}
goto l19
l18:
position, tokenIndex = position18, tokenIndex18
}
l19:
}
l14:
{
add(ruleAction1, position)
}
goto l10
l13:
position, tokenIndex = position10, tokenIndex10
if !_rules[ruleLast]() {
goto l21
}
{
position22, tokenIndex22 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l22
}
goto l23
l22:
position, tokenIndex = position22, tokenIndex22
}
l23:
if !_rules[ruleMINUTES]() {
goto l21
}
{
add(ruleAction2, position)
}
goto l10
l21:
position, tokenIndex = position10, tokenIndex10
if !_rules[ruleNext]() {
goto l25
}
{
position26, tokenIndex26 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l26
}
goto l27
l26:
position, tokenIndex = position26, tokenIndex26
}
l27:
if !_rules[ruleMINUTES]() {
goto l25
}
{
add(ruleAction3, position)
}
goto l10
l25:
position, tokenIndex = position10, tokenIndex10
if !_rules[ruleNumber]() {
goto l8
}
if !_rules[ruleMINUTES]() {
goto l8
}
{
add(ruleAction4, position)
}
}
l10:
add(ruleRelativeMinutes, position9)
}
goto l5
l8:
position, tokenIndex = position5, tokenIndex5
{
position31 := position
{
position32, tokenIndex32 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l33
}
if !_rules[ruleHOURS]() {
goto l33
}
if !_rules[ruleAGO]() {
goto l33
}
{
add(ruleAction5, position)
}
goto l32
l33:
position, tokenIndex = position32, tokenIndex32
{
position36, tokenIndex36 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l37
}
if !_rules[ruleHOURS]() {
goto l37
}
if !_rules[ruleFROM_NOW]() {
goto l37
}
goto l36
l37:
position, tokenIndex = position36, tokenIndex36
if !_rules[ruleIn]() {
goto l35
}
{
position38, tokenIndex38 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l38
}
goto l39
l38:
position, tokenIndex = position38, tokenIndex38
}
l39:
if !_rules[ruleHOURS]() {
goto l35
}
{
position40, tokenIndex40 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l40
}
goto l41
l40:
position, tokenIndex = position40, tokenIndex40
}
l41:
}
l36:
{
add(ruleAction6, position)
}
goto l32
l35:
position, tokenIndex = position32, tokenIndex32
if !_rules[ruleLast]() {
goto l43
}
{
position44, tokenIndex44 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l44
}
goto l45
l44:
position, tokenIndex = position44, tokenIndex44
}
l45:
if !_rules[ruleHOURS]() {
goto l43
}
{
add(ruleAction7, position)
}
goto l32
l43:
position, tokenIndex = position32, tokenIndex32
if !_rules[ruleNext]() {
goto l47
}
{
position48, tokenIndex48 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l48
}
goto l49
l48:
position, tokenIndex = position48, tokenIndex48
}
l49:
if !_rules[ruleHOURS]() {
goto l47
}
{
add(ruleAction8, position)
}
goto l32
l47:
position, tokenIndex = position32, tokenIndex32
if !_rules[ruleNumber]() {
goto l30
}
if !_rules[ruleHOURS]() {
goto l30
}
{
add(ruleAction9, position)
}
}
l32:
add(ruleRelativeHours, position31)
}
goto l5
l30:
position, tokenIndex = position5, tokenIndex5
{
position53 := position
{
position54, tokenIndex54 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l55
}
if !_rules[ruleDAYS]() {
goto l55
}
if !_rules[ruleAGO]() {
goto l55
}
{
add(ruleAction10, position)
}
goto l54
l55:
position, tokenIndex = position54, tokenIndex54
{
position58, tokenIndex58 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l59
}
if !_rules[ruleDAYS]() {
goto l59
}
if !_rules[ruleFROM_NOW]() {
goto l59
}
goto l58
l59:
position, tokenIndex = position58, tokenIndex58
if !_rules[ruleIn]() {
goto l57
}
{
position60, tokenIndex60 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l60
}
goto l61
l60:
position, tokenIndex = position60, tokenIndex60
}
l61:
if !_rules[ruleDAYS]() {
goto l57
}
{
position62, tokenIndex62 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l62
}
goto l63
l62:
position, tokenIndex = position62, tokenIndex62
}
l63:
}
l58:
{
add(ruleAction11, position)
}
goto l54
l57:
position, tokenIndex = position54, tokenIndex54
if !_rules[ruleLast]() {
goto l65
}
{
position66, tokenIndex66 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l66
}
goto l67
l66:
position, tokenIndex = position66, tokenIndex66
}
l67:
if !_rules[ruleDAYS]() {
goto l65
}
{
add(ruleAction12, position)
}
goto l54
l65:
position, tokenIndex = position54, tokenIndex54
if !_rules[ruleNext]() {
goto l69
}
{
position70, tokenIndex70 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l70
}
goto l71
l70:
position, tokenIndex = position70, tokenIndex70
}
l71:
if !_rules[ruleDAYS]() {
goto l69
}
{
add(ruleAction13, position)
}
goto l54
l69:
position, tokenIndex = position54, tokenIndex54
if !_rules[ruleNumber]() {
goto l52
}
if !_rules[ruleDAYS]() {
goto l52
}
{
add(ruleAction14, position)
}
}
l54:
add(ruleRelativeDays, position53)
}
goto l5
l52:
position, tokenIndex = position5, tokenIndex5
{
position75 := position
{
position76, tokenIndex76 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l77
}
if !_rules[ruleWEEKS]() {
goto l77
}
if !_rules[ruleAGO]() {
goto l77
}
{
add(ruleAction15, position)
}
goto l76
l77:
position, tokenIndex = position76, tokenIndex76
{
position80, tokenIndex80 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l81
}
if !_rules[ruleWEEKS]() {
goto l81
}
if !_rules[ruleFROM_NOW]() {
goto l81
}
goto l80
l81:
position, tokenIndex = position80, tokenIndex80
if !_rules[ruleIn]() {
goto l79
}
{
position82, tokenIndex82 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l82
}
goto l83
l82:
position, tokenIndex = position82, tokenIndex82
}
l83:
if !_rules[ruleWEEKS]() {
goto l79
}
{
position84, tokenIndex84 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l84
}
goto l85
l84:
position, tokenIndex = position84, tokenIndex84
}
l85:
}
l80:
{
add(ruleAction16, position)
}
goto l76
l79:
position, tokenIndex = position76, tokenIndex76
if !_rules[ruleLast]() {
goto l87
}
{
position88, tokenIndex88 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l88
}
goto l89
l88:
position, tokenIndex = position88, tokenIndex88
}
l89:
if !_rules[ruleWEEKS]() {
goto l87
}
{
add(ruleAction17, position)
}
goto l76
l87:
position, tokenIndex = position76, tokenIndex76
if !_rules[ruleNext]() {
goto l91
}
{
position92, tokenIndex92 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l92
}
goto l93
l92:
position, tokenIndex = position92, tokenIndex92
}
l93:
if !_rules[ruleWEEKS]() {
goto l91
}
{
add(ruleAction18, position)
}
goto l76
l91:
position, tokenIndex = position76, tokenIndex76
if !_rules[ruleNumber]() {
goto l74
}
if !_rules[ruleWEEKS]() {
goto l74
}
{
add(ruleAction19, position)
}
}
l76:
add(ruleRelativeWeeks, position75)
}
goto l5
l74:
position, tokenIndex = position5, tokenIndex5
{
position97 := position
{
position98, tokenIndex98 := position, tokenIndex
{
position100 := position
if buffer[position] != rune('t') {
goto l99
}
position++
if buffer[position] != rune('o') {
goto l99
}
position++
if buffer[position] != rune('d') {
goto l99
}
position++
if buffer[position] != rune('a') {
goto l99
}
position++
if buffer[position] != rune('y') {
goto l99
}
position++
if !_rules[rule_]() {
goto l99
}
add(ruleTODAY, position100)
}
{
add(ruleAction33, position)
}
goto l98
l99:
position, tokenIndex = position98, tokenIndex98
{
position103 := position
if buffer[position] != rune('t') {
goto l102
}
position++
if buffer[position] != rune('o') {
goto l102
}
position++
if buffer[position] != rune('m') {
goto l102
}
position++
if buffer[position] != rune('o') {
goto l102
}
position++
if buffer[position] != rune('r') {
goto l102
}
position++
if buffer[position] != rune('r') {
goto l102
}
position++
if buffer[position] != rune('o') {
goto l102
}
position++
if buffer[position] != rune('w') {
goto l102
}
position++
if !_rules[rule_]() {
goto l102
}
add(ruleTOMORROW, position103)
}
{
add(ruleAction35, position)
}
goto l98
l102:
position, tokenIndex = position98, tokenIndex98
{
switch buffer[position] {
case 'n':
if !_rules[ruleNEXT]() {
goto l96
}
if !_rules[ruleWeekday]() {
goto l96
}
{
add(ruleAction37, position)
}
break
case 'y':
{
position107 := position
if buffer[position] != rune('y') {
goto l96
}
position++
if buffer[position] != rune('e') {
goto l96
}
position++
if buffer[position] != rune('s') {
goto l96
}
position++
if buffer[position] != rune('t') {
goto l96
}
position++
if buffer[position] != rune('e') {
goto l96
}
position++
if buffer[position] != rune('r') {
goto l96
}
position++
if buffer[position] != rune('d') {
goto l96
}
position++
if buffer[position] != rune('a') {
goto l96
}
position++
if buffer[position] != rune('y') {
goto l96
}
position++
if !_rules[rule_]() {
goto l96
}
add(ruleYESTERDAY, position107)
}
{
add(ruleAction34, position)
}
break
case 'l', 'p':
if !_rules[ruleLAST]() {
goto l96
}
if !_rules[ruleWeekday]() {
goto l96
}
{
add(ruleAction36, position)
}
break
default:
if !_rules[ruleWeekday]() {
goto l96
}
{
add(ruleAction38, position)
}
break
}
}
}
l98:
add(ruleRelativeWeekdays, position97)
}
goto l5
l96:
position, tokenIndex = position5, tokenIndex5
{
position112 := position
{
position113, tokenIndex113 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l114
}
if !_rules[ruleMONTHS]() {
goto l114
}
if !_rules[ruleAGO]() {
goto l114
}
{
add(ruleAction20, position)
}
goto l113
l114:
position, tokenIndex = position113, tokenIndex113
{
position117, tokenIndex117 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l118
}
if !_rules[ruleMONTHS]() {
goto l118
}
if !_rules[ruleFROM_NOW]() {
goto l118
}
goto l117
l118:
position, tokenIndex = position117, tokenIndex117
if !_rules[ruleIn]() {
goto l116
}
{
position119, tokenIndex119 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l119
}
goto l120
l119:
position, tokenIndex = position119, tokenIndex119
}
l120:
if !_rules[ruleMONTHS]() {
goto l116
}
{
position121, tokenIndex121 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l121
}
goto l122
l121:
position, tokenIndex = position121, tokenIndex121
}
l122:
}
l117:
{
add(ruleAction21, position)
}
goto l113
l116:
position, tokenIndex = position113, tokenIndex113
if !_rules[ruleLast]() {
goto l124
}
{
position125, tokenIndex125 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l125
}
goto l126
l125:
position, tokenIndex = position125, tokenIndex125
}
l126:
if !_rules[ruleMONTHS]() {
goto l124
}
{
add(ruleAction22, position)
}
goto l113
l124:
position, tokenIndex = position113, tokenIndex113
if !_rules[ruleNext]() {
goto l128
}
{
position129, tokenIndex129 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l129
}
goto l130
l129:
position, tokenIndex = position129, tokenIndex129
}
l130:
if !_rules[ruleMONTHS]() {
goto l128
}
{
add(ruleAction23, position)
}
goto l113
l128:
position, tokenIndex = position113, tokenIndex113
if !_rules[ruleLAST]() {
goto l132
}
if !_rules[ruleMonth]() {
goto l132
}
{
add(ruleAction24, position)
}
goto l113
l132:
position, tokenIndex = position113, tokenIndex113
if !_rules[ruleNEXT]() {
goto l134
}
if !_rules[ruleMonth]() {
goto l134
}
{
add(ruleAction25, position)
}
goto l113
l134:
position, tokenIndex = position113, tokenIndex113
if !_rules[ruleMonth]() {
goto l111
}
{
add(ruleAction26, position)
}
}
l113:
add(ruleRelativeMonth, position112)
}
goto l5
l111:
position, tokenIndex = position5, tokenIndex5
{
position138 := position
{
position139, tokenIndex139 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l140
}
if !_rules[ruleYEARS]() {
goto l140
}
if !_rules[ruleAGO]() {
goto l140
}
{
add(ruleAction27, position)
}
goto l139
l140:
position, tokenIndex = position139, tokenIndex139
{
position143, tokenIndex143 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l144
}
if !_rules[ruleYEARS]() {
goto l144
}
if !_rules[ruleFROM_NOW]() {
goto l144
}
goto l143
l144:
position, tokenIndex = position143, tokenIndex143
if !_rules[ruleIn]() {
goto l142
}
{
position145, tokenIndex145 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l145
}
goto l146
l145:
position, tokenIndex = position145, tokenIndex145
}
l146:
if !_rules[ruleYEARS]() {
goto l142
}
{
position147, tokenIndex147 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l147
}
goto l148
l147:
position, tokenIndex = position147, tokenIndex147
}
l148:
}
l143:
{
add(ruleAction28, position)
}
goto l139
l142:
position, tokenIndex = position139, tokenIndex139
if !_rules[ruleLast]() {
goto l150
}
{
position151, tokenIndex151 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l151
}
goto l152
l151:
position, tokenIndex = position151, tokenIndex151
}
l152:
if !_rules[ruleYEARS]() {
goto l150
}
{
add(ruleAction29, position)
}
goto l139
l150:
position, tokenIndex = position139, tokenIndex139
if !_rules[ruleNext]() {
goto l154
}
{
position155, tokenIndex155 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l155
}
goto l156
l155:
position, tokenIndex = position155, tokenIndex155
}
l156:
if !_rules[ruleYEARS]() {
goto l154
}
{
add(ruleAction30, position)
}
goto l139
l154:
position, tokenIndex = position139, tokenIndex139
if !_rules[ruleLAST]() {
goto l158
}
if !_rules[ruleYEARS]() {
goto l158
}
{
add(ruleAction31, position)
}
goto l139
l158:
position, tokenIndex = position139, tokenIndex139
if !_rules[ruleNEXT]() {
goto l137
}
if !_rules[ruleYEARS]() {
goto l137
}
{
add(ruleAction32, position)
}
}
l139:
add(ruleRelativeYear, position138)
}
goto l5
l137:
position, tokenIndex = position5, tokenIndex5
{
position162 := position
{
position163, tokenIndex163 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l164
}
{
position165 := position
{
switch buffer[position] {
case 't':
if buffer[position] != rune('t') {
goto l164
}
position++
if buffer[position] != rune('h') {
goto l164
}
position++
break
case 'r':
if buffer[position] != rune('r') {
goto l164
}
position++
if buffer[position] != rune('d') {
goto l164
}
position++
break
case 'n':
if buffer[position] != rune('n') {
goto l164
}
position++
if buffer[position] != rune('d') {
goto l164
}
position++
break
default:
if buffer[position] != rune('s') {
goto l164
}
position++
if buffer[position] != rune('t') {
goto l164
}
position++
break
}
}
if !_rules[rule_]() {
goto l164
}
add(ruleOrdinal, position165)
}
goto l163
l164:
position, tokenIndex = position163, tokenIndex163
if !_rules[ruleLast]() {
goto l161
}
{
position167, tokenIndex167 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l167
}
goto l168
l167:
position, tokenIndex = position167, tokenIndex167
}
l168:
if !_rules[ruleNumber]() {
goto l161
}
}
l163:
{
add(ruleAction39, position)
}
add(ruleDate, position162)
}
goto l5
l161:
position, tokenIndex = position5, tokenIndex5
{
position171 := position
{
position172, tokenIndex172 := position, tokenIndex
{
position174 := position
{
position175, tokenIndex175 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l176
}
{
add(ruleAction40, position)
}
{
position178, tokenIndex178 := position, tokenIndex
if !_rules[ruleMinutes]() {
goto l178
}
{
position180, tokenIndex180 := position, tokenIndex
if !_rules[ruleSeconds]() {
goto l180
}
goto l181
l180:
position, tokenIndex = position180, tokenIndex180
}
l181:
goto l179
l178:
position, tokenIndex = position178, tokenIndex178
}
l179:
{
position182 := position
if buffer[position] != rune('a') {
goto l176
}
position++
if buffer[position] != rune('m') {
goto l176
}
position++
if !_rules[rule_]() {
goto l176
}
add(ruleAM, position182)
}
goto l175
l176:
position, tokenIndex = position175, tokenIndex175
if !_rules[ruleNumber]() {
goto l173
}
{
add(ruleAction41, position)
}
{
position184, tokenIndex184 := position, tokenIndex
if !_rules[ruleMinutes]() {
goto l184
}
{
position186, tokenIndex186 := position, tokenIndex
if !_rules[ruleSeconds]() {
goto l186
}
goto l187
l186:
position, tokenIndex = position186, tokenIndex186
}
l187:
goto l185
l184:
position, tokenIndex = position184, tokenIndex184
}
l185:
{
position188 := position
if buffer[position] != rune('p') {
goto l173
}
position++
if buffer[position] != rune('m') {
goto l173
}
position++
if !_rules[rule_]() {
goto l173
}
add(rulePM, position188)
}
}
l175:
add(ruleClock12Hour, position174)
}
goto l172
l173:
position, tokenIndex = position172, tokenIndex172
{
position189 := position
if !_rules[ruleNumber]() {
goto l170
}
{
add(ruleAction42, position)
}
{
position191, tokenIndex191 := position, tokenIndex
if !_rules[ruleMinutes]() {
goto l191
}
{
position193, tokenIndex193 := position, tokenIndex
if !_rules[ruleSeconds]() {
goto l193
}
goto l194
l193:
position, tokenIndex = position193, tokenIndex193
}
l194:
goto l192
l191:
position, tokenIndex = position191, tokenIndex191
}
l192:
add(ruleClock24Hour, position189)
}
}
l172:
add(ruleTime, position171)
}
goto l5
l170:
position, tokenIndex = position5, tokenIndex5
{
position195 := position
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l0
}
position++
l196:
{
position197, tokenIndex197 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l197
}
position++
goto l196
l197:
position, tokenIndex = position197, tokenIndex197
}
if !_rules[rule_]() {
goto l0
}
add(ruleWord, position195)
}
}
l5:
add(ruleExpr, position4)
}
l2:
{
position3, tokenIndex3 := position, tokenIndex
{
position198 := position
{
position199, tokenIndex199 := position, tokenIndex
{
position201 := position
if buffer[position] != rune('n') {
goto l200
}
position++
if buffer[position] != rune('o') {
goto l200
}
position++
if buffer[position] != rune('w') {
goto l200
}
position++
if !_rules[rule_]() {
goto l200
}
add(ruleNOW, position201)
}
goto l199
l200:
position, tokenIndex = position199, tokenIndex199
{
position203 := position
{
position204, tokenIndex204 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l205
}
if !_rules[ruleMINUTES]() {
goto l205
}
if !_rules[ruleAGO]() {
goto l205
}
{
add(ruleAction0, position)
}
goto l204
l205:
position, tokenIndex = position204, tokenIndex204
{
position208, tokenIndex208 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l209
}
if !_rules[ruleMINUTES]() {
goto l209
}
if !_rules[ruleFROM_NOW]() {
goto l209
}
goto l208
l209:
position, tokenIndex = position208, tokenIndex208
if !_rules[ruleIn]() {
goto l207
}
{
position210, tokenIndex210 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l210
}
goto l211
l210:
position, tokenIndex = position210, tokenIndex210
}
l211:
if !_rules[ruleMINUTES]() {
goto l207
}
{
position212, tokenIndex212 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l212
}
goto l213
l212:
position, tokenIndex = position212, tokenIndex212
}
l213:
}
l208:
{
add(ruleAction1, position)
}
goto l204
l207:
position, tokenIndex = position204, tokenIndex204
if !_rules[ruleLast]() {
goto l215
}
{
position216, tokenIndex216 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l216
}
goto l217
l216:
position, tokenIndex = position216, tokenIndex216
}
l217:
if !_rules[ruleMINUTES]() {
goto l215
}
{
add(ruleAction2, position)
}
goto l204
l215:
position, tokenIndex = position204, tokenIndex204
if !_rules[ruleNext]() {
goto l219
}
{
position220, tokenIndex220 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l220
}
goto l221
l220:
position, tokenIndex = position220, tokenIndex220
}
l221:
if !_rules[ruleMINUTES]() {
goto l219
}
{
add(ruleAction3, position)
}
goto l204
l219:
position, tokenIndex = position204, tokenIndex204
if !_rules[ruleNumber]() {
goto l202
}
if !_rules[ruleMINUTES]() {
goto l202
}
{
add(ruleAction4, position)
}
}
l204:
add(ruleRelativeMinutes, position203)
}
goto l199
l202:
position, tokenIndex = position199, tokenIndex199
{
position225 := position
{
position226, tokenIndex226 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l227
}
if !_rules[ruleHOURS]() {
goto l227
}
if !_rules[ruleAGO]() {
goto l227
}
{
add(ruleAction5, position)
}
goto l226
l227:
position, tokenIndex = position226, tokenIndex226
{
position230, tokenIndex230 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l231
}
if !_rules[ruleHOURS]() {
goto l231
}
if !_rules[ruleFROM_NOW]() {
goto l231
}
goto l230
l231:
position, tokenIndex = position230, tokenIndex230
if !_rules[ruleIn]() {
goto l229
}
{
position232, tokenIndex232 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l232
}
goto l233
l232:
position, tokenIndex = position232, tokenIndex232
}
l233:
if !_rules[ruleHOURS]() {
goto l229
}
{
position234, tokenIndex234 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l234
}
goto l235
l234:
position, tokenIndex = position234, tokenIndex234
}
l235:
}
l230:
{
add(ruleAction6, position)
}
goto l226
l229:
position, tokenIndex = position226, tokenIndex226
if !_rules[ruleLast]() {
goto l237
}
{
position238, tokenIndex238 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l238
}
goto l239
l238:
position, tokenIndex = position238, tokenIndex238
}
l239:
if !_rules[ruleHOURS]() {
goto l237
}
{
add(ruleAction7, position)
}
goto l226
l237:
position, tokenIndex = position226, tokenIndex226
if !_rules[ruleNext]() {
goto l241
}
{
position242, tokenIndex242 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l242
}
goto l243
l242:
position, tokenIndex = position242, tokenIndex242
}
l243:
if !_rules[ruleHOURS]() {
goto l241
}
{
add(ruleAction8, position)
}
goto l226
l241:
position, tokenIndex = position226, tokenIndex226
if !_rules[ruleNumber]() {
goto l224
}
if !_rules[ruleHOURS]() {
goto l224
}
{
add(ruleAction9, position)
}
}
l226:
add(ruleRelativeHours, position225)
}
goto l199
l224:
position, tokenIndex = position199, tokenIndex199
{
position247 := position
{
position248, tokenIndex248 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l249
}
if !_rules[ruleDAYS]() {
goto l249
}
if !_rules[ruleAGO]() {
goto l249
}
{
add(ruleAction10, position)
}
goto l248
l249:
position, tokenIndex = position248, tokenIndex248
{
position252, tokenIndex252 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l253
}
if !_rules[ruleDAYS]() {
goto l253
}
if !_rules[ruleFROM_NOW]() {
goto l253
}
goto l252
l253:
position, tokenIndex = position252, tokenIndex252
if !_rules[ruleIn]() {
goto l251
}
{
position254, tokenIndex254 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l254
}
goto l255
l254:
position, tokenIndex = position254, tokenIndex254
}
l255:
if !_rules[ruleDAYS]() {
goto l251
}
{
position256, tokenIndex256 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l256
}
goto l257
l256:
position, tokenIndex = position256, tokenIndex256
}
l257:
}
l252:
{
add(ruleAction11, position)
}
goto l248
l251:
position, tokenIndex = position248, tokenIndex248
if !_rules[ruleLast]() {
goto l259
}
{
position260, tokenIndex260 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l260
}
goto l261
l260:
position, tokenIndex = position260, tokenIndex260
}
l261:
if !_rules[ruleDAYS]() {
goto l259
}
{
add(ruleAction12, position)
}
goto l248
l259:
position, tokenIndex = position248, tokenIndex248
if !_rules[ruleNext]() {
goto l263
}
{
position264, tokenIndex264 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l264
}
goto l265
l264:
position, tokenIndex = position264, tokenIndex264
}
l265:
if !_rules[ruleDAYS]() {
goto l263
}
{
add(ruleAction13, position)
}
goto l248
l263:
position, tokenIndex = position248, tokenIndex248
if !_rules[ruleNumber]() {
goto l246
}
if !_rules[ruleDAYS]() {
goto l246
}
{
add(ruleAction14, position)
}
}
l248:
add(ruleRelativeDays, position247)
}
goto l199
l246:
position, tokenIndex = position199, tokenIndex199
{
position269 := position
{
position270, tokenIndex270 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l271
}
if !_rules[ruleWEEKS]() {
goto l271
}
if !_rules[ruleAGO]() {
goto l271
}
{
add(ruleAction15, position)
}
goto l270
l271:
position, tokenIndex = position270, tokenIndex270
{
position274, tokenIndex274 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l275
}
if !_rules[ruleWEEKS]() {
goto l275
}
if !_rules[ruleFROM_NOW]() {
goto l275
}
goto l274
l275:
position, tokenIndex = position274, tokenIndex274
if !_rules[ruleIn]() {
goto l273
}
{
position276, tokenIndex276 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l276
}
goto l277
l276:
position, tokenIndex = position276, tokenIndex276
}
l277:
if !_rules[ruleWEEKS]() {
goto l273
}
{
position278, tokenIndex278 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l278
}
goto l279
l278:
position, tokenIndex = position278, tokenIndex278
}
l279:
}
l274:
{
add(ruleAction16, position)
}
goto l270
l273:
position, tokenIndex = position270, tokenIndex270
if !_rules[ruleLast]() {
goto l281
}
{
position282, tokenIndex282 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l282
}
goto l283
l282:
position, tokenIndex = position282, tokenIndex282
}
l283:
if !_rules[ruleWEEKS]() {
goto l281
}
{
add(ruleAction17, position)
}
goto l270
l281:
position, tokenIndex = position270, tokenIndex270
if !_rules[ruleNext]() {
goto l285
}
{
position286, tokenIndex286 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l286
}
goto l287
l286:
position, tokenIndex = position286, tokenIndex286
}
l287:
if !_rules[ruleWEEKS]() {
goto l285
}
{
add(ruleAction18, position)
}
goto l270
l285:
position, tokenIndex = position270, tokenIndex270
if !_rules[ruleNumber]() {
goto l268
}
if !_rules[ruleWEEKS]() {
goto l268
}
{
add(ruleAction19, position)
}
}
l270:
add(ruleRelativeWeeks, position269)
}
goto l199
l268:
position, tokenIndex = position199, tokenIndex199
{
position291 := position
{
position292, tokenIndex292 := position, tokenIndex
{
position294 := position
if buffer[position] != rune('t') {
goto l293
}
position++
if buffer[position] != rune('o') {
goto l293
}
position++
if buffer[position] != rune('d') {
goto l293
}
position++
if buffer[position] != rune('a') {
goto l293
}
position++
if buffer[position] != rune('y') {
goto l293
}
position++
if !_rules[rule_]() {
goto l293
}
add(ruleTODAY, position294)
}
{
add(ruleAction33, position)
}
goto l292
l293:
position, tokenIndex = position292, tokenIndex292
{
position297 := position
if buffer[position] != rune('t') {
goto l296
}
position++
if buffer[position] != rune('o') {
goto l296
}
position++
if buffer[position] != rune('m') {
goto l296
}
position++
if buffer[position] != rune('o') {
goto l296
}
position++
if buffer[position] != rune('r') {
goto l296
}
position++
if buffer[position] != rune('r') {
goto l296
}
position++
if buffer[position] != rune('o') {
goto l296
}
position++
if buffer[position] != rune('w') {
goto l296
}
position++
if !_rules[rule_]() {
goto l296
}
add(ruleTOMORROW, position297)
}
{
add(ruleAction35, position)
}
goto l292
l296:
position, tokenIndex = position292, tokenIndex292
{
switch buffer[position] {
case 'n':
if !_rules[ruleNEXT]() {
goto l290
}
if !_rules[ruleWeekday]() {
goto l290
}
{
add(ruleAction37, position)
}
break
case 'y':
{
position301 := position
if buffer[position] != rune('y') {
goto l290
}
position++
if buffer[position] != rune('e') {
goto l290
}
position++
if buffer[position] != rune('s') {
goto l290
}
position++
if buffer[position] != rune('t') {
goto l290
}
position++
if buffer[position] != rune('e') {
goto l290
}
position++
if buffer[position] != rune('r') {
goto l290
}
position++
if buffer[position] != rune('d') {
goto l290
}
position++
if buffer[position] != rune('a') {
goto l290
}
position++
if buffer[position] != rune('y') {
goto l290
}
position++
if !_rules[rule_]() {
goto l290
}
add(ruleYESTERDAY, position301)
}
{
add(ruleAction34, position)
}
break
case 'l', 'p':
if !_rules[ruleLAST]() {
goto l290
}
if !_rules[ruleWeekday]() {
goto l290
}
{
add(ruleAction36, position)
}
break
default:
if !_rules[ruleWeekday]() {
goto l290
}
{
add(ruleAction38, position)
}
break
}
}
}
l292:
add(ruleRelativeWeekdays, position291)
}
goto l199
l290:
position, tokenIndex = position199, tokenIndex199
{
position306 := position
{
position307, tokenIndex307 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l308
}
if !_rules[ruleMONTHS]() {
goto l308
}
if !_rules[ruleAGO]() {
goto l308
}
{
add(ruleAction20, position)
}
goto l307
l308:
position, tokenIndex = position307, tokenIndex307
{
position311, tokenIndex311 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l312
}
if !_rules[ruleMONTHS]() {
goto l312
}
if !_rules[ruleFROM_NOW]() {
goto l312
}
goto l311
l312:
position, tokenIndex = position311, tokenIndex311
if !_rules[ruleIn]() {
goto l310
}
{
position313, tokenIndex313 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l313
}
goto l314
l313:
position, tokenIndex = position313, tokenIndex313
}
l314:
if !_rules[ruleMONTHS]() {
goto l310
}
{
position315, tokenIndex315 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l315
}
goto l316
l315:
position, tokenIndex = position315, tokenIndex315
}
l316:
}
l311:
{
add(ruleAction21, position)
}
goto l307
l310:
position, tokenIndex = position307, tokenIndex307
if !_rules[ruleLast]() {
goto l318
}
{
position319, tokenIndex319 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l319
}
goto l320
l319:
position, tokenIndex = position319, tokenIndex319
}
l320:
if !_rules[ruleMONTHS]() {
goto l318
}
{
add(ruleAction22, position)
}
goto l307
l318:
position, tokenIndex = position307, tokenIndex307
if !_rules[ruleNext]() {
goto l322
}
{
position323, tokenIndex323 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l323
}
goto l324
l323:
position, tokenIndex = position323, tokenIndex323
}
l324:
if !_rules[ruleMONTHS]() {
goto l322
}
{
add(ruleAction23, position)
}
goto l307
l322:
position, tokenIndex = position307, tokenIndex307
if !_rules[ruleLAST]() {
goto l326
}
if !_rules[ruleMonth]() {
goto l326
}
{
add(ruleAction24, position)
}
goto l307
l326:
position, tokenIndex = position307, tokenIndex307
if !_rules[ruleNEXT]() {
goto l328
}
if !_rules[ruleMonth]() {
goto l328
}
{
add(ruleAction25, position)
}
goto l307
l328:
position, tokenIndex = position307, tokenIndex307
if !_rules[ruleMonth]() {
goto l305
}
{
add(ruleAction26, position)
}
}
l307:
add(ruleRelativeMonth, position306)
}
goto l199
l305:
position, tokenIndex = position199, tokenIndex199
{
position332 := position
{
position333, tokenIndex333 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l334
}
if !_rules[ruleYEARS]() {
goto l334
}
if !_rules[ruleAGO]() {
goto l334
}
{
add(ruleAction27, position)
}
goto l333
l334:
position, tokenIndex = position333, tokenIndex333
{
position337, tokenIndex337 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l338
}
if !_rules[ruleYEARS]() {
goto l338
}
if !_rules[ruleFROM_NOW]() {
goto l338
}
goto l337
l338:
position, tokenIndex = position337, tokenIndex337
if !_rules[ruleIn]() {
goto l336
}
{
position339, tokenIndex339 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l339
}
goto l340
l339:
position, tokenIndex = position339, tokenIndex339
}
l340:
if !_rules[ruleYEARS]() {
goto l336
}
{
position341, tokenIndex341 := position, tokenIndex
if !_rules[ruleFROM_NOW]() {
goto l341
}
goto l342
l341:
position, tokenIndex = position341, tokenIndex341
}
l342:
}
l337:
{
add(ruleAction28, position)
}
goto l333
l336:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleLast]() {
goto l344
}
{
position345, tokenIndex345 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l345
}
goto l346
l345:
position, tokenIndex = position345, tokenIndex345
}
l346:
if !_rules[ruleYEARS]() {
goto l344
}
{
add(ruleAction29, position)
}
goto l333
l344:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleNext]() {
goto l348
}
{
position349, tokenIndex349 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l349
}
goto l350
l349:
position, tokenIndex = position349, tokenIndex349
}
l350:
if !_rules[ruleYEARS]() {
goto l348
}
{
add(ruleAction30, position)
}
goto l333
l348:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleLAST]() {
goto l352
}
if !_rules[ruleYEARS]() {
goto l352
}
{
add(ruleAction31, position)
}
goto l333
l352:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleNEXT]() {
goto l331
}
if !_rules[ruleYEARS]() {
goto l331
}
{
add(ruleAction32, position)
}
}
l333:
add(ruleRelativeYear, position332)
}
goto l199
l331:
position, tokenIndex = position199, tokenIndex199
{
position356 := position
{
position357, tokenIndex357 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l358
}
{
position359 := position
{
switch buffer[position] {
case 't':
if buffer[position] != rune('t') {
goto l358
}
position++
if buffer[position] != rune('h') {
goto l358
}
position++
break
case 'r':
if buffer[position] != rune('r') {
goto l358
}
position++
if buffer[position] != rune('d') {
goto l358
}
position++
break
case 'n':
if buffer[position] != rune('n') {
goto l358
}
position++
if buffer[position] != rune('d') {
goto l358
}
position++
break
default:
if buffer[position] != rune('s') {
goto l358
}
position++
if buffer[position] != rune('t') {
goto l358
}
position++
break
}
}
if !_rules[rule_]() {
goto l358
}
add(ruleOrdinal, position359)
}
goto l357
l358:
position, tokenIndex = position357, tokenIndex357
if !_rules[ruleLast]() {
goto l355
}
{
position361, tokenIndex361 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l361
}
goto l362
l361:
position, tokenIndex = position361, tokenIndex361
}
l362:
if !_rules[ruleNumber]() {
goto l355
}
}
l357:
{
add(ruleAction39, position)
}
add(ruleDate, position356)
}
goto l199
l355:
position, tokenIndex = position199, tokenIndex199
{
position365 := position
{
position366, tokenIndex366 := position, tokenIndex
{
position368 := position
{
position369, tokenIndex369 := position, tokenIndex
if !_rules[ruleNumber]() {
goto l370
}
{
add(ruleAction40, position)
}
{
position372, tokenIndex372 := position, tokenIndex
if !_rules[ruleMinutes]() {
goto l372
}
{
position374, tokenIndex374 := position, tokenIndex
if !_rules[ruleSeconds]() {
goto l374
}
goto l375
l374:
position, tokenIndex = position374, tokenIndex374
}
l375:
goto l373
l372:
position, tokenIndex = position372, tokenIndex372
}
l373:
{
position376 := position
if buffer[position] != rune('a') {
goto l370
}
position++
if buffer[position] != rune('m') {
goto l370
}
position++
if !_rules[rule_]() {
goto l370
}
add(ruleAM, position376)
}
goto l369
l370:
position, tokenIndex = position369, tokenIndex369
if !_rules[ruleNumber]() {
goto l367
}
{
add(ruleAction41, position)
}
{
position378, tokenIndex378 := position, tokenIndex
if !_rules[ruleMinutes]() {
goto l378
}
{
position380, tokenIndex380 := position, tokenIndex
if !_rules[ruleSeconds]() {
goto l380
}
goto l381
l380:
position, tokenIndex = position380, tokenIndex380
}
l381:
goto l379
l378:
position, tokenIndex = position378, tokenIndex378
}
l379:
{
position382 := position
if buffer[position] != rune('p') {
goto l367
}
position++
if buffer[position] != rune('m') {
goto l367
}
position++
if !_rules[rule_]() {
goto l367
}
add(rulePM, position382)
}
}
l369:
add(ruleClock12Hour, position368)
}
goto l366
l367:
position, tokenIndex = position366, tokenIndex366
{
position383 := position
if !_rules[ruleNumber]() {
goto l364
}
{
add(ruleAction42, position)
}
{
position385, tokenIndex385 := position, tokenIndex
if !_rules[ruleMinutes]() {
goto l385
}
{
position387, tokenIndex387 := position, tokenIndex
if !_rules[ruleSeconds]() {
goto l387
}
goto l388
l387:
position, tokenIndex = position387, tokenIndex387
}
l388:
goto l386
l385:
position, tokenIndex = position385, tokenIndex385
}
l386:
add(ruleClock24Hour, position383)
}
}
l366:
add(ruleTime, position365)
}
goto l199
l364:
position, tokenIndex = position199, tokenIndex199
{
position389 := position
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l3
}
position++
l390:
{
position391, tokenIndex391 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l391
}
position++
goto l390
l391:
position, tokenIndex = position391, tokenIndex391
}
if !_rules[rule_]() {
goto l3
}
add(ruleWord, position389)
}
}
l199:
add(ruleExpr, position198)
}
goto l2
l3:
position, tokenIndex = position3, tokenIndex3
}
{
position392 := position
{
position393, tokenIndex393 := position, tokenIndex
if !matchDot() {
goto l393
}
goto l0
l393:
position, tokenIndex = position393, tokenIndex393
}
add(ruleEOF, position392)
}
add(ruleQuery, position1)
}
return true
l0:
position, tokenIndex = position0, tokenIndex0
return false
},
/* 1 Expr <- <(NOW / RelativeMinutes / RelativeHours / RelativeDays / RelativeWeeks / RelativeWeekdays / RelativeMonth / RelativeYear / Date / Time / Word)> */
nil,
/* 2 RelativeMinutes <- <((Number MINUTES AGO Action0) / (((Number MINUTES FROM_NOW) / (In Number? MINUTES FROM_NOW?)) Action1) / (Last Number? MINUTES Action2) / (Next Number? MINUTES Action3) / (Number MINUTES Action4))> */
nil,
/* 3 RelativeHours <- <((Number HOURS AGO Action5) / (((Number HOURS FROM_NOW) / (In Number? HOURS FROM_NOW?)) Action6) / (Last Number? HOURS Action7) / (Next Number? HOURS Action8) / (Number HOURS Action9))> */
nil,
/* 4 RelativeDays <- <((Number DAYS AGO Action10) / (((Number DAYS FROM_NOW) / (In Number? DAYS FROM_NOW?)) Action11) / (Last Number? DAYS Action12) / (Next Number? DAYS Action13) / (Number DAYS Action14))> */
nil,
/* 5 RelativeWeeks <- <((Number WEEKS AGO Action15) / (((Number WEEKS FROM_NOW) / (In Number? WEEKS FROM_NOW?)) Action16) / (Last Number? WEEKS Action17) / (Next Number? WEEKS Action18) / (Number WEEKS Action19))> */
nil,
/* 6 RelativeMonth <- <((Number MONTHS AGO Action20) / (((Number MONTHS FROM_NOW) / (In Number? MONTHS FROM_NOW?)) Action21) / (Last Number? MONTHS Action22) / (Next Number? MONTHS Action23) / (LAST Month Action24) / (NEXT Month Action25) / (Month Action26))> */
nil,
/* 7 RelativeYear <- <((Number YEARS AGO Action27) / (((Number YEARS FROM_NOW) / (In Number? YEARS FROM_NOW?)) Action28) / (Last Number? YEARS Action29) / (Next Number? YEARS Action30) / (LAST YEARS Action31) / (NEXT YEARS Action32))> */
nil,
/* 8 RelativeWeekdays <- <((TODAY Action33) / (TOMORROW Action35) / ((&('n') (NEXT Weekday Action37)) | (&('y') (YESTERDAY Action34)) | (&('l' | 'p') (LAST Weekday Action36)) | (&('f' | 'm' | 's' | 't' | 'w') (Weekday Action38))))> */
nil,
/* 9 Date <- <(((Number Ordinal) / (Last Number? Number)) Action39)> */
nil,
/* 10 Time <- <(Clock12Hour / Clock24Hour)> */
nil,
/* 11 Clock12Hour <- <((Number Action40 (Minutes Seconds?)? AM) / (Number Action41 (Minutes Seconds?)? PM))> */
nil,
/* 12 Clock24Hour <- <(Number Action42 (Minutes Seconds?)?)> */
nil,
/* 13 Minutes <- <(':' Number Action43)> */
func() bool {
position406, tokenIndex406 := position, tokenIndex
{
position407 := position
if buffer[position] != rune(':') {
goto l406
}
position++
if !_rules[ruleNumber]() {
goto l406
}
{
add(ruleAction43, position)
}
add(ruleMinutes, position407)
}
return true
l406:
position, tokenIndex = position406, tokenIndex406
return false
},
/* 14 Seconds <- <(':' Number Action44)> */
func() bool {
position409, tokenIndex409 := position, tokenIndex
{
position410 := position
if buffer[position] != rune(':') {
goto l409
}
position++
if !_rules[ruleNumber]() {
goto l409
}
{
add(ruleAction44, position)
}
add(ruleSeconds, position410)
}
return true
l409:
position, tokenIndex = position409, tokenIndex409
return false
},
/* 15 Number <- <(('t' 'w' 'o' _ Action47) / ('t' 'h' 'r' 'e' 'e' _ Action48) / ('f' 'o' 'u' 'r' _ Action49) / ('s' 'i' 'x' _ Action51) / ((&('t') ('t' 'e' 'n' _ Action55)) | (&('n') ('n' 'i' 'n' 'e' _ Action54)) | (&('e') ('e' 'i' 'g' 'h' 't' _ Action53)) | (&('s') ('s' 'e' 'v' 'e' 'n' _ Action52)) | (&('f') ('f' 'i' 'v' 'e' _ Action50)) | (&('o') ('o' 'n' 'e' _ Action46)) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') (<[0-9]+> _ Action45))))> */
func() bool {
position412, tokenIndex412 := position, tokenIndex
{
position413 := position
{
position414, tokenIndex414 := position, tokenIndex
if buffer[position] != rune('t') {
goto l415
}
position++
if buffer[position] != rune('w') {
goto l415
}
position++
if buffer[position] != rune('o') {
goto l415
}
position++
if !_rules[rule_]() {
goto l415
}
{
add(ruleAction47, position)
}
goto l414
l415:
position, tokenIndex = position414, tokenIndex414
if buffer[position] != rune('t') {
goto l417
}
position++
if buffer[position] != rune('h') {
goto l417
}
position++
if buffer[position] != rune('r') {
goto l417
}
position++
if buffer[position] != rune('e') {
goto l417
}
position++
if buffer[position] != rune('e') {
goto l417
}
position++
if !_rules[rule_]() {
goto l417
}
{
add(ruleAction48, position)
}
goto l414
l417:
position, tokenIndex = position414, tokenIndex414
if buffer[position] != rune('f') {
goto l419
}
position++
if buffer[position] != rune('o') {
goto l419
}
position++
if buffer[position] != rune('u') {
goto l419
}
position++
if buffer[position] != rune('r') {
goto l419
}
position++
if !_rules[rule_]() {
goto l419
}
{
add(ruleAction49, position)
}
goto l414
l419:
position, tokenIndex = position414, tokenIndex414
if buffer[position] != rune('s') {
goto l421
}
position++
if buffer[position] != rune('i') {
goto l421
}
position++
if buffer[position] != rune('x') {
goto l421
}
position++
if !_rules[rule_]() {
goto l421
}
{
add(ruleAction51, position)
}
goto l414
l421:
position, tokenIndex = position414, tokenIndex414
{
switch buffer[position] {
case 't':
if buffer[position] != rune('t') {
goto l412
}
position++
if buffer[position] != rune('e') {
goto l412
}
position++
if buffer[position] != rune('n') {
goto l412
}
position++
if !_rules[rule_]() {
goto l412
}
{
add(ruleAction55, position)
}
break
case 'n':
if buffer[position] != rune('n') {
goto l412
}
position++
if buffer[position] != rune('i') {
goto l412
}
position++
if buffer[position] != rune('n') {
goto l412
}
position++
if buffer[position] != rune('e') {
goto l412
}
position++
if !_rules[rule_]() {
goto l412
}
{
add(ruleAction54, position)
}
break
case 'e':
if buffer[position] != rune('e') {
goto l412
}
position++
if buffer[position] != rune('i') {
goto l412
}
position++
if buffer[position] != rune('g') {
goto l412
}
position++
if buffer[position] != rune('h') {
goto l412
}
position++
if buffer[position] != rune('t') {
goto l412
}
position++
if !_rules[rule_]() {
goto l412
}
{
add(ruleAction53, position)
}
break
case 's':
if buffer[position] != rune('s') {
goto l412
}
position++
if buffer[position] != rune('e') {
goto l412
}
position++
if buffer[position] != rune('v') {
goto l412
}
position++
if buffer[position] != rune('e') {
goto l412
}
position++
if buffer[position] != rune('n') {
goto l412
}
position++
if !_rules[rule_]() {
goto l412
}
{
add(ruleAction52, position)
}
break
case 'f':
if buffer[position] != rune('f') {
goto l412
}
position++
if buffer[position] != rune('i') {
goto l412
}
position++
if buffer[position] != rune('v') {
goto l412
}
position++
if buffer[position] != rune('e') {
goto l412
}
position++
if !_rules[rule_]() {
goto l412
}
{
add(ruleAction50, position)
}
break
case 'o':
if buffer[position] != rune('o') {
goto l412
}
position++
if buffer[position] != rune('n') {
goto l412
}
position++
if buffer[position] != rune('e') {
goto l412
}
position++
if !_rules[rule_]() {
goto l412
}
{
add(ruleAction46, position)
}
break
default:
{
position430 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l412
}
position++
l431:
{
position432, tokenIndex432 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l432
}
position++
goto l431
l432:
position, tokenIndex = position432, tokenIndex432
}
add(rulePegText, position430)
}
if !_rules[rule_]() {
goto l412
}
{
add(ruleAction45, position)
}
break
}
}
}
l414:
add(ruleNumber, position413)
}
return true
l412:
position, tokenIndex = position412, tokenIndex412
return false
},
/* 16 Weekday <- <(('s' 'u' 'n' 'd' 'a' 'y' _ Action56) / ('t' 'u' 'e' 's' 'd' 'a' 'y' _ Action58) / ((&('s') ('s' 'a' 't' 'u' 'r' 'd' 'a' 'y' _ Action62)) | (&('f') ('f' 'r' 'i' 'd' 'a' 'y' _ Action61)) | (&('t') ('t' 'h' 'u' 'r' 's' 'd' 'a' 'y' _ Action60)) | (&('w') ('w' 'e' 'd' 'n' 'e' 's' 'd' 'a' 'y' _ Action59)) | (&('m') ('m' 'o' 'n' 'd' 'a' 'y' _ Action57))))> */
func() bool {
position434, tokenIndex434 := position, tokenIndex
{
position435 := position
{
position436, tokenIndex436 := position, tokenIndex
if buffer[position] != rune('s') {
goto l437
}
position++
if buffer[position] != rune('u') {
goto l437
}
position++
if buffer[position] != rune('n') {
goto l437
}
position++
if buffer[position] != rune('d') {
goto l437
}
position++
if buffer[position] != rune('a') {
goto l437
}
position++
if buffer[position] != rune('y') {
goto l437
}
position++
if !_rules[rule_]() {
goto l437
}
{
add(ruleAction56, position)
}
goto l436
l437:
position, tokenIndex = position436, tokenIndex436
if buffer[position] != rune('t') {
goto l439
}
position++
if buffer[position] != rune('u') {
goto l439
}
position++
if buffer[position] != rune('e') {
goto l439
}
position++
if buffer[position] != rune('s') {
goto l439
}
position++
if buffer[position] != rune('d') {
goto l439
}
position++
if buffer[position] != rune('a') {
goto l439
}
position++
if buffer[position] != rune('y') {
goto l439
}
position++
if !_rules[rule_]() {
goto l439
}
{
add(ruleAction58, position)
}
goto l436
l439:
position, tokenIndex = position436, tokenIndex436
{
switch buffer[position] {
case 's':
if buffer[position] != rune('s') {
goto l434
}
position++
if buffer[position] != rune('a') {
goto l434
}
position++
if buffer[position] != rune('t') {
goto l434
}
position++
if buffer[position] != rune('u') {
goto l434
}
position++
if buffer[position] != rune('r') {
goto l434
}
position++
if buffer[position] != rune('d') {
goto l434
}
position++
if buffer[position] != rune('a') {
goto l434
}
position++
if buffer[position] != rune('y') {
goto l434
}
position++
if !_rules[rule_]() {
goto l434
}
{
add(ruleAction62, position)
}
break
case 'f':
if buffer[position] != rune('f') {
goto l434
}
position++
if buffer[position] != rune('r') {
goto l434
}
position++
if buffer[position] != rune('i') {
goto l434
}
position++
if buffer[position] != rune('d') {
goto l434
}
position++
if buffer[position] != rune('a') {
goto l434
}
position++
if buffer[position] != rune('y') {
goto l434
}
position++
if !_rules[rule_]() {
goto l434
}
{
add(ruleAction61, position)
}
break
case 't':
if buffer[position] != rune('t') {
goto l434
}
position++
if buffer[position] != rune('h') {
goto l434
}
position++
if buffer[position] != rune('u') {
goto l434
}
position++
if buffer[position] != rune('r') {
goto l434
}
position++
if buffer[position] != rune('s') {
goto l434
}
position++
if buffer[position] != rune('d') {
goto l434
}
position++
if buffer[position] != rune('a') {
goto l434
}
position++
if buffer[position] != rune('y') {
goto l434
}
position++
if !_rules[rule_]() {
goto l434
}
{
add(ruleAction60, position)
}
break
case 'w':
if buffer[position] != rune('w') {
goto l434
}
position++
if buffer[position] != rune('e') {
goto l434
}
position++
if buffer[position] != rune('d') {
goto l434
}
position++
if buffer[position] != rune('n') {
goto l434
}
position++
if buffer[position] != rune('e') {
goto l434
}
position++
if buffer[position] != rune('s') {
goto l434
}
position++
if buffer[position] != rune('d') {
goto l434
}
position++
if buffer[position] != rune('a') {
goto l434
}
position++
if buffer[position] != rune('y') {
goto l434
}
position++
if !_rules[rule_]() {
goto l434
}
{
add(ruleAction59, position)
}
break
default:
if buffer[position] != rune('m') {
goto l434
}
position++
if buffer[position] != rune('o') {
goto l434
}
position++
if buffer[position] != rune('n') {
goto l434
}
position++
if buffer[position] != rune('d') {
goto l434
}
position++
if buffer[position] != rune('a') {
goto l434
}
position++
if buffer[position] != rune('y') {
goto l434
}
position++
if !_rules[rule_]() {
goto l434
}
{
add(ruleAction57, position)
}
break
}
}
}
l436:
add(ruleWeekday, position435)
}
return true
l434:
position, tokenIndex = position434, tokenIndex434
return false
},
/* 17 Month <- <(('j' 'a' 'n' 'u' 'a' 'r' 'y' _ Action63) / ('m' 'a' 'r' 'c' 'h' _ Action65) / ('a' 'p' 'r' 'i' 'l' _ Action66) / ('j' 'u' 'n' 'e' _ Action68) / ((&('d') ('d' 'e' 'c' 'e' 'm' 'b' 'e' 'r' _ Action74)) | (&('n') ('n' 'o' 'v' 'e' 'm' 'b' 'e' 'r' _ Action73)) | (&('o') ('o' 'c' 't' 'o' 'b' 'e' 'r' _ Action72)) | (&('s') ('s' 'e' 'p' 't' 'e' 'm' 'b' 'e' 'r' _ Action71)) | (&('a') ('a' 'u' 'g' 'u' 's' 't' _ Action70)) | (&('j') ('j' 'u' 'l' 'y' _ Action69)) | (&('m') ('m' 'a' 'y' _ Action67)) | (&('f') ('f' 'e' 'b' 'r' 'u' 'a' 'r' 'y' _ Action64))))> */
func() bool {
position447, tokenIndex447 := position, tokenIndex
{
position448 := position
{
position449, tokenIndex449 := position, tokenIndex
if buffer[position] != rune('j') {
goto l450
}
position++
if buffer[position] != rune('a') {
goto l450
}
position++
if buffer[position] != rune('n') {
goto l450
}
position++
if buffer[position] != rune('u') {
goto l450
}
position++
if buffer[position] != rune('a') {
goto l450
}
position++
if buffer[position] != rune('r') {
goto l450
}
position++
if buffer[position] != rune('y') {
goto l450
}
position++
if !_rules[rule_]() {
goto l450
}
{
add(ruleAction63, position)
}
goto l449
l450:
position, tokenIndex = position449, tokenIndex449
if buffer[position] != rune('m') {
goto l452
}
position++
if buffer[position] != rune('a') {
goto l452
}
position++
if buffer[position] != rune('r') {
goto l452
}
position++
if buffer[position] != rune('c') {
goto l452
}
position++
if buffer[position] != rune('h') {
goto l452
}
position++
if !_rules[rule_]() {
goto l452
}
{
add(ruleAction65, position)
}
goto l449
l452:
position, tokenIndex = position449, tokenIndex449
if buffer[position] != rune('a') {
goto l454
}
position++
if buffer[position] != rune('p') {
goto l454
}
position++
if buffer[position] != rune('r') {
goto l454
}
position++
if buffer[position] != rune('i') {
goto l454
}
position++
if buffer[position] != rune('l') {
goto l454
}
position++
if !_rules[rule_]() {
goto l454
}
{
add(ruleAction66, position)
}
goto l449
l454:
position, tokenIndex = position449, tokenIndex449
if buffer[position] != rune('j') {
goto l456
}
position++
if buffer[position] != rune('u') {
goto l456
}
position++
if buffer[position] != rune('n') {
goto l456
}
position++
if buffer[position] != rune('e') {
goto l456
}
position++
if !_rules[rule_]() {
goto l456
}
{
add(ruleAction68, position)
}
goto l449
l456:
position, tokenIndex = position449, tokenIndex449
{
switch buffer[position] {
case 'd':
if buffer[position] != rune('d') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('c') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('m') {
goto l447
}
position++
if buffer[position] != rune('b') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('r') {
goto l447
}
position++
if !_rules[rule_]() {
goto l447
}
{
add(ruleAction74, position)
}
break
case 'n':
if buffer[position] != rune('n') {
goto l447
}
position++
if buffer[position] != rune('o') {
goto l447
}
position++
if buffer[position] != rune('v') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('m') {
goto l447
}
position++
if buffer[position] != rune('b') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('r') {
goto l447
}
position++
if !_rules[rule_]() {
goto l447
}
{
add(ruleAction73, position)
}
break
case 'o':
if buffer[position] != rune('o') {
goto l447
}
position++
if buffer[position] != rune('c') {
goto l447
}
position++
if buffer[position] != rune('t') {
goto l447
}
position++
if buffer[position] != rune('o') {
goto l447
}
position++
if buffer[position] != rune('b') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('r') {
goto l447
}
position++
if !_rules[rule_]() {
goto l447
}
{
add(ruleAction72, position)
}
break
case 's':
if buffer[position] != rune('s') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('p') {
goto l447
}
position++
if buffer[position] != rune('t') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('m') {
goto l447
}
position++
if buffer[position] != rune('b') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('r') {
goto l447
}
position++
if !_rules[rule_]() {
goto l447
}
{
add(ruleAction71, position)
}
break
case 'a':
if buffer[position] != rune('a') {
goto l447
}
position++
if buffer[position] != rune('u') {
goto l447
}
position++
if buffer[position] != rune('g') {
goto l447
}
position++
if buffer[position] != rune('u') {
goto l447
}
position++
if buffer[position] != rune('s') {
goto l447
}
position++
if buffer[position] != rune('t') {
goto l447
}
position++
if !_rules[rule_]() {
goto l447
}
{
add(ruleAction70, position)
}
break
case 'j':
if buffer[position] != rune('j') {
goto l447
}
position++
if buffer[position] != rune('u') {
goto l447
}
position++
if buffer[position] != rune('l') {
goto l447
}
position++
if buffer[position] != rune('y') {
goto l447
}
position++
if !_rules[rule_]() {
goto l447
}
{
add(ruleAction69, position)
}
break
case 'm':
if buffer[position] != rune('m') {
goto l447
}
position++
if buffer[position] != rune('a') {
goto l447
}
position++
if buffer[position] != rune('y') {
goto l447
}
position++
if !_rules[rule_]() {
goto l447
}
{
add(ruleAction67, position)
}
break
default:
if buffer[position] != rune('f') {
goto l447
}
position++
if buffer[position] != rune('e') {
goto l447
}
position++
if buffer[position] != rune('b') {
goto l447
}
position++
if buffer[position] != rune('r') {
goto l447
}
position++
if buffer[position] != rune('u') {
goto l447
}
position++
if buffer[position] != rune('a') {
goto l447
}
position++
if buffer[position] != rune('r') {
goto l447
}
position++
if buffer[position] != rune('y') {
goto l447
}
position++
if !_rules[rule_]() {
goto l447
}
{
add(ruleAction64, position)
}
break
}
}
}
l449:
add(ruleMonth, position448)
}
return true
l447:
position, tokenIndex = position447, tokenIndex447
return false
},
/* 18 In <- <(IN Action75)> */
func() bool {
position467, tokenIndex467 := position, tokenIndex
{
position468 := position
{
position469 := position
{
position470, tokenIndex470 := position, tokenIndex
if buffer[position] != rune('i') {
goto l471
}
position++
if buffer[position] != rune('n') {
goto l471
}
position++
if buffer[position] != rune(' ') {
goto l471
}
position++
if buffer[position] != rune('a') {
goto l471
}
position++
if buffer[position] != rune('n') {
goto l471
}
position++
goto l470
l471:
position, tokenIndex = position470, tokenIndex470
if buffer[position] != rune('i') {
goto l472
}
position++
if buffer[position] != rune('n') {
goto l472
}
position++
if buffer[position] != rune(' ') {
goto l472
}
position++
if buffer[position] != rune('a') {
goto l472
}
position++
goto l470
l472:
position, tokenIndex = position470, tokenIndex470
if buffer[position] != rune('i') {
goto l467
}
position++
if buffer[position] != rune('n') {
goto l467
}
position++
}
l470:
if !_rules[rule_]() {
goto l467
}
add(ruleIN, position469)
}
{
add(ruleAction75, position)
}
add(ruleIn, position468)
}
return true
l467:
position, tokenIndex = position467, tokenIndex467
return false
},
/* 19 Last <- <(LAST Action76)> */
func() bool {
position474, tokenIndex474 := position, tokenIndex
{
position475 := position
if !_rules[ruleLAST]() {
goto l474
}
{
add(ruleAction76, position)
}
add(ruleLast, position475)
}
return true
l474:
position, tokenIndex = position474, tokenIndex474
return false
},
/* 20 Next <- <(NEXT Action77)> */
func() bool {
position477, tokenIndex477 := position, tokenIndex
{
position478 := position
if !_rules[ruleNEXT]() {
goto l477
}
{
add(ruleAction77, position)
}
add(ruleNext, position478)
}
return true
l477:
position, tokenIndex = position477, tokenIndex477
return false
},
/* 21 Ordinal <- <(((&('t') ('t' 'h')) | (&('r') ('r' 'd')) | (&('n') ('n' 'd')) | (&('s') ('s' 't'))) _)> */
nil,
/* 22 Word <- <([a-z]+ _)> */
nil,
/* 23 YEARS <- <('y' 'e' 'a' 'r' 's'? _)> */
func() bool {
position482, tokenIndex482 := position, tokenIndex
{
position483 := position
if buffer[position] != rune('y') {
goto l482
}
position++
if buffer[position] != rune('e') {
goto l482
}
position++
if buffer[position] != rune('a') {
goto l482
}
position++
if buffer[position] != rune('r') {
goto l482
}
position++
{
position484, tokenIndex484 := position, tokenIndex
if buffer[position] != rune('s') {
goto l484
}
position++
goto l485
l484:
position, tokenIndex = position484, tokenIndex484
}
l485:
if !_rules[rule_]() {
goto l482
}
add(ruleYEARS, position483)
}
return true
l482:
position, tokenIndex = position482, tokenIndex482
return false
},
/* 24 MONTHS <- <('m' 'o' 'n' 't' 'h' 's'? _)> */
func() bool {
position486, tokenIndex486 := position, tokenIndex
{
position487 := position
if buffer[position] != rune('m') {
goto l486
}
position++
if buffer[position] != rune('o') {
goto l486
}
position++
if buffer[position] != rune('n') {
goto l486
}
position++
if buffer[position] != rune('t') {
goto l486
}
position++
if buffer[position] != rune('h') {
goto l486
}
position++
{
position488, tokenIndex488 := position, tokenIndex
if buffer[position] != rune('s') {
goto l488
}
position++
goto l489
l488:
position, tokenIndex = position488, tokenIndex488
}
l489:
if !_rules[rule_]() {
goto l486
}
add(ruleMONTHS, position487)
}
return true
l486:
position, tokenIndex = position486, tokenIndex486
return false
},
/* 25 WEEKS <- <('w' 'e' 'e' 'k' 's'? _)> */
func() bool {
position490, tokenIndex490 := position, tokenIndex
{
position491 := position
if buffer[position] != rune('w') {
goto l490
}
position++
if buffer[position] != rune('e') {
goto l490
}
position++
if buffer[position] != rune('e') {
goto l490
}
position++
if buffer[position] != rune('k') {
goto l490
}
position++
{
position492, tokenIndex492 := position, tokenIndex
if buffer[position] != rune('s') {
goto l492
}
position++
goto l493
l492:
position, tokenIndex = position492, tokenIndex492
}
l493:
if !_rules[rule_]() {
goto l490
}
add(ruleWEEKS, position491)
}
return true
l490:
position, tokenIndex = position490, tokenIndex490
return false
},
/* 26 DAYS <- <('d' 'a' 'y' 's'? _)> */
func() bool {
position494, tokenIndex494 := position, tokenIndex
{
position495 := position
if buffer[position] != rune('d') {
goto l494
}
position++
if buffer[position] != rune('a') {
goto l494
}
position++
if buffer[position] != rune('y') {
goto l494
}
position++
{
position496, tokenIndex496 := position, tokenIndex
if buffer[position] != rune('s') {
goto l496
}
position++
goto l497
l496:
position, tokenIndex = position496, tokenIndex496
}
l497:
if !_rules[rule_]() {
goto l494
}
add(ruleDAYS, position495)
}
return true
l494:
position, tokenIndex = position494, tokenIndex494
return false
},
/* 27 HOURS <- <('h' 'o' 'u' 'r' 's'? _)> */
func() bool {
position498, tokenIndex498 := position, tokenIndex
{
position499 := position
if buffer[position] != rune('h') {
goto l498
}
position++
if buffer[position] != rune('o') {
goto l498
}
position++
if buffer[position] != rune('u') {
goto l498
}
position++
if buffer[position] != rune('r') {
goto l498
}
position++
{
position500, tokenIndex500 := position, tokenIndex
if buffer[position] != rune('s') {
goto l500
}
position++
goto l501
l500:
position, tokenIndex = position500, tokenIndex500
}
l501:
if !_rules[rule_]() {
goto l498
}
add(ruleHOURS, position499)
}
return true
l498:
position, tokenIndex = position498, tokenIndex498
return false
},
/* 28 MINUTES <- <('m' 'i' 'n' 'u' 't' 'e' 's'? _)> */
func() bool {
position502, tokenIndex502 := position, tokenIndex
{
position503 := position
if buffer[position] != rune('m') {
goto l502
}
position++
if buffer[position] != rune('i') {
goto l502
}
position++
if buffer[position] != rune('n') {
goto l502
}
position++
if buffer[position] != rune('u') {
goto l502
}
position++
if buffer[position] != rune('t') {
goto l502
}
position++
if buffer[position] != rune('e') {
goto l502
}
position++
{
position504, tokenIndex504 := position, tokenIndex
if buffer[position] != rune('s') {
goto l504
}
position++
goto l505
l504:
position, tokenIndex = position504, tokenIndex504
}
l505:
if !_rules[rule_]() {
goto l502
}
add(ruleMINUTES, position503)
}
return true
l502:
position, tokenIndex = position502, tokenIndex502
return false
},
/* 29 YESTERDAY <- <('y' 'e' 's' 't' 'e' 'r' 'd' 'a' 'y' _)> */
nil,
/* 30 TOMORROW <- <('t' 'o' 'm' 'o' 'r' 'r' 'o' 'w' _)> */
nil,
/* 31 TODAY <- <('t' 'o' 'd' 'a' 'y' _)> */
nil,
/* 32 AGO <- <('a' 'g' 'o' _)> */
func() bool {
position509, tokenIndex509 := position, tokenIndex
{
position510 := position
if buffer[position] != rune('a') {
goto l509
}
position++
if buffer[position] != rune('g') {
goto l509
}
position++
if buffer[position] != rune('o') {
goto l509
}
position++
if !_rules[rule_]() {
goto l509
}
add(ruleAGO, position510)
}
return true
l509:
position, tokenIndex = position509, tokenIndex509
return false
},
/* 33 FROM_NOW <- <('f' 'r' 'o' 'm' ' ' 'n' 'o' 'w' _)> */
func() bool {
position511, tokenIndex511 := position, tokenIndex
{
position512 := position
if buffer[position] != rune('f') {
goto l511
}
position++
if buffer[position] != rune('r') {
goto l511
}
position++
if buffer[position] != rune('o') {
goto l511
}
position++
if buffer[position] != rune('m') {
goto l511
}
position++
if buffer[position] != rune(' ') {
goto l511
}
position++
if buffer[position] != rune('n') {
goto l511
}
position++
if buffer[position] != rune('o') {
goto l511
}
position++
if buffer[position] != rune('w') {
goto l511
}
position++
if !_rules[rule_]() {
goto l511
}
add(ruleFROM_NOW, position512)
}
return true
l511:
position, tokenIndex = position511, tokenIndex511
return false
},
/* 34 NOW <- <('n' 'o' 'w' _)> */
nil,
/* 35 AM <- <('a' 'm' _)> */
nil,
/* 36 PM <- <('p' 'm' _)> */
nil,
/* 37 NEXT <- <('n' 'e' 'x' 't' _)> */
func() bool {
position516, tokenIndex516 := position, tokenIndex
{
position517 := position
if buffer[position] != rune('n') {
goto l516
}
position++
if buffer[position] != rune('e') {
goto l516
}
position++
if buffer[position] != rune('x') {
goto l516
}
position++
if buffer[position] != rune('t') {
goto l516
}
position++
if !_rules[rule_]() {
goto l516
}
add(ruleNEXT, position517)
}
return true
l516:
position, tokenIndex = position516, tokenIndex516
return false
},
/* 38 IN <- <((('i' 'n' ' ' 'a' 'n') / ('i' 'n' ' ' 'a') / ('i' 'n')) _)> */
nil,
/* 39 LAST <- <((('l' 'a' 's' 't') / ('p' 'a' 's' 't') / ('p' 'r' 'e' 'v' 'i' 'o' 'u' 's')) _)> */
func() bool {
position519, tokenIndex519 := position, tokenIndex
{
position520 := position
{
position521, tokenIndex521 := position, tokenIndex
if buffer[position] != rune('l') {
goto l522
}
position++
if buffer[position] != rune('a') {
goto l522
}
position++
if buffer[position] != rune('s') {
goto l522
}
position++
if buffer[position] != rune('t') {
goto l522
}
position++
goto l521
l522:
position, tokenIndex = position521, tokenIndex521
if buffer[position] != rune('p') {
goto l523
}
position++
if buffer[position] != rune('a') {
goto l523
}
position++
if buffer[position] != rune('s') {
goto l523
}
position++
if buffer[position] != rune('t') {
goto l523
}
position++
goto l521
l523:
position, tokenIndex = position521, tokenIndex521
if buffer[position] != rune('p') {
goto l519
}
position++
if buffer[position] != rune('r') {
goto l519
}
position++
if buffer[position] != rune('e') {
goto l519
}
position++
if buffer[position] != rune('v') {
goto l519
}
position++
if buffer[position] != rune('i') {
goto l519
}
position++
if buffer[position] != rune('o') {
goto l519
}
position++
if buffer[position] != rune('u') {
goto l519
}
position++
if buffer[position] != rune('s') {
goto l519
}
position++
}
l521:
if !_rules[rule_]() {
goto l519
}
add(ruleLAST, position520)
}
return true
l519:
position, tokenIndex = position519, tokenIndex519
return false
},
/* 40 _ <- <Whitespace*> */
func() bool {
{
position525 := position
l526:
{
position527, tokenIndex527 := position, tokenIndex
{
position528 := position
{
switch buffer[position] {
case '\t':
if buffer[position] != rune('\t') {
goto l527
}
position++
break
case ' ':
if buffer[position] != rune(' ') {
goto l527
}
position++
break
default:
{
position530 := position
{
position531, tokenIndex531 := position, tokenIndex
if buffer[position] != rune('\r') {
goto l532
}
position++
if buffer[position] != rune('\n') {
goto l532
}
position++
goto l531
l532:
position, tokenIndex = position531, tokenIndex531
if buffer[position] != rune('\n') {
goto l533
}
position++
goto l531
l533:
position, tokenIndex = position531, tokenIndex531
if buffer[position] != rune('\r') {
goto l527
}
position++
}
l531:
add(ruleEOL, position530)
}
break
}
}
add(ruleWhitespace, position528)
}
goto l526
l527:
position, tokenIndex = position527, tokenIndex527
}
add(rule_, position525)
}
return true
},
/* 41 Whitespace <- <((&('\t') '\t') | (&(' ') ' ') | (&('\n' | '\r') EOL))> */
nil,
/* 42 EOL <- <(('\r' '\n') / '\n' / '\r')> */
nil,
/* 43 EOF <- <!.> */
nil,
/* 45 Action0 <- <{
p.t = p.t.Add(-time.Minute * time.Duration(p.number))
}> */
nil,
/* 46 Action1 <- <{
p.t = p.t.Add(time.Minute * time.Duration(p.number))
}> */
nil,
/* 47 Action2 <- <{
p.t = p.t.Add(-time.Minute * time.Duration(p.number))
}> */
nil,
/* 48 Action3 <- <{
p.t = p.t.Add(time.Minute * time.Duration(p.number))
}> */
nil,
/* 49 Action4 <- <{
p.t = p.t.Add(p.withDirection(time.Minute) * time.Duration(p.number))
}> */
nil,
/* 50 Action5 <- <{
p.t = p.t.Add(-time.Hour * time.Duration(p.number))
}> */
nil,
/* 51 Action6 <- <{
p.t = p.t.Add(time.Hour * time.Duration(p.number))
}> */
nil,
/* 52 Action7 <- <{
p.t = p.t.Add(-time.Hour * time.Duration(p.number))
}> */
nil,
/* 53 Action8 <- <{
p.t = p.t.Add(time.Hour * time.Duration(p.number))
}> */
nil,
/* 54 Action9 <- <{
p.t = p.t.Add(p.withDirection(time.Hour) * time.Duration(p.number))
}> */
nil,
/* 55 Action10 <- <{
p.t = truncateDay(p.t.Add(-day * time.Duration(p.number)))
}> */
nil,
/* 56 Action11 <- <{
p.t = p.t.Add(day * time.Duration(p.number))
}> */
nil,
/* 57 Action12 <- <{
p.t = truncateDay(p.t.Add(-day * time.Duration(p.number)))
}> */
nil,
/* 58 Action13 <- <{
p.t = truncateDay(p.t.Add(day * time.Duration(p.number)))
}> */
nil,
/* 59 Action14 <- <{
p.t = truncateDay(p.t.Add(p.withDirection(day) * time.Duration(p.number)))
}> */
nil,
/* 60 Action15 <- <{
p.t = truncateDay(p.t.Add(-week * time.Duration(p.number)))
}> */
nil,
/* 61 Action16 <- <{
p.t = p.t.Add(week * time.Duration(p.number))
}> */
nil,
/* 62 Action17 <- <{
p.t = truncateDay(p.t.Add(-week * time.Duration(p.number)))
}> */
nil,
/* 63 Action18 <- <{
p.t = truncateDay(p.t.Add(week * time.Duration(p.number)))
}> */
nil,
/* 64 Action19 <- <{
p.t = truncateDay(p.t.Add(p.withDirection(week) * time.Duration(p.number)))
}> */
nil,
/* 65 Action20 <- <{
p.t = p.t.AddDate(0, -p.number, 0)
}> */
nil,
/* 66 Action21 <- <{
p.t = p.t.AddDate(0, p.number, 0)
}> */
nil,
/* 67 Action22 <- <{
p.t = p.t.AddDate(0, -p.number, 0)
}> */
nil,
/* 68 Action23 <- <{
p.t = p.t.AddDate(0, p.number, 0)
}> */
nil,
/* 69 Action24 <- <{
p.t = prevMonth(p.t, p.month)
}> */
nil,
/* 70 Action25 <- <{
p.t = nextMonth(p.t, p.month)
}> */
nil,
/* 71 Action26 <- <{
if p.direction < 0 {
p.t = prevMonth(p.t, p.month)
} else {
p.t = nextMonth(p.t, p.month)
}
}> */
nil,
/* 72 Action27 <- <{
p.t = p.t.AddDate(-p.number, 0, 0)
}> */
nil,
/* 73 Action28 <- <{
p.t = p.t.AddDate(p.number, 0, 0)
}> */
nil,
/* 74 Action29 <- <{
p.t = p.t.AddDate(-p.number, 0, 0)
}> */
nil,
/* 75 Action30 <- <{
p.t = p.t.AddDate(p.number, 0, 0)
}> */
nil,
/* 76 Action31 <- <{
p.t = time.Date(p.t.Year() - 1, 1, 1, 0, 0, 0, 0, p.t.Location())
}> */
nil,
/* 77 Action32 <- <{
p.t = time.Date(p.t.Year() + 1, 1, 1, 0, 0, 0, 0, p.t.Location())
}> */
nil,
/* 78 Action33 <- <{
p.t = truncateDay(p.t)
}> */
nil,
/* 79 Action34 <- <{
p.t = truncateDay(p.t.Add(-day))
}> */
nil,
/* 80 Action35 <- <{
p.t = truncateDay(p.t.Add(+day))
}> */
nil,
/* 81 Action36 <- <{
p.t = truncateDay(prevWeekday(p.t, p.weekday))
}> */
nil,
/* 82 Action37 <- <{
p.t = truncateDay(nextWeekday(p.t, p.weekday))
}> */
nil,
/* 83 Action38 <- <{
if p.direction < 0 {
p.t = truncateDay(prevWeekday(p.t, p.weekday))
} else {
p.t = truncateDay(nextWeekday(p.t, p.weekday))
}
}> */
nil,
/* 84 Action39 <- <{
t := p.t
year, month, _ := t.Date()
hour, min, sec := t.Clock()
p.t = time.Date(year, month, p.number, hour, min, sec, 0, t.Location())
}> */
nil,
/* 85 Action40 <- <{
year, month, day := p.t.Date()
p.t = time.Date(year, month, day, p.number, 0, 0, 0, p.t.Location())
}> */
nil,
/* 86 Action41 <- <{
year, month, day := p.t.Date()
p.t = time.Date(year, month, day, p.number + 12, 0, 0, 0, p.t.Location())
}> */
nil,
/* 87 Action42 <- <{
year, month, day := p.t.Date()
p.t = time.Date(year, month, day, p.number, 0, 0, 0, p.t.Location())
}> */
nil,
/* 88 Action43 <- <{
t := p.t
year, month, day := t.Date()
hour, _, _ := t.Clock()
p.t = time.Date(year, month, day, hour, p.number, 0, 0, t.Location())
}> */
nil,
/* 89 Action44 <- <{
t := p.t
year, month, day := t.Date()
hour, min, _ := t.Clock()
p.t = time.Date(year, month, day, hour, min, p.number, 0, t.Location())
}> */
nil,
nil,
/* 91 Action45 <- <{ n, _ := strconv.Atoi(text); p.number = n }> */
nil,
/* 92 Action46 <- <{ p.number = 1 }> */
nil,
/* 93 Action47 <- <{ p.number = 2 }> */
nil,
/* 94 Action48 <- <{ p.number = 3 }> */
nil,
/* 95 Action49 <- <{ p.number = 4 }> */
nil,
/* 96 Action50 <- <{ p.number = 5 }> */
nil,
/* 97 Action51 <- <{ p.number = 6 }> */
nil,
/* 98 Action52 <- <{ p.number = 7 }> */
nil,
/* 99 Action53 <- <{ p.number = 8 }> */
nil,
/* 100 Action54 <- <{ p.number = 9 }> */
nil,
/* 101 Action55 <- <{ p.number = 10 }> */
nil,
/* 102 Action56 <- <{ p.weekday = time.Sunday }> */
nil,
/* 103 Action57 <- <{ p.weekday = time.Monday }> */
nil,
/* 104 Action58 <- <{ p.weekday = time.Tuesday }> */
nil,
/* 105 Action59 <- <{ p.weekday = time.Wednesday }> */
nil,
/* 106 Action60 <- <{ p.weekday = time.Thursday }> */
nil,
/* 107 Action61 <- <{ p.weekday = time.Friday }> */
nil,
/* 108 Action62 <- <{ p.weekday = time.Saturday }> */
nil,
/* 109 Action63 <- <{ p.month = time.January }> */
nil,
/* 110 Action64 <- <{ p.month = time.February }> */
nil,
/* 111 Action65 <- <{ p.month = time.March }> */
nil,
/* 112 Action66 <- <{ p.month = time.April }> */
nil,
/* 113 Action67 <- <{ p.month = time.May }> */
nil,
/* 114 Action68 <- <{ p.month = time.June }> */
nil,
/* 115 Action69 <- <{ p.month = time.July }> */
nil,
/* 116 Action70 <- <{ p.month = time.August }> */
nil,
/* 117 Action71 <- <{ p.month = time.September }> */
nil,
/* 118 Action72 <- <{ p.month = time.October }> */
nil,
/* 119 Action73 <- <{ p.month = time.November }> */
nil,
/* 120 Action74 <- <{ p.month = time.December }> */
nil,
/* 121 Action75 <- <{ p.number = 1}> */
nil,
/* 122 Action76 <- <{ p.number = 1 }> */
nil,
/* 123 Action77 <- <{ p.number = 1 }> */
nil,
}
p.rules = _rules
return nil
}