-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathopenhours.nex
32 lines (28 loc) · 1010 Bytes
/
openhours.nex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/24\/7/ { return ALWAYS }
/Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec/ {
lval.num,_ = months[yylex.Text()]
return MONTH
}
/Su|Mo|Tu|We|Th|Fr|Sa/ {
lval.num,_ = weekdays[yylex.Text()]
return WEEKDAY
}
/ |\t/ { return SEP }
/./ {
return int(yylex.Text()[0])
}
//
package openhours
import (
"fmt"
)
var months = map[string]int{"Jan": 0, "Feb": 1, "Mar": 2, "Apr": 3, "May": 4, "Jun": 5, "Jul": 6, "Aug": 7, "Sep": 8, "Oct": 9, "Nov": 10, "Dec": 11}
var weekdays = map[string]int{"Su": 0, "Mo": 1, "Tu": 2, "We": 3, "Th": 4, "Fr": 5, "Sa": 6}
func (yylex *Lexer) Error(e string) {
switch yylex.parseResult.(type) {
case []error: //nothing to do
default:
yylex.parseResult = make([]error, 0)
}
yylex.parseResult = append(yylex.parseResult.([]error), fmt.Errorf("%d:%d %v", yylex.Line(), yylex.Column(), e))
}