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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
// Code generated by re2go, DO NOT EDIT.
//go:generate re2go $INPUT -o $OUTPUT -i --api simple
package main
const (
ResultOk = iota
ResultFail
)
func lex(yyinput string) int {
var yycursor, yymarker int
{
var yych byte
yyaccept := 0
yych = yyinput[yycursor]
switch (yych) {
case '.':
goto yy3
case '0':
goto yy4
case '1','2','3','4','5','6','7','8','9':
goto yy5
default:
goto yy1
}
yy1:
yycursor += 1
yy2:
{ return ResultFail }
yy3:
yycursor += 1
yych = yyinput[yycursor]
switch (yych) {
case '0','1','2','3','4','5','6','7','8','9':
goto yy7
default:
goto yy2
}
yy4:
yyaccept = 0
yycursor += 1
yymarker = yycursor
yych = yyinput[yycursor]
switch (yych) {
case '.':
goto yy7
case '0','1','2','3','4','5','6','7','8','9':
goto yy9
case 'E':
fallthrough
case 'e':
goto yy11
default:
goto yy2
}
yy5:
yyaccept = 1
yycursor += 1
yymarker = yycursor
yych = yyinput[yycursor]
switch (yych) {
case '.':
goto yy7
case '0','1','2','3','4','5','6','7','8','9':
goto yy5
case 'E':
fallthrough
case 'e':
goto yy11
default:
goto yy6
}
yy6:
{ return ResultOk }
yy7:
yyaccept = 2
yycursor += 1
yymarker = yycursor
yych = yyinput[yycursor]
switch (yych) {
case '0','1','2','3','4','5','6','7','8','9':
goto yy7
case 'E':
fallthrough
case 'e':
goto yy11
default:
goto yy8
}
yy8:
{ return ResultOk }
yy9:
yycursor += 1
yych = yyinput[yycursor]
switch (yych) {
case '.':
goto yy7
case '0','1','2','3','4','5','6','7','8','9':
goto yy9
case 'E':
fallthrough
case 'e':
goto yy11
default:
goto yy10
}
yy10:
yycursor = yymarker
switch (yyaccept) {
case 0:
goto yy2
case 1:
goto yy6
default:
goto yy8
}
yy11:
yycursor += 1
yych = yyinput[yycursor]
switch (yych) {
case '+':
fallthrough
case '-':
goto yy12
case '0','1','2','3','4','5','6','7','8','9':
goto yy13
default:
goto yy10
}
yy12:
yycursor += 1
yych = yyinput[yycursor]
switch (yych) {
case '0','1','2','3','4','5','6','7','8','9':
goto yy13
default:
goto yy10
}
yy13:
yycursor += 1
yych = yyinput[yycursor]
switch (yych) {
case '0','1','2','3','4','5','6','7','8','9':
goto yy13
default:
goto yy8
}
}
}
func main() {
assert_eq := func(x, y int) { if x != y { panic("error") } }
assert_eq(lex("123\000"), ResultOk)
assert_eq(lex("123.4567\000"), ResultOk)
}
|