aboutsummaryrefslogtreecommitdiffstats
path: root/tools/syz-trace2syz/parser
diff options
context:
space:
mode:
authorshankarapailoor <pailoor@uchicago.edu>2018-12-06 09:25:37 -0600
committerDmitry Vyukov <dvyukov@google.com>2018-12-06 16:25:37 +0100
commit6a60a195309f4bb20ddf43fea9fb5b9676d31bf3 (patch)
tree3415c8fd7d44766d8159e4473dc469c419dd53ea /tools/syz-trace2syz/parser
parent3ab38479ab60b50d5b27332bd001c78382877ecd (diff)
tools/syz-trace2syz: add tool to convert strace output to programs
* fixing weird merge error * fixing presubmit * fixing presubmit * removing parsing code because of -Xraw option * fix presubmit * update * deleting vma_call_handlers as we are currently skipping most vma calls. This simplifies memory_tracker as we don't need to keep track of vma allocations * removing custom handling of bpf_instruction union * removing ifconf parsing * update * removed all expression types and replaced them with constant types. removing ipv6_addr parsing while -Xraw is getting fixed. Removing constants.go * removing ipv6 parsing * presubmit * moving direction check from ipv4_addr out to genUnion * removing code that parses kcov * removing redundant test * removing custom code in generate unions to fill ipv4_addr * proggen: changing order of imports to make external packages import first fixing presubmit * changing log messages to lower case to be consistent with other packages. * removing pointer type and simplifying memory_tracker removing comment * moving context and return_cache to seaparate files * deleting default argument generation when we should probably throw an error
Diffstat (limited to 'tools/syz-trace2syz/parser')
-rw-r--r--tools/syz-trace2syz/parser/intermediate_types.go155
-rw-r--r--tools/syz-trace2syz/parser/lex.go5935
-rw-r--r--tools/syz-trace2syz/parser/parser.go73
-rw-r--r--tools/syz-trace2syz/parser/parser_test.go196
-rw-r--r--tools/syz-trace2syz/parser/strace.go983
-rw-r--r--tools/syz-trace2syz/parser/strace.y165
-rw-r--r--tools/syz-trace2syz/parser/straceLex.rl133
7 files changed, 7640 insertions, 0 deletions
diff --git a/tools/syz-trace2syz/parser/intermediate_types.go b/tools/syz-trace2syz/parser/intermediate_types.go
new file mode 100644
index 000000000..3cbf94238
--- /dev/null
+++ b/tools/syz-trace2syz/parser/intermediate_types.go
@@ -0,0 +1,155 @@
+// Copyright 2018 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package parser
+
+import (
+ "bytes"
+ "fmt"
+)
+
+// TraceTree struct contains intermediate representation of trace
+// If a trace is multiprocess it constructs a trace for each type
+type TraceTree struct {
+ TraceMap map[int64]*Trace
+ Ptree map[int64][]int64
+ RootPid int64
+ Filename string
+}
+
+// NewTraceTree initializes a TraceTree
+func NewTraceTree() (tree *TraceTree) {
+ tree = &TraceTree{
+ TraceMap: make(map[int64]*Trace),
+ Ptree: make(map[int64][]int64),
+ RootPid: -1,
+ }
+ return
+}
+
+func (tree *TraceTree) add(call *Syscall) {
+ if tree.RootPid < 0 {
+ tree.RootPid = call.Pid
+ }
+
+ if !call.Resumed {
+ if tree.TraceMap[call.Pid] == nil {
+ tree.TraceMap[call.Pid] = new(Trace)
+ tree.Ptree[call.Pid] = make([]int64, 0)
+ }
+ }
+ c := tree.TraceMap[call.Pid].add(call)
+ if c.CallName == "clone" && !c.Paused {
+ tree.Ptree[c.Pid] = append(tree.Ptree[c.Pid], c.Ret)
+ }
+}
+
+// Trace is just a list of system calls
+type Trace struct {
+ Calls []*Syscall
+}
+
+func (trace *Trace) add(call *Syscall) (ret *Syscall) {
+ if !call.Resumed {
+ trace.Calls = append(trace.Calls, call)
+ ret = call
+ return
+ }
+ lastCall := trace.Calls[len(trace.Calls)-1]
+ lastCall.Args = append(lastCall.Args, call.Args...)
+ lastCall.Paused = false
+ lastCall.Ret = call.Ret
+ ret = lastCall
+ return
+}
+
+// IrType is the intermediate representation of the strace output
+// Every argument of a system call should be represented in an intermediate type
+type IrType interface {
+ String() string
+}
+
+// Syscall struct is the IR type for any system call
+type Syscall struct {
+ CallName string
+ Args []IrType
+ Pid int64
+ Ret int64
+ Paused bool
+ Resumed bool
+}
+
+// NewSyscall - constructor
+func NewSyscall(pid int64, name string, args []IrType, ret int64, paused, resumed bool) (sys *Syscall) {
+ return &Syscall{
+ CallName: name,
+ Args: args,
+ Pid: pid,
+ Ret: ret,
+ Paused: paused,
+ Resumed: resumed,
+ }
+}
+
+// String
+func (s *Syscall) String() string {
+ buf := new(bytes.Buffer)
+
+ fmt.Fprintf(buf, "Pid: -%v-", s.Pid)
+ fmt.Fprintf(buf, "Name: -%v-", s.CallName)
+ for _, typ := range s.Args {
+ buf.WriteString("-")
+ buf.WriteString(typ.String())
+ buf.WriteString("-")
+ }
+ buf.WriteString(fmt.Sprintf("-Ret: %d\n", s.Ret))
+ return buf.String()
+}
+
+// GroupType contains arrays and structs
+type GroupType struct {
+ Elems []IrType
+}
+
+func newGroupType(elems []IrType) (typ *GroupType) {
+ return &GroupType{Elems: elems}
+}
+
+// String implements IrType String()
+func (a *GroupType) String() string {
+ var buf bytes.Buffer
+
+ buf.WriteString("[")
+ for _, elem := range a.Elems {
+ buf.WriteString(elem.String())
+ buf.WriteString(",")
+ }
+ buf.WriteString("]")
+ return buf.String()
+}
+
+// Constant represents all evaluated expressions produced by strace
+// Constant types are evaluated at parse time
+type Constant uint64
+
+func (c Constant) String() string {
+ return fmt.Sprintf("%#v", c)
+}
+
+func (c Constant) Val() uint64 {
+ return uint64(c)
+}
+
+// BufferType contains strings
+type BufferType struct {
+ Val string
+}
+
+func newBufferType(val string) *BufferType {
+ return &BufferType{Val: val}
+}
+
+// String implements IrType String()
+func (b *BufferType) String() string {
+ return fmt.Sprintf("Buffer: %s with length: %d\n", b.Val, len(b.Val))
+}
diff --git a/tools/syz-trace2syz/parser/lex.go b/tools/syz-trace2syz/parser/lex.go
new file mode 100644
index 000000000..0aa1f4f43
--- /dev/null
+++ b/tools/syz-trace2syz/parser/lex.go
@@ -0,0 +1,5935 @@
+//line straceLex.rl:1
+
+// Copyright 2018 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+// nolint
+
+package parser
+
+import (
+ "encoding/hex"
+ "fmt"
+ "github.com/google/syzkaller/pkg/log"
+ "strconv"
+ "strings"
+)
+
+//line lex.go:20
+const strace_start int = 157
+const strace_first_final int = 157
+const strace_error int = 0
+
+const strace_en_comment int = 211
+const strace_en_main int = 157
+
+//line straceLex.rl:22
+type Stracelexer struct {
+ result *Syscall
+ data []byte
+ p, pe, cs int
+ ts, te, act int
+}
+
+func newStraceLexer(data []byte) *Stracelexer {
+ lex := &Stracelexer{
+ data: data,
+ pe: len(data),
+ }
+
+//line lex.go:46
+ {
+ lex.cs = strace_start
+ lex.ts = 0
+ lex.te = 0
+ lex.act = 0
+ }
+
+//line straceLex.rl:38
+ return lex
+}
+
+func (lex *Stracelexer) Lex(out *StraceSymType) int {
+ eof := lex.pe
+ tok := 0
+
+//line lex.go:62
+ {
+ if (lex.p) == (lex.pe) {
+ goto _test_eof
+ }
+ switch lex.cs {
+ case 157:
+ goto st_case_157
+ case 0:
+ goto st_case_0
+ case 1:
+ goto st_case_1
+ case 2:
+ goto st_case_2
+ case 158:
+ goto st_case_158
+ case 3:
+ goto st_case_3
+ case 4:
+ goto st_case_4
+ case 5:
+ goto st_case_5
+ case 6:
+ goto st_case_6
+ case 7:
+ goto st_case_7
+ case 8:
+ goto st_case_8
+ case 159:
+ goto st_case_159
+ case 160:
+ goto st_case_160
+ case 9:
+ goto st_case_9
+ case 161:
+ goto st_case_161
+ case 162:
+ goto st_case_162
+ case 10:
+ goto st_case_10
+ case 11:
+ goto st_case_11
+ case 12:
+ goto st_case_12
+ case 13:
+ goto st_case_13
+ case 14:
+ goto st_case_14
+ case 15:
+ goto st_case_15
+ case 16:
+ goto st_case_16
+ case 17:
+ goto st_case_17
+ case 18:
+ goto st_case_18
+ case 19:
+ goto st_case_19
+ case 20:
+ goto st_case_20
+ case 21:
+ goto st_case_21
+ case 22:
+ goto st_case_22
+ case 23:
+ goto st_case_23
+ case 24:
+ goto st_case_24
+ case 25:
+ goto st_case_25
+ case 26:
+ goto st_case_26
+ case 163:
+ goto st_case_163
+ case 27:
+ goto st_case_27
+ case 164:
+ goto st_case_164
+ case 165:
+ goto st_case_165
+ case 166:
+ goto st_case_166
+ case 167:
+ goto st_case_167
+ case 28:
+ goto st_case_28
+ case 29:
+ goto st_case_29
+ case 30:
+ goto st_case_30
+ case 168:
+ goto st_case_168
+ case 169:
+ goto st_case_169
+ case 31:
+ goto st_case_31
+ case 32:
+ goto st_case_32
+ case 170:
+ goto st_case_170
+ case 171:
+ goto st_case_171
+ case 172:
+ goto st_case_172
+ case 173:
+ goto st_case_173
+ case 33:
+ goto st_case_33
+ case 34:
+ goto st_case_34
+ case 35:
+ goto st_case_35
+ case 36:
+ goto st_case_36
+ case 174:
+ goto st_case_174
+ case 175:
+ goto st_case_175
+ case 37:
+ goto st_case_37
+ case 38:
+ goto st_case_38
+ case 39:
+ goto st_case_39
+ case 40:
+ goto st_case_40
+ case 41:
+ goto st_case_41
+ case 42:
+ goto st_case_42
+ case 43:
+ goto st_case_43
+ case 44:
+ goto st_case_44
+ case 45:
+ goto st_case_45
+ case 46:
+ goto st_case_46
+ case 47:
+ goto st_case_47
+ case 48:
+ goto st_case_48
+ case 49:
+ goto st_case_49
+ case 50:
+ goto st_case_50
+ case 176:
+ goto st_case_176
+ case 51:
+ goto st_case_51
+ case 52:
+ goto st_case_52
+ case 53:
+ goto st_case_53
+ case 54:
+ goto st_case_54
+ case 177:
+ goto st_case_177
+ case 55:
+ goto st_case_55
+ case 178:
+ goto st_case_178
+ case 179:
+ goto st_case_179
+ case 180:
+ goto st_case_180
+ case 181:
+ goto st_case_181
+ case 182:
+ goto st_case_182
+ case 56:
+ goto st_case_56
+ case 57:
+ goto st_case_57
+ case 58:
+ goto st_case_58
+ case 59:
+ goto st_case_59
+ case 60:
+ goto st_case_60
+ case 61:
+ goto st_case_61
+ case 62:
+ goto st_case_62
+ case 63:
+ goto st_case_63
+ case 64:
+ goto st_case_64
+ case 65:
+ goto st_case_65
+ case 66:
+ goto st_case_66
+ case 67:
+ goto st_case_67
+ case 68:
+ goto st_case_68
+ case 69:
+ goto st_case_69
+ case 183:
+ goto st_case_183
+ case 70:
+ goto st_case_70
+ case 71:
+ goto st_case_71
+ case 184:
+ goto st_case_184
+ case 185:
+ goto st_case_185
+ case 72:
+ goto st_case_72
+ case 73:
+ goto st_case_73
+ case 74:
+ goto st_case_74
+ case 75:
+ goto st_case_75
+ case 76:
+ goto st_case_76
+ case 77:
+ goto st_case_77
+ case 78:
+ goto st_case_78
+ case 79:
+ goto st_case_79
+ case 80:
+ goto st_case_80
+ case 81:
+ goto st_case_81
+ case 82:
+ goto st_case_82
+ case 83:
+ goto st_case_83
+ case 84:
+ goto st_case_84
+ case 85:
+ goto st_case_85
+ case 186:
+ goto st_case_186
+ case 86:
+ goto st_case_86
+ case 87:
+ goto st_case_87
+ case 88:
+ goto st_case_88
+ case 89:
+ goto st_case_89
+ case 90:
+ goto st_case_90
+ case 91:
+ goto st_case_91
+ case 92:
+ goto st_case_92
+ case 93:
+ goto st_case_93
+ case 94:
+ goto st_case_94
+ case 95:
+ goto st_case_95
+ case 96:
+ goto st_case_96
+ case 97:
+ goto st_case_97
+ case 98:
+ goto st_case_98
+ case 99:
+ goto st_case_99
+ case 100:
+ goto st_case_100
+ case 101:
+ goto st_case_101
+ case 102:
+ goto st_case_102
+ case 103:
+ goto st_case_103
+ case 104:
+ goto st_case_104
+ case 105:
+ goto st_case_105
+ case 106:
+ goto st_case_106
+ case 107:
+ goto st_case_107
+ case 108:
+ goto st_case_108
+ case 109:
+ goto st_case_109
+ case 110:
+ goto st_case_110
+ case 111:
+ goto st_case_111
+ case 112:
+ goto st_case_112
+ case 113:
+ goto st_case_113
+ case 114:
+ goto st_case_114
+ case 115:
+ goto st_case_115
+ case 116:
+ goto st_case_116
+ case 117:
+ goto st_case_117
+ case 118:
+ goto st_case_118
+ case 119:
+ goto st_case_119
+ case 120:
+ goto st_case_120
+ case 121:
+ goto st_case_121
+ case 122:
+ goto st_case_122
+ case 123:
+ goto st_case_123
+ case 124:
+ goto st_case_124
+ case 125:
+ goto st_case_125
+ case 126:
+ goto st_case_126
+ case 127:
+ goto st_case_127
+ case 128:
+ goto st_case_128
+ case 129:
+ goto st_case_129
+ case 130:
+ goto st_case_130
+ case 131:
+ goto st_case_131
+ case 132:
+ goto st_case_132
+ case 133:
+ goto st_case_133
+ case 134:
+ goto st_case_134
+ case 135:
+ goto st_case_135
+ case 136:
+ goto st_case_136
+ case 137:
+ goto st_case_137
+ case 138:
+ goto st_case_138
+ case 139:
+ goto st_case_139
+ case 140:
+ goto st_case_140
+ case 141:
+ goto st_case_141
+ case 142:
+ goto st_case_142
+ case 143:
+ goto st_case_143
+ case 144:
+ goto st_case_144
+ case 145:
+ goto st_case_145
+ case 146:
+ goto st_case_146
+ case 147:
+ goto st_case_147
+ case 148:
+ goto st_case_148
+ case 149:
+ goto st_case_149
+ case 150:
+ goto st_case_150
+ case 151:
+ goto st_case_151
+ case 152:
+ goto st_case_152
+ case 153:
+ goto st_case_153
+ case 154:
+ goto st_case_154
+ case 187:
+ goto st_case_187
+ case 155:
+ goto st_case_155
+ case 188:
+ goto st_case_188
+ case 189:
+ goto st_case_189
+ case 190:
+ goto st_case_190
+ case 191:
+ goto st_case_191
+ case 192:
+ goto st_case_192
+ case 193:
+ goto st_case_193
+ case 194:
+ goto st_case_194
+ case 195:
+ goto st_case_195
+ case 196:
+ goto st_case_196
+ case 197:
+ goto st_case_197
+ case 198:
+ goto st_case_198
+ case 199:
+ goto st_case_199
+ case 200:
+ goto st_case_200
+ case 201:
+ goto st_case_201
+ case 202:
+ goto st_case_202
+ case 203:
+ goto st_case_203
+ case 204:
+ goto st_case_204
+ case 205:
+ goto st_case_205
+ case 206:
+ goto st_case_206
+ case 207:
+ goto st_case_207
+ case 208:
+ goto st_case_208
+ case 209:
+ goto st_case_209
+ case 156:
+ goto st_case_156
+ case 210:
+ goto st_case_210
+ case 211:
+ goto st_case_211
+ case 212:
+ goto st_case_212
+ }
+ goto st_out
+ tr9:
+//line NONE:1
+ switch lex.act {
+ case 0:
+ {
+ {
+ goto st0
+ }
+ }
+ case 3:
+ {
+ (lex.p) = (lex.te) - 1
+ out.val_int, _ = strconv.ParseInt(string(lex.data[lex.ts:lex.te]), 10, 64)
+ tok = INT
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ case 4:
+ {
+ (lex.p) = (lex.te) - 1
+ out.val_double, _ = strconv.ParseFloat(string(lex.data[lex.ts:lex.te]), 64)
+ tok = DOUBLE
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ case 8:
+ {
+ (lex.p) = (lex.te) - 1
+ tok = NULL
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ case 9:
+ {
+ (lex.p) = (lex.te) - 1
+ out.data = string(lex.data[lex.ts:lex.te])
+ tok = FLAG
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ case 11:
+ {
+ (lex.p) = (lex.te) - 1
+ out.data = string(lex.data[lex.ts:lex.te])
+ tok = IDENTIFIER
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ case 33:
+ {
+ (lex.p) = (lex.te) - 1
+ tok = COMMA
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ }
+
+ goto st157
+ tr11:
+//line straceLex.rl:100
+ (lex.p) = (lex.te) - 1
+ {
+ tok = COMMA
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr28:
+//line straceLex.rl:79
+ lex.te = (lex.p) + 1
+ {
+ tok = UNFINISHED
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr30:
+//line straceLex.rl:90
+ lex.te = (lex.p) + 1
+ {
+ tok = RBRACKET
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr36:
+//line straceLex.rl:70
+ (lex.p) = (lex.te) - 1
+ {
+ out.val_int, _ = strconv.ParseInt(string(lex.data[lex.ts:lex.te]), 10, 64)
+ tok = INT
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr55:
+//line straceLex.rl:104
+ (lex.p) = (lex.te) - 1
+ {
+ out.data = string(lex.data[lex.ts:lex.te])
+ tok = DATETIME
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr74:
+//line straceLex.rl:81
+ lex.te = (lex.p) + 1
+ {
+ out.data = string(lex.data[lex.ts:lex.te])
+ tok = MAC
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr78:
+//line straceLex.rl:96
+ lex.te = (lex.p) + 1
+ {
+ tok = LSHIFT
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr94:
+//line straceLex.rl:80
+ (lex.p) = (lex.te) - 1
+ {
+ tok = RESUMED
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr95:
+//line straceLex.rl:80
+ lex.te = (lex.p) + 1
+ {
+ tok = RESUMED
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr162:
+//line straceLex.rl:97
+ lex.te = (lex.p) + 1
+ {
+ tok = RSHIFT
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr165:
+//line straceLex.rl:107
+ lex.te = (lex.p) + 1
+
+ goto st157
+ tr166:
+//line straceLex.rl:94
+ lex.te = (lex.p) + 1
+ {
+ tok = NOT
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr168:
+//line straceLex.rl:93
+ lex.te = (lex.p) + 1
+ {
+ tok = AND
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr170:
+//line straceLex.rl:83
+ lex.te = (lex.p) + 1
+ {
+ tok = LPAREN
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr171:
+//line straceLex.rl:85
+ lex.te = (lex.p) + 1
+ {
+ tok = RPAREN
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr172:
+//line straceLex.rl:88
+ lex.te = (lex.p) + 1
+ {
+ tok = TIMES
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr173:
+//line straceLex.rl:102
+ lex.te = (lex.p) + 1
+ {
+ tok = PLUS
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr183:
+//line straceLex.rl:106
+ lex.te = (lex.p) + 1
+ {
+ tok = QUESTION
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr187:
+//line straceLex.rl:86
+ lex.te = (lex.p) + 1
+ {
+ tok = LBRACKET_SQUARE
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr188:
+//line straceLex.rl:87
+ lex.te = (lex.p) + 1
+ {
+ tok = RBRACKET_SQUARE
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr190:
+//line straceLex.rl:89
+ lex.te = (lex.p) + 1
+ {
+ tok = LBRACKET
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr191:
+//line straceLex.rl:91
+ lex.te = (lex.p) + 1
+ {
+ tok = OR
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr192:
+//line straceLex.rl:95
+ lex.te = (lex.p) + 1
+ {
+ tok = ONESCOMP
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr193:
+//line straceLex.rl:74
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ out.data = ParseString(string(lex.data[lex.ts+1 : lex.te-1]))
+ tok = STRING_LITERAL
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr194:
+//line straceLex.rl:78
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ out.data = string(lex.data[lex.ts:lex.te])
+ tok = IDENTIFIER
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr195:
+//line straceLex.rl:100
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ tok = COMMA
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr197:
+//line straceLex.rl:101
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ tok = MINUS
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr198:
+//line straceLex.rl:98
+ lex.te = (lex.p) + 1
+ {
+ tok = ARROW
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr199:
+//line straceLex.rl:103
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ tok = FORWARDSLASH
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr200:
+//line straceLex.rl:105
+ lex.te = (lex.p) + 1
+ {
+ {
+ goto st211
+ }
+ }
+ goto st157
+ tr201:
+//line straceLex.rl:70
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ out.val_int, _ = strconv.ParseInt(string(lex.data[lex.ts:lex.te]), 10, 64)
+ tok = INT
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr207:
+//line straceLex.rl:71
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ out.val_double, _ = strconv.ParseFloat(string(lex.data[lex.ts:lex.te]), 64)
+ tok = DOUBLE
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr211:
+//line straceLex.rl:78
+ lex.te = (lex.p) + 1
+ {
+ out.data = string(lex.data[lex.ts:lex.te])
+ tok = IDENTIFIER
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr222:
+//line straceLex.rl:104
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ out.data = string(lex.data[lex.ts:lex.te])
+ tok = DATETIME
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr225:
+//line straceLex.rl:73
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ out.val_uint, _ = strconv.ParseUint(string(lex.data[lex.ts:lex.te]), 0, 64)
+ tok = UINT
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr226:
+//line straceLex.rl:80
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ tok = RESUMED
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr228:
+//line straceLex.rl:82
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ tok = EQUALS
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr229:
+//line straceLex.rl:99
+ lex.te = (lex.p) + 1
+ {
+ tok = ARROW
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr230:
+//line straceLex.rl:84
+ lex.te = (lex.p) + 1
+ {
+ tok = EQUALAT
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ tr235:
+//line straceLex.rl:76
+ lex.te = (lex.p)
+ (lex.p)--
+ {
+ out.data = string(lex.data[lex.ts:lex.te])
+ tok = FLAG
+ {
+ (lex.p)++
+ lex.cs = 157
+ goto _out
+ }
+ }
+ goto st157
+ st157:
+//line NONE:1
+ lex.ts = 0
+
+//line NONE:1
+ lex.act = 0
+
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof157
+ }
+ st_case_157:
+//line NONE:1
+ lex.ts = (lex.p)
+
+//line lex.go:748
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto tr165
+ case 33:
+ goto tr166
+ case 34:
+ goto st1
+ case 38:
+ goto tr168
+ case 39:
+ goto tr169
+ case 40:
+ goto tr170
+ case 41:
+ goto tr171
+ case 42:
+ goto tr172
+ case 43:
+ goto tr173
+ case 44:
+ goto tr174
+ case 45:
+ goto st163
+ case 46:
+ goto st27
+ case 47:
+ goto st164
+ case 48:
+ goto tr177
+ case 58:
+ goto st160
+ case 60:
+ goto st72
+ case 61:
+ goto st187
+ case 62:
+ goto st155
+ case 63:
+ goto tr183
+ case 78:
+ goto st207
+ case 91:
+ goto tr187
+ case 93:
+ goto tr188
+ case 95:
+ goto st156
+ case 123:
+ goto tr190
+ case 124:
+ goto tr191
+ case 125:
+ goto tr30
+ case 126:
+ goto tr192
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 13:
+ if 49 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr178
+ }
+ case lex.data[(lex.p)] >= 9:
+ goto tr165
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] < 97:
+ if 71 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 90 {
+ goto tr185
+ }
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ default:
+ goto tr189
+ }
+ default:
+ goto st188
+ }
+ goto st0
+ st_case_0:
+ st0:
+ lex.cs = 0
+ goto _out
+ st1:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof1
+ }
+ st_case_1:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st2
+ case 34:
+ goto st158
+ case 35:
+ goto st2
+ case 39:
+ goto st3
+ case 78:
+ goto st6
+ case 92:
+ goto st2
+ case 95:
+ goto st3
+ }
+ switch {
+ case lex.data[(lex.p)] < 46:
+ if 40 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 42 {
+ goto st2
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st4
+ }
+ default:
+ goto st2
+ }
+ goto st0
+ st2:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof2
+ }
+ st_case_2:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st2
+ case 34:
+ goto st158
+ case 35:
+ goto st2
+ case 92:
+ goto st2
+ case 95:
+ goto st2
+ }
+ switch {
+ case lex.data[(lex.p)] < 46:
+ if 39 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 42 {
+ goto st2
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st2
+ }
+ default:
+ goto st2
+ }
+ goto st0
+ st158:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof158
+ }
+ st_case_158:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st158
+ case 46:
+ goto st158
+ }
+ goto tr193
+ st3:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof3
+ }
+ st_case_3:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st2
+ case 34:
+ goto st158
+ case 35:
+ goto st2
+ case 39:
+ goto st3
+ case 92:
+ goto st2
+ case 95:
+ goto st3
+ }
+ switch {
+ case lex.data[(lex.p)] < 46:
+ if 40 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 42 {
+ goto st2
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st4
+ }
+ default:
+ goto st2
+ }
+ goto st0
+ st4:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof4
+ }
+ st_case_4:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st2
+ case 34:
+ goto st158
+ case 35:
+ goto st2
+ case 39:
+ goto st5
+ case 58:
+ goto st2
+ case 92:
+ goto st2
+ case 95:
+ goto st5
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ switch {
+ case lex.data[(lex.p)] > 42:
+ if 46 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 47 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 40:
+ goto st2
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st5
+ }
+ default:
+ goto st5
+ }
+ goto st0
+ st5:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof5
+ }
+ st_case_5:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st2
+ case 34:
+ goto st158
+ case 35:
+ goto st2
+ case 39:
+ goto st5
+ case 58:
+ goto st2
+ case 92:
+ goto st2
+ case 95:
+ goto st5
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ switch {
+ case lex.data[(lex.p)] > 42:
+ if 46 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 47 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 40:
+ goto st2
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st5
+ }
+ default:
+ goto st5
+ }
+ goto st0
+ st6:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof6
+ }
+ st_case_6:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st2
+ case 34:
+ goto st158
+ case 35:
+ goto st2
+ case 39:
+ goto st5
+ case 58:
+ goto st2
+ case 85:
+ goto st7
+ case 92:
+ goto st2
+ case 95:
+ goto st5
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ switch {
+ case lex.data[(lex.p)] > 42:
+ if 46 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 47 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 40:
+ goto st2
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st5
+ }
+ default:
+ goto st5
+ }
+ goto st0
+ st7:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof7
+ }
+ st_case_7:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st2
+ case 34:
+ goto st158
+ case 35:
+ goto st2
+ case 39:
+ goto st5
+ case 58:
+ goto st2
+ case 76:
+ goto st8
+ case 92:
+ goto st2
+ case 95:
+ goto st5
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ switch {
+ case lex.data[(lex.p)] > 42:
+ if 46 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 47 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 40:
+ goto st2
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st5
+ }
+ default:
+ goto st5
+ }
+ goto st0
+ st8:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof8
+ }
+ st_case_8:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st2
+ case 34:
+ goto st158
+ case 35:
+ goto st2
+ case 39:
+ goto st5
+ case 58:
+ goto st2
+ case 76:
+ goto st4
+ case 92:
+ goto st2
+ case 95:
+ goto st5
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ switch {
+ case lex.data[(lex.p)] > 42:
+ if 46 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 47 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 40:
+ goto st2
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st2
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st5
+ }
+ default:
+ goto st5
+ }
+ goto st0
+ tr169:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st159
+ st159:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof159
+ }
+ st_case_159:
+//line lex.go:1197
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr169
+ case 42:
+ goto st160
+ case 95:
+ goto tr169
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st9
+ }
+ default:
+ goto st160
+ }
+ goto tr194
+ st160:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof160
+ }
+ st_case_160:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ default:
+ goto st160
+ }
+ goto tr194
+ st9:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof9
+ }
+ st_case_9:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr10
+ case 95:
+ goto tr10
+ }
+ switch {
+ case lex.data[(lex.p)] > 57:
+ if 65 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 90 {
+ goto tr10
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto tr10
+ }
+ goto tr9
+ tr10:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:76
+ lex.act = 9
+ goto st161
+ tr252:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:75
+ lex.act = 8
+ goto st161
+ st161:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof161
+ }
+ st_case_161:
+//line lex.go:1289
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr10
+ case 95:
+ goto tr10
+ }
+ switch {
+ case lex.data[(lex.p)] > 57:
+ if 65 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 90 {
+ goto tr10
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto tr10
+ }
+ goto tr9
+ tr174:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:100
+ lex.act = 33
+ goto st162
+ st162:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof162
+ }
+ st_case_162:
+//line lex.go:1317
+ if lex.data[(lex.p)] == 32 {
+ goto st10
+ }
+ goto tr195
+ st10:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof10
+ }
+ st_case_10:
+ if lex.data[(lex.p)] == 32 {
+ goto st11
+ }
+ goto tr11
+ st11:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof11
+ }
+ st_case_11:
+ if lex.data[(lex.p)] == 60 {
+ goto st12
+ }
+ goto tr11
+ st12:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof12
+ }
+ st_case_12:
+ if lex.data[(lex.p)] == 117 {
+ goto st13
+ }
+ goto tr11
+ st13:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof13
+ }
+ st_case_13:
+ if lex.data[(lex.p)] == 110 {
+ goto st14
+ }
+ goto tr9
+ st14:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof14
+ }
+ st_case_14:
+ if lex.data[(lex.p)] == 102 {
+ goto st15
+ }
+ goto tr9
+ st15:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof15
+ }
+ st_case_15:
+ if lex.data[(lex.p)] == 105 {
+ goto st16
+ }
+ goto tr9
+ st16:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof16
+ }
+ st_case_16:
+ if lex.data[(lex.p)] == 110 {
+ goto st17
+ }
+ goto tr9
+ st17:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof17
+ }
+ st_case_17:
+ if lex.data[(lex.p)] == 105 {
+ goto st18
+ }
+ goto tr9
+ st18:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof18
+ }
+ st_case_18:
+ if lex.data[(lex.p)] == 115 {
+ goto st19
+ }
+ goto tr9
+ st19:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof19
+ }
+ st_case_19:
+ if lex.data[(lex.p)] == 104 {
+ goto st20
+ }
+ goto tr9
+ st20:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof20
+ }
+ st_case_20:
+ if lex.data[(lex.p)] == 101 {
+ goto st21
+ }
+ goto tr9
+ st21:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof21
+ }
+ st_case_21:
+ if lex.data[(lex.p)] == 100 {
+ goto st22
+ }
+ goto tr9
+ st22:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof22
+ }
+ st_case_22:
+ if lex.data[(lex.p)] == 32 {
+ goto st23
+ }
+ goto tr9
+ st23:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof23
+ }
+ st_case_23:
+ if lex.data[(lex.p)] == 46 {
+ goto st24
+ }
+ goto tr9
+ st24:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof24
+ }
+ st_case_24:
+ if lex.data[(lex.p)] == 46 {
+ goto st25
+ }
+ goto tr9
+ st25:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof25
+ }
+ st_case_25:
+ if lex.data[(lex.p)] == 46 {
+ goto st26
+ }
+ goto tr9
+ st26:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof26
+ }
+ st_case_26:
+ if lex.data[(lex.p)] == 62 {
+ goto tr28
+ }
+ goto tr9
+ st163:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof163
+ }
+ st_case_163:
+ if lex.data[(lex.p)] == 62 {
+ goto tr198
+ }
+ goto tr197
+ st27:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof27
+ }
+ st_case_27:
+ switch lex.data[(lex.p)] {
+ case 46:
+ goto st27
+ case 125:
+ goto tr30
+ }
+ goto st0
+ st164:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof164
+ }
+ st_case_164:
+ if lex.data[(lex.p)] == 42 {
+ goto tr200
+ }
+ goto tr199
+ tr177:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:70
+ lex.act = 3
+ goto st165
+ st165:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof165
+ }
+ st_case_165:
+//line lex.go:1517
+ switch lex.data[(lex.p)] {
+ case 46:
+ goto st166
+ case 120:
+ goto st71
+ }
+ switch {
+ case lex.data[(lex.p)] < 56:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 55 {
+ goto tr203
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st70
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st70
+ }
+ default:
+ goto tr204
+ }
+ goto tr201
+ st166:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof166
+ }
+ st_case_166:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr208
+ }
+ goto tr207
+ tr208:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:71
+ lex.act = 4
+ goto st167
+ st167:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof167
+ }
+ st_case_167:
+//line lex.go:1563
+ if lex.data[(lex.p)] == 46 {
+ goto st28
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr209
+ }
+ goto tr207
+ st28:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof28
+ }
+ st_case_28:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st29
+ }
+ goto tr9
+ st29:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof29
+ }
+ st_case_29:
+ if lex.data[(lex.p)] == 46 {
+ goto st30
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st31
+ }
+ goto tr9
+ st30:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof30
+ }
+ st_case_30:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st168
+ }
+ goto tr9
+ st168:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof168
+ }
+ st_case_168:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st169
+ }
+ goto tr194
+ st169:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof169
+ }
+ st_case_169:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr211
+ }
+ goto tr194
+ st31:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof31
+ }
+ st_case_31:
+ if lex.data[(lex.p)] == 46 {
+ goto st30
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st32
+ }
+ goto tr9
+ st32:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof32
+ }
+ st_case_32:
+ if lex.data[(lex.p)] == 46 {
+ goto st30
+ }
+ goto tr9
+ tr209:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:71
+ lex.act = 4
+ goto st170
+ st170:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof170
+ }
+ st_case_170:
+//line lex.go:1652
+ if lex.data[(lex.p)] == 46 {
+ goto st28
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr212
+ }
+ goto tr207
+ tr212:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:71
+ lex.act = 4
+ goto st171
+ st171:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof171
+ }
+ st_case_171:
+//line lex.go:1672
+ if lex.data[(lex.p)] == 46 {
+ goto st28
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st172
+ }
+ goto tr207
+ st172:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof172
+ }
+ st_case_172:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st172
+ }
+ goto tr207
+ tr203:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:70
+ lex.act = 3
+ goto st173
+ st173:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof173
+ }
+ st_case_173:
+//line lex.go:1701
+ switch lex.data[(lex.p)] {
+ case 46:
+ goto st33
+ case 58:
+ goto st56
+ }
+ switch {
+ case lex.data[(lex.p)] > 55:
+ if 56 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr216
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto tr215
+ }
+ goto tr201
+ st33:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof33
+ }
+ st_case_33:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st34
+ }
+ goto tr36
+ st34:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof34
+ }
+ st_case_34:
+ if lex.data[(lex.p)] == 46 {
+ goto st28
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st35
+ }
+ goto tr36
+ st35:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof35
+ }
+ st_case_35:
+ if lex.data[(lex.p)] == 46 {
+ goto st28
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st36
+ }
+ goto tr36
+ st36:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof36
+ }
+ st_case_36:
+ if lex.data[(lex.p)] == 46 {
+ goto st28
+ }
+ goto tr36
+ tr215:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:70
+ lex.act = 3
+ goto st174
+ st174:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof174
+ }
+ st_case_174:
+//line lex.go:1771
+ if lex.data[(lex.p)] == 46 {
+ goto st33
+ }
+ switch {
+ case lex.data[(lex.p)] > 55:
+ if 56 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr218
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto tr217
+ }
+ goto tr201
+ tr217:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+ goto st175
+ st175:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof175
+ }
+ st_case_175:
+//line lex.go:1794
+ switch lex.data[(lex.p)] {
+ case 45:
+ goto st37
+ case 47:
+ goto st37
+ }
+ switch {
+ case lex.data[(lex.p)] > 55:
+ if 56 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st180
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto st179
+ }
+ goto tr201
+ st37:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof37
+ }
+ st_case_37:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st38
+ }
+ goto tr36
+ st38:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof38
+ }
+ st_case_38:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st39
+ }
+ goto tr36
+ st39:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof39
+ }
+ st_case_39:
+ switch lex.data[(lex.p)] {
+ case 45:
+ goto st40
+ case 47:
+ goto st40
+ }
+ goto tr36
+ st40:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof40
+ }
+ st_case_40:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st41
+ }
+ goto tr36
+ st41:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof41
+ }
+ st_case_41:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st42
+ }
+ goto tr36
+ st42:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof42
+ }
+ st_case_42:
+ switch lex.data[(lex.p)] {
+ case 45:
+ goto st43
+ case 84:
+ goto st43
+ }
+ goto tr36
+ st43:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof43
+ }
+ st_case_43:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st44
+ }
+ goto tr36
+ st44:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof44
+ }
+ st_case_44:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st45
+ }
+ goto tr36
+ st45:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof45
+ }
+ st_case_45:
+ if lex.data[(lex.p)] == 58 {
+ goto st46
+ }
+ goto tr36
+ st46:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof46
+ }
+ st_case_46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st47
+ }
+ goto tr36
+ st47:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof47
+ }
+ st_case_47:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st48
+ }
+ goto tr36
+ st48:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof48
+ }
+ st_case_48:
+ if lex.data[(lex.p)] == 58 {
+ goto st49
+ }
+ goto tr36
+ st49:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof49
+ }
+ st_case_49:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st50
+ }
+ goto tr36
+ st50:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof50
+ }
+ st_case_50:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr54
+ }
+ goto tr36
+ tr54:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+ goto st176
+ st176:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof176
+ }
+ st_case_176:
+//line lex.go:1952
+ switch lex.data[(lex.p)] {
+ case 43:
+ goto st51
+ case 45:
+ goto st51
+ case 46:
+ goto st55
+ }
+ goto tr222
+ st51:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof51
+ }
+ st_case_51:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st52
+ }
+ goto tr55
+ st52:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof52
+ }
+ st_case_52:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st53
+ }
+ goto tr55
+ st53:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof53
+ }
+ st_case_53:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st54
+ }
+ goto tr55
+ st54:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof54
+ }
+ st_case_54:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr59
+ }
+ goto tr55
+ tr59:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+ goto st177
+ st177:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof177
+ }
+ st_case_177:
+//line lex.go:2008
+ if lex.data[(lex.p)] == 46 {
+ goto st55
+ }
+ goto tr222
+ st55:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof55
+ }
+ st_case_55:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st178
+ }
+ goto tr55
+ st178:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof178
+ }
+ st_case_178:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st178
+ }
+ goto tr222
+ st179:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof179
+ }
+ st_case_179:
+ switch {
+ case lex.data[(lex.p)] > 55:
+ if 56 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st180
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto st179
+ }
+ goto tr201
+ st180:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof180
+ }
+ st_case_180:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st180
+ }
+ goto tr201
+ tr218:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+ goto st181
+ st181:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof181
+ }
+ st_case_181:
+//line lex.go:2064
+ switch lex.data[(lex.p)] {
+ case 45:
+ goto st37
+ case 47:
+ goto st37
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st180
+ }
+ goto tr201
+ tr216:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:70
+ lex.act = 3
+ goto st182
+ st182:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof182
+ }
+ st_case_182:
+//line lex.go:2087
+ if lex.data[(lex.p)] == 46 {
+ goto st33
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr218
+ }
+ goto tr201
+ st56:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof56
+ }
+ st_case_56:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st57
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st57
+ }
+ default:
+ goto st57
+ }
+ goto tr9
+ st57:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof57
+ }
+ st_case_57:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st58
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st58
+ }
+ default:
+ goto st58
+ }
+ goto tr9
+ st58:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof58
+ }
+ st_case_58:
+ if lex.data[(lex.p)] == 58 {
+ goto st59
+ }
+ goto tr9
+ st59:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof59
+ }
+ st_case_59:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st60
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st60
+ }
+ default:
+ goto st60
+ }
+ goto tr9
+ st60:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof60
+ }
+ st_case_60:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st61
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st61
+ }
+ default:
+ goto st61
+ }
+ goto tr9
+ st61:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof61
+ }
+ st_case_61:
+ if lex.data[(lex.p)] == 58 {
+ goto st62
+ }
+ goto tr9
+ st62:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof62
+ }
+ st_case_62:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st63
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st63
+ }
+ default:
+ goto st63
+ }
+ goto tr9
+ st63:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof63
+ }
+ st_case_63:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st64
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st64
+ }
+ default:
+ goto st64
+ }
+ goto tr9
+ st64:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof64
+ }
+ st_case_64:
+ if lex.data[(lex.p)] == 58 {
+ goto st65
+ }
+ goto tr9
+ st65:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof65
+ }
+ st_case_65:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st66
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st66
+ }
+ default:
+ goto st66
+ }
+ goto tr9
+ st66:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof66
+ }
+ st_case_66:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st67
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st67
+ }
+ default:
+ goto st67
+ }
+ goto tr9
+ st67:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof67
+ }
+ st_case_67:
+ if lex.data[(lex.p)] == 58 {
+ goto st68
+ }
+ goto tr9
+ st68:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof68
+ }
+ st_case_68:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st69
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st69
+ }
+ default:
+ goto st69
+ }
+ goto tr9
+ st69:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof69
+ }
+ st_case_69:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr74
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto tr74
+ }
+ default:
+ goto tr74
+ }
+ goto tr9
+ tr204:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:70
+ lex.act = 3
+ goto st183
+ st183:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof183
+ }
+ st_case_183:
+//line lex.go:2323
+ switch lex.data[(lex.p)] {
+ case 46:
+ goto st33
+ case 58:
+ goto st56
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr216
+ }
+ goto tr201
+ st70:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof70
+ }
+ st_case_70:
+ if lex.data[(lex.p)] == 58 {
+ goto st56
+ }
+ goto tr9
+ st71:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof71
+ }
+ st_case_71:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st184
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st184
+ }
+ default:
+ goto st184
+ }
+ goto tr36
+ st184:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof184
+ }
+ st_case_184:
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st184
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st184
+ }
+ default:
+ goto st184
+ }
+ goto tr225
+ tr178:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:70
+ lex.act = 3
+ goto st185
+ st185:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof185
+ }
+ st_case_185:
+//line lex.go:2391
+ if lex.data[(lex.p)] == 46 {
+ goto st166
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr204
+ }
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 {
+ goto st70
+ }
+ default:
+ goto st70
+ }
+ goto tr201
+ st72:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof72
+ }
+ st_case_72:
+ switch lex.data[(lex.p)] {
+ case 46:
+ goto st73
+ case 60:
+ goto tr78
+ case 117:
+ goto st13
+ }
+ goto st0
+ st73:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof73
+ }
+ st_case_73:
+ if lex.data[(lex.p)] == 46 {
+ goto st74
+ }
+ goto st0
+ st74:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof74
+ }
+ st_case_74:
+ if lex.data[(lex.p)] == 46 {
+ goto st75
+ }
+ goto st0
+ st75:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof75
+ }
+ st_case_75:
+ if lex.data[(lex.p)] == 32 {
+ goto st76
+ }
+ goto st0
+ st76:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof76
+ }
+ st_case_76:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st77
+ case 58:
+ goto st77
+ case 114:
+ goto st102
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st87
+ }
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st77:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof77
+ }
+ st_case_77:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st78:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof78
+ }
+ st_case_78:
+ if lex.data[(lex.p)] == 114 {
+ goto st79
+ }
+ goto st0
+ st79:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof79
+ }
+ st_case_79:
+ if lex.data[(lex.p)] == 101 {
+ goto st80
+ }
+ goto st0
+ st80:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof80
+ }
+ st_case_80:
+ if lex.data[(lex.p)] == 115 {
+ goto st81
+ }
+ goto st0
+ st81:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof81
+ }
+ st_case_81:
+ if lex.data[(lex.p)] == 117 {
+ goto st82
+ }
+ goto st0
+ st82:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof82
+ }
+ st_case_82:
+ if lex.data[(lex.p)] == 109 {
+ goto st83
+ }
+ goto st0
+ st83:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof83
+ }
+ st_case_83:
+ if lex.data[(lex.p)] == 101 {
+ goto st84
+ }
+ goto st0
+ st84:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof84
+ }
+ st_case_84:
+ if lex.data[(lex.p)] == 100 {
+ goto st85
+ }
+ goto st0
+ st85:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof85
+ }
+ st_case_85:
+ if lex.data[(lex.p)] == 62 {
+ goto tr93
+ }
+ goto st0
+ tr93:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+ goto st186
+ st186:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof186
+ }
+ st_case_186:
+//line lex.go:2590
+ if lex.data[(lex.p)] == 32 {
+ goto st86
+ }
+ goto tr226
+ st86:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof86
+ }
+ st_case_86:
+ if lex.data[(lex.p)] == 44 {
+ goto tr95
+ }
+ goto tr94
+ st87:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof87
+ }
+ st_case_87:
+ if lex.data[(lex.p)] == 46 {
+ goto st88
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st100
+ }
+ goto st0
+ st88:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof88
+ }
+ st_case_88:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st89
+ }
+ goto st0
+ st89:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof89
+ }
+ st_case_89:
+ if lex.data[(lex.p)] == 46 {
+ goto st90
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st98
+ }
+ goto st0
+ st90:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof90
+ }
+ st_case_90:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st91
+ }
+ goto st0
+ st91:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof91
+ }
+ st_case_91:
+ if lex.data[(lex.p)] == 46 {
+ goto st92
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st96
+ }
+ goto st0
+ st92:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof92
+ }
+ st_case_92:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st93
+ }
+ goto st0
+ st93:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof93
+ }
+ st_case_93:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 58:
+ goto st77
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st94
+ }
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st94:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof94
+ }
+ st_case_94:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 46:
+ goto st88
+ case 58:
+ goto st77
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st95
+ }
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st95:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof95
+ }
+ st_case_95:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 46:
+ goto st88
+ case 58:
+ goto st77
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st87
+ }
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st96:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof96
+ }
+ st_case_96:
+ if lex.data[(lex.p)] == 46 {
+ goto st92
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st97
+ }
+ goto st0
+ st97:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof97
+ }
+ st_case_97:
+ if lex.data[(lex.p)] == 46 {
+ goto st92
+ }
+ goto st0
+ st98:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof98
+ }
+ st_case_98:
+ if lex.data[(lex.p)] == 46 {
+ goto st90
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st99
+ }
+ goto st0
+ st99:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof99
+ }
+ st_case_99:
+ if lex.data[(lex.p)] == 46 {
+ goto st90
+ }
+ goto st0
+ st100:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof100
+ }
+ st_case_100:
+ if lex.data[(lex.p)] == 46 {
+ goto st88
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st101
+ }
+ goto st0
+ st101:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof101
+ }
+ st_case_101:
+ if lex.data[(lex.p)] == 46 {
+ goto st88
+ }
+ goto st0
+ st102:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof102
+ }
+ st_case_102:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ case 101:
+ goto st103
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st103:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof103
+ }
+ st_case_103:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ case 115:
+ goto st104
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st104:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof104
+ }
+ st_case_104:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ case 117:
+ goto st105
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st105:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof105
+ }
+ st_case_105:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ case 109:
+ goto st106
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st106:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof106
+ }
+ st_case_106:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ case 105:
+ goto st107
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st107:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof107
+ }
+ st_case_107:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ case 110:
+ goto st108
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st108:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof108
+ }
+ st_case_108:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st78
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ case 103:
+ goto st109
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st109:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof109
+ }
+ st_case_109:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st110
+ case 39:
+ goto st77
+ case 42:
+ goto st77
+ case 95:
+ goto st77
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st77
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st77
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto st77
+ }
+ default:
+ goto st77
+ }
+ goto st0
+ st110:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof110
+ }
+ st_case_110:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st111
+ case 58:
+ goto st111
+ case 114:
+ goto st148
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st133
+ }
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st111:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof111
+ }
+ st_case_111:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st112
+ case 39:
+ goto st111
+ case 42:
+ goto st111
+ case 95:
+ goto st111
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st111
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st112:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof112
+ }
+ st_case_112:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st113
+ case 58:
+ goto st113
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st118
+ }
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st113
+ }
+ default:
+ goto st113
+ }
+ goto st0
+ st113:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof113
+ }
+ st_case_113:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st114
+ case 39:
+ goto st113
+ case 42:
+ goto st113
+ case 95:
+ goto st113
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st113
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st113
+ }
+ default:
+ goto st113
+ }
+ goto st0
+ st114:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof114
+ }
+ st_case_114:
+ if lex.data[(lex.p)] == 46 {
+ goto st115
+ }
+ goto st0
+ st115:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof115
+ }
+ st_case_115:
+ if lex.data[(lex.p)] == 46 {
+ goto st116
+ }
+ goto st0
+ st116:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof116
+ }
+ st_case_116:
+ if lex.data[(lex.p)] == 46 {
+ goto st117
+ }
+ goto st0
+ st117:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof117
+ }
+ st_case_117:
+ if lex.data[(lex.p)] == 62 {
+ goto tr95
+ }
+ goto st0
+ st118:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof118
+ }
+ st_case_118:
+ if lex.data[(lex.p)] == 46 {
+ goto st119
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st131
+ }
+ goto st0
+ st119:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof119
+ }
+ st_case_119:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st120
+ }
+ goto st0
+ st120:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof120
+ }
+ st_case_120:
+ if lex.data[(lex.p)] == 46 {
+ goto st121
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st129
+ }
+ goto st0
+ st121:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof121
+ }
+ st_case_121:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st122
+ }
+ goto st0
+ st122:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof122
+ }
+ st_case_122:
+ if lex.data[(lex.p)] == 46 {
+ goto st123
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st127
+ }
+ goto st0
+ st123:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof123
+ }
+ st_case_123:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st124
+ }
+ goto st0
+ st124:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof124
+ }
+ st_case_124:
+ if lex.data[(lex.p)] == 32 {
+ goto st114
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st125
+ }
+ goto st0
+ st125:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof125
+ }
+ st_case_125:
+ if lex.data[(lex.p)] == 32 {
+ goto st114
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st126
+ }
+ goto st0
+ st126:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof126
+ }
+ st_case_126:
+ if lex.data[(lex.p)] == 32 {
+ goto st114
+ }
+ goto st0
+ st127:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof127
+ }
+ st_case_127:
+ if lex.data[(lex.p)] == 46 {
+ goto st123
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st128
+ }
+ goto st0
+ st128:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof128
+ }
+ st_case_128:
+ if lex.data[(lex.p)] == 46 {
+ goto st123
+ }
+ goto st0
+ st129:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof129
+ }
+ st_case_129:
+ if lex.data[(lex.p)] == 46 {
+ goto st121
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st130
+ }
+ goto st0
+ st130:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof130
+ }
+ st_case_130:
+ if lex.data[(lex.p)] == 46 {
+ goto st121
+ }
+ goto st0
+ st131:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof131
+ }
+ st_case_131:
+ if lex.data[(lex.p)] == 46 {
+ goto st119
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st132
+ }
+ goto st0
+ st132:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof132
+ }
+ st_case_132:
+ if lex.data[(lex.p)] == 46 {
+ goto st119
+ }
+ goto st0
+ st133:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof133
+ }
+ st_case_133:
+ if lex.data[(lex.p)] == 46 {
+ goto st134
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st146
+ }
+ goto st0
+ st134:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof134
+ }
+ st_case_134:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st135
+ }
+ goto st0
+ st135:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof135
+ }
+ st_case_135:
+ if lex.data[(lex.p)] == 46 {
+ goto st136
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st144
+ }
+ goto st0
+ st136:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof136
+ }
+ st_case_136:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st137
+ }
+ goto st0
+ st137:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof137
+ }
+ st_case_137:
+ if lex.data[(lex.p)] == 46 {
+ goto st138
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st142
+ }
+ goto st0
+ st138:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof138
+ }
+ st_case_138:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st139
+ }
+ goto st0
+ st139:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof139
+ }
+ st_case_139:
+ if lex.data[(lex.p)] == 32 {
+ goto st112
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st140
+ }
+ goto st0
+ st140:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof140
+ }
+ st_case_140:
+ if lex.data[(lex.p)] == 32 {
+ goto st112
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st141
+ }
+ goto st0
+ st141:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof141
+ }
+ st_case_141:
+ if lex.data[(lex.p)] == 32 {
+ goto st112
+ }
+ goto st0
+ st142:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof142
+ }
+ st_case_142:
+ if lex.data[(lex.p)] == 46 {
+ goto st138
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st143
+ }
+ goto st0
+ st143:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof143
+ }
+ st_case_143:
+ if lex.data[(lex.p)] == 46 {
+ goto st138
+ }
+ goto st0
+ st144:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof144
+ }
+ st_case_144:
+ if lex.data[(lex.p)] == 46 {
+ goto st136
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st145
+ }
+ goto st0
+ st145:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof145
+ }
+ st_case_145:
+ if lex.data[(lex.p)] == 46 {
+ goto st136
+ }
+ goto st0
+ st146:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof146
+ }
+ st_case_146:
+ if lex.data[(lex.p)] == 46 {
+ goto st134
+ }
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st147
+ }
+ goto st0
+ st147:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof147
+ }
+ st_case_147:
+ if lex.data[(lex.p)] == 46 {
+ goto st134
+ }
+ goto st0
+ st148:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof148
+ }
+ st_case_148:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st112
+ case 39:
+ goto st111
+ case 42:
+ goto st111
+ case 95:
+ goto st111
+ case 101:
+ goto st149
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st111
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st149:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof149
+ }
+ st_case_149:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st112
+ case 39:
+ goto st111
+ case 42:
+ goto st111
+ case 95:
+ goto st111
+ case 115:
+ goto st150
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st111
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st150:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof150
+ }
+ st_case_150:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st112
+ case 39:
+ goto st111
+ case 42:
+ goto st111
+ case 95:
+ goto st111
+ case 117:
+ goto st151
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st111
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st151:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof151
+ }
+ st_case_151:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st112
+ case 39:
+ goto st111
+ case 42:
+ goto st111
+ case 95:
+ goto st111
+ case 109:
+ goto st152
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st111
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st152:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof152
+ }
+ st_case_152:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st112
+ case 39:
+ goto st111
+ case 42:
+ goto st111
+ case 95:
+ goto st111
+ case 101:
+ goto st153
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st111
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st153:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof153
+ }
+ st_case_153:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st112
+ case 39:
+ goto st111
+ case 42:
+ goto st111
+ case 95:
+ goto st111
+ case 100:
+ goto st154
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st111
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st154:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof154
+ }
+ st_case_154:
+ switch lex.data[(lex.p)] {
+ case 32:
+ goto st112
+ case 39:
+ goto st111
+ case 42:
+ goto st111
+ case 62:
+ goto tr93
+ case 95:
+ goto st111
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st111
+ }
+ case lex.data[(lex.p)] > 58:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st111
+ }
+ default:
+ goto st111
+ }
+ goto st0
+ st187:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof187
+ }
+ st_case_187:
+ switch lex.data[(lex.p)] {
+ case 62:
+ goto tr229
+ case 64:
+ goto tr230
+ }
+ goto tr228
+ st155:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof155
+ }
+ st_case_155:
+ if lex.data[(lex.p)] == 62 {
+ goto tr162
+ }
+ goto st0
+ st188:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof188
+ }
+ st_case_188:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr231
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto tr231
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st190
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] < 97:
+ if 71 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 90 {
+ goto tr10
+ }
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ default:
+ goto st206
+ }
+ default:
+ goto tr233
+ }
+ goto tr194
+ tr231:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:76
+ lex.act = 9
+ goto st189
+ tr185:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st189
+ st189:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof189
+ }
+ st_case_189:
+//line lex.go:3842
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr231
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto tr231
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto tr10
+ }
+ default:
+ goto tr231
+ }
+ goto tr9
+ st190:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof190
+ }
+ st_case_190:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr231
+ case 42:
+ goto st160
+ case 58:
+ goto tr236
+ case 95:
+ goto tr231
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto tr10
+ }
+ default:
+ goto tr231
+ }
+ goto tr235
+ tr236:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st191
+ st191:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof191
+ }
+ st_case_191:
+//line lex.go:3916
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr237
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto tr237
+ }
+ default:
+ goto st57
+ }
+ goto tr194
+ tr237:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st192
+ st192:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof192
+ }
+ st_case_192:
+//line lex.go:3962
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st193
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto st193
+ }
+ default:
+ goto st58
+ }
+ goto tr194
+ st193:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof193
+ }
+ st_case_193:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto tr239
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 57:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ default:
+ goto st160
+ }
+ goto tr194
+ tr239:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st194
+ st194:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof194
+ }
+ st_case_194:
+//line lex.go:4036
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr240
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto tr240
+ }
+ default:
+ goto st60
+ }
+ goto tr194
+ tr240:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st195
+ st195:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof195
+ }
+ st_case_195:
+//line lex.go:4082
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st196
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto st196
+ }
+ default:
+ goto st61
+ }
+ goto tr194
+ st196:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof196
+ }
+ st_case_196:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto tr242
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 57:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ default:
+ goto st160
+ }
+ goto tr194
+ tr242:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st197
+ st197:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof197
+ }
+ st_case_197:
+//line lex.go:4156
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr243
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto tr243
+ }
+ default:
+ goto st63
+ }
+ goto tr194
+ tr243:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st198
+ st198:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof198
+ }
+ st_case_198:
+//line lex.go:4202
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st199
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto st199
+ }
+ default:
+ goto st64
+ }
+ goto tr194
+ st199:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof199
+ }
+ st_case_199:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto tr245
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 57:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ default:
+ goto st160
+ }
+ goto tr194
+ tr245:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st200
+ st200:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof200
+ }
+ st_case_200:
+//line lex.go:4276
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto tr246
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto tr246
+ }
+ default:
+ goto st66
+ }
+ goto tr194
+ tr246:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st201
+ st201:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof201
+ }
+ st_case_201:
+//line lex.go:4322
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st202
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto st202
+ }
+ default:
+ goto st67
+ }
+ goto tr194
+ st202:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof202
+ }
+ st_case_202:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto tr248
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 57:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ default:
+ goto st160
+ }
+ goto tr194
+ tr248:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st203
+ st203:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof203
+ }
+ st_case_203:
+//line lex.go:4396
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st204
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto st204
+ }
+ default:
+ goto st69
+ }
+ goto tr194
+ st204:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof204
+ }
+ st_case_204:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 58:
+ switch {
+ case lex.data[(lex.p)] > 70:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto tr74
+ }
+ default:
+ goto st160
+ }
+ goto tr194
+ tr233:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:76
+ lex.act = 9
+ goto st205
+ st205:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof205
+ }
+ st_case_205:
+//line lex.go:4473
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr10
+ case 58:
+ goto st56
+ case 95:
+ goto tr10
+ }
+ switch {
+ case lex.data[(lex.p)] > 57:
+ if 65 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 90 {
+ goto tr10
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto tr10
+ }
+ goto tr235
+ st206:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof206
+ }
+ st_case_206:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto tr236
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 57:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ default:
+ goto st160
+ }
+ goto tr194
+ st207:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof207
+ }
+ st_case_207:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr231
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 85:
+ goto st208
+ case 95:
+ goto tr231
+ }
+ switch {
+ case lex.data[(lex.p)] < 48:
+ if 45 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 46 {
+ goto st160
+ }
+ case lex.data[(lex.p)] > 57:
+ switch {
+ case lex.data[(lex.p)] > 90:
+ if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 65:
+ goto tr10
+ }
+ default:
+ goto tr231
+ }
+ goto tr194
+ st208:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof208
+ }
+ st_case_208:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr10
+ case 76:
+ goto st209
+ case 95:
+ goto tr10
+ }
+ switch {
+ case lex.data[(lex.p)] > 57:
+ if 65 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 90 {
+ goto tr10
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto tr10
+ }
+ goto tr235
+ st209:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof209
+ }
+ st_case_209:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto tr10
+ case 76:
+ goto tr252
+ case 95:
+ goto tr10
+ }
+ switch {
+ case lex.data[(lex.p)] > 57:
+ if 65 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 90 {
+ goto tr10
+ }
+ case lex.data[(lex.p)] >= 48:
+ goto tr10
+ }
+ goto tr235
+ st156:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof156
+ }
+ st_case_156:
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st156
+ case 95:
+ goto st156
+ }
+ if 65 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 90 {
+ goto st9
+ }
+ goto st0
+ tr189:
+//line NONE:1
+ lex.te = (lex.p) + 1
+
+//line straceLex.rl:78
+ lex.act = 11
+ goto st210
+ st210:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof210
+ }
+ st_case_210:
+//line lex.go:4625
+ switch lex.data[(lex.p)] {
+ case 39:
+ goto st160
+ case 42:
+ goto st160
+ case 58:
+ goto st160
+ case 95:
+ goto st160
+ }
+ switch {
+ case lex.data[(lex.p)] < 65:
+ switch {
+ case lex.data[(lex.p)] > 46:
+ if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 {
+ goto st206
+ }
+ case lex.data[(lex.p)] >= 45:
+ goto st160
+ }
+ case lex.data[(lex.p)] > 70:
+ switch {
+ case lex.data[(lex.p)] > 102:
+ if 103 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 122 {
+ goto st160
+ }
+ case lex.data[(lex.p)] >= 97:
+ goto st206
+ }
+ default:
+ goto st70
+ }
+ goto tr194
+ tr253:
+//line straceLex.rl:65
+ lex.te = (lex.p) + 1
+
+ goto st211
+ tr255:
+//line straceLex.rl:65
+ lex.te = (lex.p)
+ (lex.p)--
+
+ goto st211
+ tr256:
+//line straceLex.rl:66
+ lex.te = (lex.p) + 1
+ {
+ {
+ goto st157
+ }
+ }
+ goto st211
+ st211:
+//line NONE:1
+ lex.ts = 0
+
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof211
+ }
+ st_case_211:
+//line NONE:1
+ lex.ts = (lex.p)
+
+//line lex.go:4686
+ if lex.data[(lex.p)] == 42 {
+ goto st212
+ }
+ goto tr253
+ st212:
+ if (lex.p)++; (lex.p) == (lex.pe) {
+ goto _test_eof212
+ }
+ st_case_212:
+ if lex.data[(lex.p)] == 47 {
+ goto tr256
+ }
+ goto tr255
+ st_out:
+ _test_eof157:
+ lex.cs = 157
+ goto _test_eof
+ _test_eof1:
+ lex.cs = 1
+ goto _test_eof
+ _test_eof2:
+ lex.cs = 2
+ goto _test_eof
+ _test_eof158:
+ lex.cs = 158
+ goto _test_eof
+ _test_eof3:
+ lex.cs = 3
+ goto _test_eof
+ _test_eof4:
+ lex.cs = 4
+ goto _test_eof
+ _test_eof5:
+ lex.cs = 5
+ goto _test_eof
+ _test_eof6:
+ lex.cs = 6
+ goto _test_eof
+ _test_eof7:
+ lex.cs = 7
+ goto _test_eof
+ _test_eof8:
+ lex.cs = 8
+ goto _test_eof
+ _test_eof159:
+ lex.cs = 159
+ goto _test_eof
+ _test_eof160:
+ lex.cs = 160
+ goto _test_eof
+ _test_eof9:
+ lex.cs = 9
+ goto _test_eof
+ _test_eof161:
+ lex.cs = 161
+ goto _test_eof
+ _test_eof162:
+ lex.cs = 162
+ goto _test_eof
+ _test_eof10:
+ lex.cs = 10
+ goto _test_eof
+ _test_eof11:
+ lex.cs = 11
+ goto _test_eof
+ _test_eof12:
+ lex.cs = 12
+ goto _test_eof
+ _test_eof13:
+ lex.cs = 13
+ goto _test_eof
+ _test_eof14:
+ lex.cs = 14
+ goto _test_eof
+ _test_eof15:
+ lex.cs = 15
+ goto _test_eof
+ _test_eof16:
+ lex.cs = 16
+ goto _test_eof
+ _test_eof17:
+ lex.cs = 17
+ goto _test_eof
+ _test_eof18:
+ lex.cs = 18
+ goto _test_eof
+ _test_eof19:
+ lex.cs = 19
+ goto _test_eof
+ _test_eof20:
+ lex.cs = 20
+ goto _test_eof
+ _test_eof21:
+ lex.cs = 21
+ goto _test_eof
+ _test_eof22:
+ lex.cs = 22
+ goto _test_eof
+ _test_eof23:
+ lex.cs = 23
+ goto _test_eof
+ _test_eof24:
+ lex.cs = 24
+ goto _test_eof
+ _test_eof25:
+ lex.cs = 25
+ goto _test_eof
+ _test_eof26:
+ lex.cs = 26
+ goto _test_eof
+ _test_eof163:
+ lex.cs = 163
+ goto _test_eof
+ _test_eof27:
+ lex.cs = 27
+ goto _test_eof
+ _test_eof164:
+ lex.cs = 164
+ goto _test_eof
+ _test_eof165:
+ lex.cs = 165
+ goto _test_eof
+ _test_eof166:
+ lex.cs = 166
+ goto _test_eof
+ _test_eof167:
+ lex.cs = 167
+ goto _test_eof
+ _test_eof28:
+ lex.cs = 28
+ goto _test_eof
+ _test_eof29:
+ lex.cs = 29
+ goto _test_eof
+ _test_eof30:
+ lex.cs = 30
+ goto _test_eof
+ _test_eof168:
+ lex.cs = 168
+ goto _test_eof
+ _test_eof169:
+ lex.cs = 169
+ goto _test_eof
+ _test_eof31:
+ lex.cs = 31
+ goto _test_eof
+ _test_eof32:
+ lex.cs = 32
+ goto _test_eof
+ _test_eof170:
+ lex.cs = 170
+ goto _test_eof
+ _test_eof171:
+ lex.cs = 171
+ goto _test_eof
+ _test_eof172:
+ lex.cs = 172
+ goto _test_eof
+ _test_eof173:
+ lex.cs = 173
+ goto _test_eof
+ _test_eof33:
+ lex.cs = 33
+ goto _test_eof
+ _test_eof34:
+ lex.cs = 34
+ goto _test_eof
+ _test_eof35:
+ lex.cs = 35
+ goto _test_eof
+ _test_eof36:
+ lex.cs = 36
+ goto _test_eof
+ _test_eof174:
+ lex.cs = 174
+ goto _test_eof
+ _test_eof175:
+ lex.cs = 175
+ goto _test_eof
+ _test_eof37:
+ lex.cs = 37
+ goto _test_eof
+ _test_eof38:
+ lex.cs = 38
+ goto _test_eof
+ _test_eof39:
+ lex.cs = 39
+ goto _test_eof
+ _test_eof40:
+ lex.cs = 40
+ goto _test_eof
+ _test_eof41:
+ lex.cs = 41
+ goto _test_eof
+ _test_eof42:
+ lex.cs = 42
+ goto _test_eof
+ _test_eof43:
+ lex.cs = 43
+ goto _test_eof
+ _test_eof44:
+ lex.cs = 44
+ goto _test_eof
+ _test_eof45:
+ lex.cs = 45
+ goto _test_eof
+ _test_eof46:
+ lex.cs = 46
+ goto _test_eof
+ _test_eof47:
+ lex.cs = 47
+ goto _test_eof
+ _test_eof48:
+ lex.cs = 48
+ goto _test_eof
+ _test_eof49:
+ lex.cs = 49
+ goto _test_eof
+ _test_eof50:
+ lex.cs = 50
+ goto _test_eof
+ _test_eof176:
+ lex.cs = 176
+ goto _test_eof
+ _test_eof51:
+ lex.cs = 51
+ goto _test_eof
+ _test_eof52:
+ lex.cs = 52
+ goto _test_eof
+ _test_eof53:
+ lex.cs = 53
+ goto _test_eof
+ _test_eof54:
+ lex.cs = 54
+ goto _test_eof
+ _test_eof177:
+ lex.cs = 177
+ goto _test_eof
+ _test_eof55:
+ lex.cs = 55
+ goto _test_eof
+ _test_eof178:
+ lex.cs = 178
+ goto _test_eof
+ _test_eof179:
+ lex.cs = 179
+ goto _test_eof
+ _test_eof180:
+ lex.cs = 180
+ goto _test_eof
+ _test_eof181:
+ lex.cs = 181
+ goto _test_eof
+ _test_eof182:
+ lex.cs = 182
+ goto _test_eof
+ _test_eof56:
+ lex.cs = 56
+ goto _test_eof
+ _test_eof57:
+ lex.cs = 57
+ goto _test_eof
+ _test_eof58:
+ lex.cs = 58
+ goto _test_eof
+ _test_eof59:
+ lex.cs = 59
+ goto _test_eof
+ _test_eof60:
+ lex.cs = 60
+ goto _test_eof
+ _test_eof61:
+ lex.cs = 61
+ goto _test_eof
+ _test_eof62:
+ lex.cs = 62
+ goto _test_eof
+ _test_eof63:
+ lex.cs = 63
+ goto _test_eof
+ _test_eof64:
+ lex.cs = 64
+ goto _test_eof
+ _test_eof65:
+ lex.cs = 65
+ goto _test_eof
+ _test_eof66:
+ lex.cs = 66
+ goto _test_eof
+ _test_eof67:
+ lex.cs = 67
+ goto _test_eof
+ _test_eof68:
+ lex.cs = 68
+ goto _test_eof
+ _test_eof69:
+ lex.cs = 69
+ goto _test_eof
+ _test_eof183:
+ lex.cs = 183
+ goto _test_eof
+ _test_eof70:
+ lex.cs = 70
+ goto _test_eof
+ _test_eof71:
+ lex.cs = 71
+ goto _test_eof
+ _test_eof184:
+ lex.cs = 184
+ goto _test_eof
+ _test_eof185:
+ lex.cs = 185
+ goto _test_eof
+ _test_eof72:
+ lex.cs = 72
+ goto _test_eof
+ _test_eof73:
+ lex.cs = 73
+ goto _test_eof
+ _test_eof74:
+ lex.cs = 74
+ goto _test_eof
+ _test_eof75:
+ lex.cs = 75
+ goto _test_eof
+ _test_eof76:
+ lex.cs = 76
+ goto _test_eof
+ _test_eof77:
+ lex.cs = 77
+ goto _test_eof
+ _test_eof78:
+ lex.cs = 78
+ goto _test_eof
+ _test_eof79:
+ lex.cs = 79
+ goto _test_eof
+ _test_eof80:
+ lex.cs = 80
+ goto _test_eof
+ _test_eof81:
+ lex.cs = 81
+ goto _test_eof
+ _test_eof82:
+ lex.cs = 82
+ goto _test_eof
+ _test_eof83:
+ lex.cs = 83
+ goto _test_eof
+ _test_eof84:
+ lex.cs = 84
+ goto _test_eof
+ _test_eof85:
+ lex.cs = 85
+ goto _test_eof
+ _test_eof186:
+ lex.cs = 186
+ goto _test_eof
+ _test_eof86:
+ lex.cs = 86
+ goto _test_eof
+ _test_eof87:
+ lex.cs = 87
+ goto _test_eof
+ _test_eof88:
+ lex.cs = 88
+ goto _test_eof
+ _test_eof89:
+ lex.cs = 89
+ goto _test_eof
+ _test_eof90:
+ lex.cs = 90
+ goto _test_eof
+ _test_eof91:
+ lex.cs = 91
+ goto _test_eof
+ _test_eof92:
+ lex.cs = 92
+ goto _test_eof
+ _test_eof93:
+ lex.cs = 93
+ goto _test_eof
+ _test_eof94:
+ lex.cs = 94
+ goto _test_eof
+ _test_eof95:
+ lex.cs = 95
+ goto _test_eof
+ _test_eof96:
+ lex.cs = 96
+ goto _test_eof
+ _test_eof97:
+ lex.cs = 97
+ goto _test_eof
+ _test_eof98:
+ lex.cs = 98
+ goto _test_eof
+ _test_eof99:
+ lex.cs = 99
+ goto _test_eof
+ _test_eof100:
+ lex.cs = 100
+ goto _test_eof
+ _test_eof101:
+ lex.cs = 101
+ goto _test_eof
+ _test_eof102:
+ lex.cs = 102
+ goto _test_eof
+ _test_eof103:
+ lex.cs = 103
+ goto _test_eof
+ _test_eof104:
+ lex.cs = 104
+ goto _test_eof
+ _test_eof105:
+ lex.cs = 105
+ goto _test_eof
+ _test_eof106:
+ lex.cs = 106
+ goto _test_eof
+ _test_eof107:
+ lex.cs = 107
+ goto _test_eof
+ _test_eof108:
+ lex.cs = 108
+ goto _test_eof
+ _test_eof109:
+ lex.cs = 109
+ goto _test_eof
+ _test_eof110:
+ lex.cs = 110
+ goto _test_eof
+ _test_eof111:
+ lex.cs = 111
+ goto _test_eof
+ _test_eof112:
+ lex.cs = 112
+ goto _test_eof
+ _test_eof113:
+ lex.cs = 113
+ goto _test_eof
+ _test_eof114:
+ lex.cs = 114
+ goto _test_eof
+ _test_eof115:
+ lex.cs = 115
+ goto _test_eof
+ _test_eof116:
+ lex.cs = 116
+ goto _test_eof
+ _test_eof117:
+ lex.cs = 117
+ goto _test_eof
+ _test_eof118:
+ lex.cs = 118
+ goto _test_eof
+ _test_eof119:
+ lex.cs = 119
+ goto _test_eof
+ _test_eof120:
+ lex.cs = 120
+ goto _test_eof
+ _test_eof121:
+ lex.cs = 121
+ goto _test_eof
+ _test_eof122:
+ lex.cs = 122
+ goto _test_eof
+ _test_eof123:
+ lex.cs = 123
+ goto _test_eof
+ _test_eof124:
+ lex.cs = 124
+ goto _test_eof
+ _test_eof125:
+ lex.cs = 125
+ goto _test_eof
+ _test_eof126:
+ lex.cs = 126
+ goto _test_eof
+ _test_eof127:
+ lex.cs = 127
+ goto _test_eof
+ _test_eof128:
+ lex.cs = 128
+ goto _test_eof
+ _test_eof129:
+ lex.cs = 129
+ goto _test_eof
+ _test_eof130:
+ lex.cs = 130
+ goto _test_eof
+ _test_eof131:
+ lex.cs = 131
+ goto _test_eof
+ _test_eof132:
+ lex.cs = 132
+ goto _test_eof
+ _test_eof133:
+ lex.cs = 133
+ goto _test_eof
+ _test_eof134:
+ lex.cs = 134
+ goto _test_eof
+ _test_eof135:
+ lex.cs = 135
+ goto _test_eof
+ _test_eof136:
+ lex.cs = 136
+ goto _test_eof
+ _test_eof137:
+ lex.cs = 137
+ goto _test_eof
+ _test_eof138:
+ lex.cs = 138
+ goto _test_eof
+ _test_eof139:
+ lex.cs = 139
+ goto _test_eof
+ _test_eof140:
+ lex.cs = 140
+ goto _test_eof
+ _test_eof141:
+ lex.cs = 141
+ goto _test_eof
+ _test_eof142:
+ lex.cs = 142
+ goto _test_eof
+ _test_eof143:
+ lex.cs = 143
+ goto _test_eof
+ _test_eof144:
+ lex.cs = 144
+ goto _test_eof
+ _test_eof145:
+ lex.cs = 145
+ goto _test_eof
+ _test_eof146:
+ lex.cs = 146
+ goto _test_eof
+ _test_eof147:
+ lex.cs = 147
+ goto _test_eof
+ _test_eof148:
+ lex.cs = 148
+ goto _test_eof
+ _test_eof149:
+ lex.cs = 149
+ goto _test_eof
+ _test_eof150:
+ lex.cs = 150
+ goto _test_eof
+ _test_eof151:
+ lex.cs = 151
+ goto _test_eof
+ _test_eof152:
+ lex.cs = 152
+ goto _test_eof
+ _test_eof153:
+ lex.cs = 153
+ goto _test_eof
+ _test_eof154:
+ lex.cs = 154
+ goto _test_eof
+ _test_eof187:
+ lex.cs = 187
+ goto _test_eof
+ _test_eof155:
+ lex.cs = 155
+ goto _test_eof
+ _test_eof188:
+ lex.cs = 188
+ goto _test_eof
+ _test_eof189:
+ lex.cs = 189
+ goto _test_eof
+ _test_eof190:
+ lex.cs = 190
+ goto _test_eof
+ _test_eof191:
+ lex.cs = 191
+ goto _test_eof
+ _test_eof192:
+ lex.cs = 192
+ goto _test_eof
+ _test_eof193:
+ lex.cs = 193
+ goto _test_eof
+ _test_eof194:
+ lex.cs = 194
+ goto _test_eof
+ _test_eof195:
+ lex.cs = 195
+ goto _test_eof
+ _test_eof196:
+ lex.cs = 196
+ goto _test_eof
+ _test_eof197:
+ lex.cs = 197
+ goto _test_eof
+ _test_eof198:
+ lex.cs = 198
+ goto _test_eof
+ _test_eof199:
+ lex.cs = 199
+ goto _test_eof
+ _test_eof200:
+ lex.cs = 200
+ goto _test_eof
+ _test_eof201:
+ lex.cs = 201
+ goto _test_eof
+ _test_eof202:
+ lex.cs = 202
+ goto _test_eof
+ _test_eof203:
+ lex.cs = 203
+ goto _test_eof
+ _test_eof204:
+ lex.cs = 204
+ goto _test_eof
+ _test_eof205:
+ lex.cs = 205
+ goto _test_eof
+ _test_eof206:
+ lex.cs = 206
+ goto _test_eof
+ _test_eof207:
+ lex.cs = 207
+ goto _test_eof
+ _test_eof208:
+ lex.cs = 208
+ goto _test_eof
+ _test_eof209:
+ lex.cs = 209
+ goto _test_eof
+ _test_eof156:
+ lex.cs = 156
+ goto _test_eof
+ _test_eof210:
+ lex.cs = 210
+ goto _test_eof
+ _test_eof211:
+ lex.cs = 211
+ goto _test_eof
+ _test_eof212:
+ lex.cs = 212
+ goto _test_eof
+
+ _test_eof:
+ {
+ }
+ if (lex.p) == eof {
+ switch lex.cs {
+ case 158:
+ goto tr193
+ case 159:
+ goto tr194
+ case 160:
+ goto tr194
+ case 9:
+ goto tr9
+ case 161:
+ goto tr9
+ case 162:
+ goto tr195
+ case 10:
+ goto tr11
+ case 11:
+ goto tr11
+ case 12:
+ goto tr11
+ case 13:
+ goto tr9
+ case 14:
+ goto tr9
+ case 15:
+ goto tr9
+ case 16:
+ goto tr9
+ case 17:
+ goto tr9
+ case 18:
+ goto tr9
+ case 19:
+ goto tr9
+ case 20:
+ goto tr9
+ case 21:
+ goto tr9
+ case 22:
+ goto tr9
+ case 23:
+ goto tr9
+ case 24:
+ goto tr9
+ case 25:
+ goto tr9
+ case 26:
+ goto tr9
+ case 163:
+ goto tr197
+ case 164:
+ goto tr199
+ case 165:
+ goto tr201
+ case 166:
+ goto tr207
+ case 167:
+ goto tr207
+ case 28:
+ goto tr9
+ case 29:
+ goto tr9
+ case 30:
+ goto tr9
+ case 168:
+ goto tr194
+ case 169:
+ goto tr194
+ case 31:
+ goto tr9
+ case 32:
+ goto tr9
+ case 170:
+ goto tr207
+ case 171:
+ goto tr207
+ case 172:
+ goto tr207
+ case 173:
+ goto tr201
+ case 33:
+ goto tr36
+ case 34:
+ goto tr36
+ case 35:
+ goto tr36
+ case 36:
+ goto tr36
+ case 174:
+ goto tr201
+ case 175:
+ goto tr201
+ case 37:
+ goto tr36
+ case 38:
+ goto tr36
+ case 39:
+ goto tr36
+ case 40:
+ goto tr36
+ case 41:
+ goto tr36
+ case 42:
+ goto tr36
+ case 43:
+ goto tr36
+ case 44:
+ goto tr36
+ case 45:
+ goto tr36
+ case 46:
+ goto tr36
+ case 47:
+ goto tr36
+ case 48:
+ goto tr36
+ case 49:
+ goto tr36
+ case 50:
+ goto tr36
+ case 176:
+ goto tr222
+ case 51:
+ goto tr55
+ case 52:
+ goto tr55
+ case 53:
+ goto tr55
+ case 54:
+ goto tr55
+ case 177:
+ goto tr222
+ case 55:
+ goto tr55
+ case 178:
+ goto tr222
+ case 179:
+ goto tr201
+ case 180:
+ goto tr201
+ case 181:
+ goto tr201
+ case 182:
+ goto tr201
+ case 56:
+ goto tr9
+ case 57:
+ goto tr9
+ case 58:
+ goto tr9
+ case 59:
+ goto tr9
+ case 60:
+ goto tr9
+ case 61:
+ goto tr9
+ case 62:
+ goto tr9
+ case 63:
+ goto tr9
+ case 64:
+ goto tr9
+ case 65:
+ goto tr9
+ case 66:
+ goto tr9
+ case 67:
+ goto tr9
+ case 68:
+ goto tr9
+ case 69:
+ goto tr9
+ case 183:
+ goto tr201
+ case 70:
+ goto tr9
+ case 71:
+ goto tr36
+ case 184:
+ goto tr225
+ case 185:
+ goto tr201
+ case 186:
+ goto tr226
+ case 86:
+ goto tr94
+ case 187:
+ goto tr228
+ case 188:
+ goto tr194
+ case 189:
+ goto tr9
+ case 190:
+ goto tr235
+ case 191:
+ goto tr194
+ case 192:
+ goto tr194
+ case 193:
+ goto tr194
+ case 194:
+ goto tr194
+ case 195:
+ goto tr194
+ case 196:
+ goto tr194
+ case 197:
+ goto tr194
+ case 198:
+ goto tr194
+ case 199:
+ goto tr194
+ case 200:
+ goto tr194
+ case 201:
+ goto tr194
+ case 202:
+ goto tr194
+ case 203:
+ goto tr194
+ case 204:
+ goto tr194
+ case 205:
+ goto tr235
+ case 206:
+ goto tr194
+ case 207:
+ goto tr194
+ case 208:
+ goto tr235
+ case 209:
+ goto tr235
+ case 210:
+ goto tr194
+ case 212:
+ goto tr255
+ }
+ }
+
+ _out:
+ {
+ }
+ }
+
+//line straceLex.rl:111
+ return tok
+}
+
+func (lex *Stracelexer) Error(e string) {
+ fmt.Println("error:", e)
+}
+
+func ParseString(s string) string {
+ var decoded []byte
+ var err error
+ var strippedStr string
+ strippedStr = strings.Replace(s, `\x`, "", -1)
+ strippedStr = strings.Replace(strippedStr, `"`, "", -1)
+
+ if decoded, err = hex.DecodeString(strippedStr); err != nil {
+ log.Logf(2, "failed to decode string: %s, with error: %s", s, err.Error())
+ decoded = []byte(strippedStr)
+ }
+ decoded = append(decoded, '\x00')
+ return string(decoded)
+}
diff --git a/tools/syz-trace2syz/parser/parser.go b/tools/syz-trace2syz/parser/parser.go
new file mode 100644
index 000000000..e79cc5ac2
--- /dev/null
+++ b/tools/syz-trace2syz/parser/parser.go
@@ -0,0 +1,73 @@
+// Copyright 2018 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package parser
+
+import (
+ "bufio"
+ "io/ioutil"
+ "strings"
+
+ "github.com/google/syzkaller/pkg/log"
+)
+
+const (
+ maxBufferSize = 64 * 1024 * 1024 // maxBufferSize is maximum size for buffer
+ sysrestart = "ERESTART" // SYSRESTART corresponds to the error code of ERESTART.
+ signalPlus = "+++" // SignalPlus marks +++
+ signalMinus = "---" // SignalPlus marks ---
+ noSuchProcess = "<ptrace(SYSCALL):No such process>" // No such process error. Nothing worth parsing
+)
+
+func parseSyscall(scanner *bufio.Scanner) (int, *Syscall) {
+ lex := newStraceLexer(scanner.Bytes())
+ ret := StraceParse(lex)
+ return ret, lex.result
+}
+
+func shouldSkip(line string) bool {
+ restart := strings.Contains(line, sysrestart)
+ signalPlus := strings.Contains(line, signalPlus)
+ signalMinus := strings.Contains(line, signalMinus)
+ noProcess := strings.Contains(line, noSuchProcess)
+ return restart || signalPlus || signalMinus || noProcess
+}
+
+// ParseLoop parses each line of a strace file in a loop
+func ParseLoop(data string) (tree *TraceTree) {
+ tree = NewTraceTree()
+ // Creating the process tree
+ buf := make([]byte, maxBufferSize)
+ scanner := bufio.NewScanner(strings.NewReader(data))
+ scanner.Buffer(buf, maxBufferSize)
+
+ for scanner.Scan() {
+ line := scanner.Text()
+ if shouldSkip(line) {
+ continue
+ }
+ log.Logf(4, "scanning call: %s", line)
+ ret, call := parseSyscall(scanner)
+ if call == nil || ret != 0 {
+ log.Fatalf("failed to parse line: %s", line)
+ }
+ tree.add(call)
+ }
+ if len(tree.Ptree) == 0 {
+ return nil
+ }
+ return
+}
+
+// Parse parses a trace of system calls and returns an intermediate representation
+func Parse(filename string) *TraceTree {
+ data, err := ioutil.ReadFile(filename)
+ if err != nil {
+ log.Fatalf("error reading file: %s", err.Error())
+ }
+ tree := ParseLoop(string(data))
+ if tree != nil {
+ tree.Filename = filename
+ }
+ return tree
+}
diff --git a/tools/syz-trace2syz/parser/parser_test.go b/tools/syz-trace2syz/parser/parser_test.go
new file mode 100644
index 000000000..5304f4fa3
--- /dev/null
+++ b/tools/syz-trace2syz/parser/parser_test.go
@@ -0,0 +1,196 @@
+// Copyright 2018 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package parser
+
+import (
+ "testing"
+
+ _ "github.com/google/syzkaller/sys"
+)
+
+func TestParseLoopBasic(t *testing.T) {
+
+ tests := []string{
+ `open() = 3
+ fstat() = 0`,
+ `open() = 0x73ffddabc
+ fstat() = 0`,
+ `open() = -1 ENOSPEC (something)
+ fstat() = 0`,
+ `open( , <unfinished ...>
+ <... open resumed>) = 3
+ fstat() = 0`,
+ `open( , <unfinished ...>
+ <... open resumed> , 2) = 3
+ fstat() = 0`,
+ `open( <unfinished ...>
+ <... open resumed>) = 3
+ fstat() = 0`,
+ `open( <unfinished ...>
+ <... open resumed>) = 0x44277ffff
+ fstat() = 0`,
+ `open( <unfinished ...>
+ <... open resumed>) = ?
+ fstat() = 0`,
+ `open( <unfinished ...>
+ <... open resumed>) = -1 FLAG (sdfjfjfjf)
+ fstat() = 0`,
+ `open(1, <unfinished ...>
+ <... open resumed> , 0x1|0x2) = -1 FLAG (sdfjfjfjf)
+ fstat() = 0`,
+ `open([0x1, 0x2], NULL, {tv_sec=5, tv_nsec=0}, 8 <unfinished ...>
+ <... rt_sigtimedwait resumed> ) = 10 (SIGUSR1)
+ fstat() = 0`,
+ `open(0, 536892418, {c_cc[VMIN]=1, c_cc[VTIME]=0} <unfinished ...>
+ <... open resumed> , 0x1|0x2) = -1 FLAG (sdfjfjfjf)
+ fstat() = 0`,
+ `open(-19) = 0
+ fstat() = 0`,
+ `open(1 + 2) = 0
+ fstat() = 0`,
+ `open(3 - 1) = 0
+ fstat() = 0`,
+ `open(1075599392, 0x20000000) = -1 EBADF (Bad file descriptor)
+ fstat() = 0`,
+ `open() = -1 EIO (Input/output error)
+ fstat() = 0`,
+ `open(113->114) = -1 EIO (Input/output error)
+ fstat() = 0`,
+ }
+
+ for _, test := range tests {
+ tree := ParseLoop(test)
+ if tree.RootPid != -1 {
+ t.Fatalf("Incorrect Root Pid: %d", tree.RootPid)
+ }
+
+ calls := tree.TraceMap[tree.RootPid].Calls
+ if len(calls) != 2 {
+ t.Fatalf("expected 2 calls. Got %d instead", len(calls))
+ }
+ if calls[0].CallName != "open" || calls[1].CallName != "fstat" {
+ t.Fatalf("call list should be open->fstat. Got %s->%s", calls[0].CallName, calls[1].CallName)
+ }
+ }
+}
+
+func TestEvaluateExpressions(t *testing.T) {
+ type ExprTest struct {
+ line string
+ expectedEval uint64
+ }
+ tests := []ExprTest{
+ {"open(0x1) = 0", 1},
+ {"open(1) = 0", 1},
+ {"open(0x1|0x2) = 0", 3},
+ {"open(0x1|2) = 0", 3},
+ {"open(1 << 5) = 0", 32},
+ {"open(1 << 5|1) = 0", 33},
+ {"open(1 & 0) = 0", 0},
+ {"open(1 + 2) = 0", 3},
+ {"open(1-2) = 0", ^uint64(0)},
+ {"open(4 >> 1) = 0", 2},
+ }
+ for i, test := range tests {
+ tree := ParseLoop(test.line)
+ if tree.RootPid != -1 {
+ t.Fatalf("failed test: %d. Incorrect Root Pid: %d", i, tree.RootPid)
+ }
+ calls := tree.TraceMap[tree.RootPid].Calls
+ if len(calls) != 1 {
+ t.Fatalf("failed test: %d. Expected 1 call. Got %d instead", i, len(calls))
+ }
+ arg, ok := calls[0].Args[0].(Constant)
+ if !ok {
+ t.Fatalf("first argument expected to be constant. Got: %s", arg.String())
+ }
+ if arg.Val() != test.expectedEval {
+ t.Fatalf("expected %v != %v", test.expectedEval, arg.Val())
+ }
+ }
+}
+
+func TestParseLoopPid(t *testing.T) {
+ data := `1 open() = 3
+ 1 fstat() = 0`
+
+ tree := ParseLoop(data)
+ if tree.RootPid != 1 {
+ t.Fatalf("Incorrect Root Pid: %d", tree.RootPid)
+ }
+
+ calls := tree.TraceMap[tree.RootPid].Calls
+ if len(calls) != 2 {
+ t.Fatalf("Expect 2 calls. Got %d instead", len(calls))
+ }
+ if calls[0].CallName != "open" || calls[1].CallName != "fstat" {
+ t.Fatalf("call list should be open->fstat. Got %s->%s", calls[0].CallName, calls[1].CallName)
+ }
+}
+
+func TestParseLoop1Child(t *testing.T) {
+ data1Child := `1 open() = 3
+ 1 clone() = 2
+ 2 read() = 16`
+
+ tree := ParseLoop(data1Child)
+ if len(tree.Ptree) != 2 {
+ t.Fatalf("Incorrect Root Pid. Expected: 2, Got %d", tree.RootPid)
+ }
+ if tree.Ptree[tree.RootPid][0] != 2 {
+ t.Fatalf("Expected child to have pid: 2. Got %d", tree.Ptree[tree.RootPid][0])
+ } else {
+ if len(tree.TraceMap[2].Calls) != 1 {
+ t.Fatalf("Child trace should have only 1 call. Got %d", len(tree.TraceMap[2].Calls))
+ }
+ }
+}
+
+func TestParseLoop2Childs(t *testing.T) {
+ data2Childs := `1 open() = 3
+ 1 clone() = 2
+ 2 read() = 16
+ 1 clone() = 3
+ 3 open() = 3`
+ tree := ParseLoop(data2Childs)
+ if len(tree.Ptree) != 3 {
+ t.Fatalf("Incorrect Root Pid. Expected: 3, Got %d", tree.RootPid)
+ }
+ if len(tree.Ptree[tree.RootPid]) != 2 {
+ t.Fatalf("Expected Pid 1 to have 2 children: Got %d", len(tree.Ptree[tree.RootPid]))
+ }
+}
+
+func TestParseLoop1Grandchild(t *testing.T) {
+ data1Grandchild := `1 open() = 3
+ 1 clone() = 2
+ 2 clone() = 3
+ 3 open() = 4`
+ tree := ParseLoop(data1Grandchild)
+ if len(tree.Ptree[tree.RootPid]) != 1 {
+ t.Fatalf("Expect RootPid to have 1 child. Got %d", tree.RootPid)
+ }
+ if len(tree.Ptree[2]) != 1 {
+ t.Fatalf("Incorrect Root Pid. Expected: 3, Got %d", tree.RootPid)
+
+ }
+}
+
+func TestParseGroupType(t *testing.T) {
+ type irTest struct {
+ test string
+ }
+ tests := []irTest{
+ {`open({1, 2, 3}) = 0`},
+ {`open([1, 2, 3]) = 0`},
+ }
+ for _, test := range tests {
+ tree := ParseLoop(test.test)
+ call := tree.TraceMap[tree.RootPid].Calls[0]
+ _, ok := call.Args[0].(*GroupType)
+ if !ok {
+ t.Fatalf("Expected Group type. Got: %#v", call.Args[0])
+ }
+ }
+}
diff --git a/tools/syz-trace2syz/parser/strace.go b/tools/syz-trace2syz/parser/strace.go
new file mode 100644
index 000000000..7f6f3d0a8
--- /dev/null
+++ b/tools/syz-trace2syz/parser/strace.go
@@ -0,0 +1,983 @@
+// Code generated by goyacc -o strace.go -p Strace -v= strace.y. DO NOT EDIT.
+
+//line strace.y:2
+
+// Copyright 2018 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+// nolint
+package parser
+
+import __yyfmt__ "fmt"
+
+//line strace.y:6
+//line strace.y:12
+type StraceSymType struct {
+ yys int
+ data string
+ val_int int64
+ val_double float64
+ val_ret_type int64
+ val_uint uint64
+ val_constant Constant
+ val_identifiers []*BufferType
+ val_buf_type *BufferType
+ val_group_type *GroupType
+ val_type IrType
+ val_types []IrType
+ val_syscall *Syscall
+}
+
+const STRING_LITERAL = 57346
+const IPV6 = 57347
+const IDENTIFIER = 57348
+const FLAG = 57349
+const DATETIME = 57350
+const SIGNAL_PLUS = 57351
+const SIGNAL_MINUS = 57352
+const MAC = 57353
+const INT = 57354
+const UINT = 57355
+const DOUBLE = 57356
+const QUESTION = 57357
+const ARROW = 57358
+const OR = 57359
+const AND = 57360
+const LOR = 57361
+const TIMES = 57362
+const LAND = 57363
+const LEQUAL = 57364
+const ONESCOMP = 57365
+const LSHIFT = 57366
+const RSHIFT = 57367
+const NOT = 57368
+const MINUS = 57369
+const PLUS = 57370
+const COMMA = 57371
+const LBRACKET = 57372
+const RBRACKET = 57373
+const LBRACKET_SQUARE = 57374
+const RBRACKET_SQUARE = 57375
+const LPAREN = 57376
+const RPAREN = 57377
+const EQUALS = 57378
+const UNFINISHED = 57379
+const RESUMED = 57380
+const NULL = 57381
+const EQUALAT = 57382
+const COLON = 57383
+const FORWARDSLASH = 57384
+const NOTYPE = 57385
+const NOFLAG = 57386
+
+var StraceToknames = [...]string{
+ "$end",
+ "error",
+ "$unk",
+ "STRING_LITERAL",
+ "IPV6",
+ "IDENTIFIER",
+ "FLAG",
+ "DATETIME",
+ "SIGNAL_PLUS",
+ "SIGNAL_MINUS",
+ "MAC",
+ "INT",
+ "UINT",
+ "DOUBLE",
+ "QUESTION",
+ "ARROW",
+ "OR",
+ "AND",
+ "LOR",
+ "TIMES",
+ "LAND",
+ "LEQUAL",
+ "ONESCOMP",
+ "LSHIFT",
+ "RSHIFT",
+ "NOT",
+ "MINUS",
+ "PLUS",
+ "COMMA",
+ "LBRACKET",
+ "RBRACKET",
+ "LBRACKET_SQUARE",
+ "RBRACKET_SQUARE",
+ "LPAREN",
+ "RPAREN",
+ "EQUALS",
+ "UNFINISHED",
+ "RESUMED",
+ "NULL",
+ "EQUALAT",
+ "COLON",
+ "FORWARDSLASH",
+ "NOTYPE",
+ "NOFLAG",
+}
+var StraceStatenames = [...]string{}
+
+const StraceEofCode = 1
+const StraceErrCode = 2
+const StraceInitialStackSize = 16
+
+//line yacctab:1
+var StraceExca = [...]int{
+ -1, 1,
+ 1, -1,
+ -2, 0,
+}
+
+const StracePrivate = 57344
+
+const StraceLast = 330
+
+var StraceAct = [...]int{
+
+ 11, 8, 92, 75, 12, 31, 34, 33, 88, 33,
+ 91, 30, 73, 72, 42, 2, 54, 51, 43, 50,
+ 53, 4, 52, 28, 45, 106, 31, 89, 48, 49,
+ 33, 32, 55, 56, 57, 58, 59, 86, 104, 5,
+ 60, 61, 62, 63, 64, 65, 66, 3, 34, 43,
+ 30, 98, 101, 74, 90, 30, 29, 102, 103, 68,
+ 80, 40, 94, 95, 85, 69, 39, 70, 31, 96,
+ 97, 55, 33, 40, 93, 19, 82, 18, 87, 7,
+ 114, 39, 20, 21, 84, 26, 100, 99, 40, 41,
+ 105, 100, 100, 44, 109, 67, 10, 24, 46, 47,
+ 19, 107, 18, 9, 23, 100, 0, 100, 100, 22,
+ 109, 100, 100, 109, 109, 110, 0, 111, 98, 101,
+ 77, 78, 0, 83, 102, 103, 1, 98, 101, 94,
+ 95, 25, 0, 102, 103, 79, 96, 97, 94, 95,
+ 0, 93, 19, 0, 18, 96, 97, 113, 0, 0,
+ 93, 19, 0, 18, 99, 0, 112, 0, 98, 101,
+ 0, 0, 0, 99, 102, 103, 0, 98, 101, 94,
+ 95, 0, 0, 102, 103, 0, 96, 97, 94, 95,
+ 0, 93, 19, 0, 18, 96, 97, 108, 0, 0,
+ 93, 19, 0, 18, 99, 0, 0, 14, 0, 15,
+ 0, 16, 0, 99, 17, 20, 21, 0, 0, 0,
+ 14, 0, 15, 0, 16, 0, 13, 17, 20, 21,
+ 24, 0, 0, 19, 81, 18, 0, 23, 0, 13,
+ 0, 0, 22, 24, 77, 78, 19, 76, 18, 14,
+ 23, 15, 0, 16, 27, 22, 17, 20, 21, 79,
+ 0, 0, 14, 0, 15, 0, 16, 0, 13, 17,
+ 20, 21, 24, 0, 0, 19, 0, 18, 0, 23,
+ 0, 13, 6, 0, 22, 24, 0, 0, 19, 0,
+ 18, 0, 23, 20, 21, 35, 36, 22, 39, 0,
+ 0, 0, 37, 38, 44, 40, 41, 0, 24, 0,
+ 0, 35, 36, 71, 39, 23, 0, 0, 37, 38,
+ 22, 40, 41, 36, 0, 39, 0, 0, 0, 37,
+ 38, 39, 40, 41, 0, 37, 38, 0, 40, 41,
+}
+var StracePact = [...]int{
+
+ 9, -1000, 5, 235, 9, 206, -12, 21, -10, -1000,
+ -1000, -1000, 284, 70, -1000, -8, -1000, -1000, 248, 248,
+ -1000, -1000, -1000, 271, 271, -1000, -18, -13, -16, -20,
+ 248, 248, 248, 248, 248, 271, 271, 271, 271, 271,
+ 271, 271, -1000, -1000, 271, 88, 26, 36, 268, -1000,
+ -1000, -23, -24, 38, 222, -10, -33, 32, -1000, -31,
+ 295, 301, 61, 61, 34, -1000, 46, 27, -1000, 193,
+ -1000, -1000, 108, 72, -1000, 30, -1000, -1000, -1000, 66,
+ -28, -1000, 20, -1000, -1000, 161, 4, -1000, 248, -9,
+ 161, 152, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, 161, -33, 161, 121, -1000, -1000,
+ 112, 45, -1000, -1000, -1000,
+}
+var StracePgo = [...]int{
+
+ 0, 126, 3, 103, 0, 4, 2, 10, 1, 96,
+ 79,
+}
+var StraceR1 = [...]int{
+
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 7, 7, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 2, 2, 2, 10,
+ 10, 10, 8, 8, 8, 8, 8, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 4, 4, 4, 9, 9, 9, 9, 9, 9, 3,
+ 3, 3, 3,
+}
+var StraceR2 = [...]int{
+
+ 0, 4, 5, 6, 5, 5, 8, 9, 6, 6,
+ 10, 9, 2, 1, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 0,
+ 1, 3, 1, 1, 1, 1, 2, 1, 1, 1,
+ 3, 3, 3, 3, 3, 3, 3, 3, 2, 2,
+ 3, 3, 4, 2, 3, 3, 3, 3, 6, 1,
+ 1, 1, 1,
+}
+var StraceChk = [...]int{
+
+ -1000, -1, 6, 38, 12, 34, 37, -10, -8, -3,
+ -9, -4, -5, 23, 4, 6, 8, 11, 32, 30,
+ 12, 13, 39, 34, 27, -1, -10, 38, 35, 35,
+ 29, 36, 41, 40, 16, 17, 18, 24, 25, 20,
+ 27, 28, -4, -5, 23, 32, -10, -10, -5, -5,
+ 37, 35, 35, 36, 36, -8, -8, -8, -8, -8,
+ -5, -5, -5, -5, -5, -5, -5, 7, 33, 29,
+ 31, 35, 36, 36, 15, -2, 15, 12, 13, 27,
+ 33, 31, -2, 15, 12, 34, 7, 12, 36, 7,
+ 34, -7, -6, 29, 17, 18, 24, 25, 6, 42,
+ -4, 7, 12, 13, 34, -8, 34, -7, 35, -6,
+ -7, -7, 35, 35, 35,
+}
+var StraceDef = [...]int{
+
+ 0, -2, 0, 29, 0, 29, 0, 0, 30, 32,
+ 33, 34, 35, 0, 59, 60, 61, 62, 29, 29,
+ 37, 38, 39, 0, 0, 12, 0, 0, 0, 0,
+ 0, 53, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 36, 48, 0, 0, 0, 0, 0, 49,
+ 1, 0, 0, 0, 0, 31, 56, 54, 55, 57,
+ 40, 41, 42, 43, 45, 46, 47, 0, 50, 0,
+ 51, 44, 0, 0, 2, 4, 5, 26, 27, 0,
+ 0, 52, 8, 9, 3, 0, 0, 28, 0, 0,
+ 0, 0, 13, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 0, 58, 0, 0, 6, 14,
+ 0, 0, 11, 7, 10,
+}
+var StraceTok1 = [...]int{
+
+ 1,
+}
+var StraceTok2 = [...]int{
+
+ 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,
+}
+var StraceTok3 = [...]int{
+ 0,
+}
+
+var StraceErrorMessages = [...]struct {
+ state int
+ token int
+ msg string
+}{}
+
+//line yaccpar:1
+
+/* parser for yacc output */
+
+var (
+ StraceDebug = 0
+ StraceErrorVerbose = false
+)
+
+type StraceLexer interface {
+ Lex(lval *StraceSymType) int
+ Error(s string)
+}
+
+type StraceParser interface {
+ Parse(StraceLexer) int
+ Lookahead() int
+}
+
+type StraceParserImpl struct {
+ lval StraceSymType
+ stack [StraceInitialStackSize]StraceSymType
+ char int
+}
+
+func (p *StraceParserImpl) Lookahead() int {
+ return p.char
+}
+
+func StraceNewParser() StraceParser {
+ return &StraceParserImpl{}
+}
+
+const StraceFlag = -1000
+
+func StraceTokname(c int) string {
+ if c >= 1 && c-1 < len(StraceToknames) {
+ if StraceToknames[c-1] != "" {
+ return StraceToknames[c-1]
+ }
+ }
+ return __yyfmt__.Sprintf("tok-%v", c)
+}
+
+func StraceStatname(s int) string {
+ if s >= 0 && s < len(StraceStatenames) {
+ if StraceStatenames[s] != "" {
+ return StraceStatenames[s]
+ }
+ }
+ return __yyfmt__.Sprintf("state-%v", s)
+}
+
+func StraceErrorMessage(state, lookAhead int) string {
+ const TOKSTART = 4
+
+ if !StraceErrorVerbose {
+ return "syntax error"
+ }
+
+ for _, e := range StraceErrorMessages {
+ if e.state == state && e.token == lookAhead {
+ return "syntax error: " + e.msg
+ }
+ }
+
+ res := "syntax error: unexpected " + StraceTokname(lookAhead)
+
+ // To match Bison, suggest at most four expected tokens.
+ expected := make([]int, 0, 4)
+
+ // Look for shiftable tokens.
+ base := StracePact[state]
+ for tok := TOKSTART; tok-1 < len(StraceToknames); tok++ {
+ if n := base + tok; n >= 0 && n < StraceLast && StraceChk[StraceAct[n]] == tok {
+ if len(expected) == cap(expected) {
+ return res
+ }
+ expected = append(expected, tok)
+ }
+ }
+
+ if StraceDef[state] == -2 {
+ i := 0
+ for StraceExca[i] != -1 || StraceExca[i+1] != state {
+ i += 2
+ }
+
+ // Look for tokens that we accept or reduce.
+ for i += 2; StraceExca[i] >= 0; i += 2 {
+ tok := StraceExca[i]
+ if tok < TOKSTART || StraceExca[i+1] == 0 {
+ continue
+ }
+ if len(expected) == cap(expected) {
+ return res
+ }
+ expected = append(expected, tok)
+ }
+
+ // If the default action is to accept or reduce, give up.
+ if StraceExca[i+1] != 0 {
+ return res
+ }
+ }
+
+ for i, tok := range expected {
+ if i == 0 {
+ res += ", expecting "
+ } else {
+ res += " or "
+ }
+ res += StraceTokname(tok)
+ }
+ return res
+}
+
+func Stracelex1(lex StraceLexer, lval *StraceSymType) (char, token int) {
+ token = 0
+ char = lex.Lex(lval)
+ if char <= 0 {
+ token = StraceTok1[0]
+ goto out
+ }
+ if char < len(StraceTok1) {
+ token = StraceTok1[char]
+ goto out
+ }
+ if char >= StracePrivate {
+ if char < StracePrivate+len(StraceTok2) {
+ token = StraceTok2[char-StracePrivate]
+ goto out
+ }
+ }
+ for i := 0; i < len(StraceTok3); i += 2 {
+ token = StraceTok3[i+0]
+ if token == char {
+ token = StraceTok3[i+1]
+ goto out
+ }
+ }
+
+out:
+ if token == 0 {
+ token = StraceTok2[1] /* unknown char */
+ }
+ if StraceDebug >= 3 {
+ __yyfmt__.Printf("lex %s(%d)\n", StraceTokname(token), uint(char))
+ }
+ return char, token
+}
+
+func StraceParse(Stracelex StraceLexer) int {
+ return StraceNewParser().Parse(Stracelex)
+}
+
+func (Stracercvr *StraceParserImpl) Parse(Stracelex StraceLexer) int {
+ var Stracen int
+ var StraceVAL StraceSymType
+ var StraceDollar []StraceSymType
+ _ = StraceDollar // silence set and not used
+ StraceS := Stracercvr.stack[:]
+
+ Nerrs := 0 /* number of errors */
+ Errflag := 0 /* error recovery flag */
+ Stracestate := 0
+ Stracercvr.char = -1
+ Stracetoken := -1 // Stracercvr.char translated into internal numbering
+ defer func() {
+ // Make sure we report no lookahead when not parsing.
+ Stracestate = -1
+ Stracercvr.char = -1
+ Stracetoken = -1
+ }()
+ Stracep := -1
+ goto Stracestack
+
+ret0:
+ return 0
+
+ret1:
+ return 1
+
+Stracestack:
+ /* put a state and value onto the stack */
+ if StraceDebug >= 4 {
+ __yyfmt__.Printf("char %v in %v\n", StraceTokname(Stracetoken), StraceStatname(Stracestate))
+ }
+
+ Stracep++
+ if Stracep >= len(StraceS) {
+ nyys := make([]StraceSymType, len(StraceS)*2)
+ copy(nyys, StraceS)
+ StraceS = nyys
+ }
+ StraceS[Stracep] = StraceVAL
+ StraceS[Stracep].yys = Stracestate
+
+Stracenewstate:
+ Stracen = StracePact[Stracestate]
+ if Stracen <= StraceFlag {
+ goto Stracedefault /* simple state */
+ }
+ if Stracercvr.char < 0 {
+ Stracercvr.char, Stracetoken = Stracelex1(Stracelex, &Stracercvr.lval)
+ }
+ Stracen += Stracetoken
+ if Stracen < 0 || Stracen >= StraceLast {
+ goto Stracedefault
+ }
+ Stracen = StraceAct[Stracen]
+ if StraceChk[Stracen] == Stracetoken { /* valid shift */
+ Stracercvr.char = -1
+ Stracetoken = -1
+ StraceVAL = Stracercvr.lval
+ Stracestate = Stracen
+ if Errflag > 0 {
+ Errflag--
+ }
+ goto Stracestack
+ }
+
+Stracedefault:
+ /* default state action */
+ Stracen = StraceDef[Stracestate]
+ if Stracen == -2 {
+ if Stracercvr.char < 0 {
+ Stracercvr.char, Stracetoken = Stracelex1(Stracelex, &Stracercvr.lval)
+ }
+
+ /* look through exception table */
+ xi := 0
+ for {
+ if StraceExca[xi+0] == -1 && StraceExca[xi+1] == Stracestate {
+ break
+ }
+ xi += 2
+ }
+ for xi += 2; ; xi += 2 {
+ Stracen = StraceExca[xi+0]
+ if Stracen < 0 || Stracen == Stracetoken {
+ break
+ }
+ }
+ Stracen = StraceExca[xi+1]
+ if Stracen < 0 {
+ goto ret0
+ }
+ }
+ if Stracen == 0 {
+ /* error ... attempt to resume parsing */
+ switch Errflag {
+ case 0: /* brand new error */
+ Stracelex.Error(StraceErrorMessage(Stracestate, Stracetoken))
+ Nerrs++
+ if StraceDebug >= 1 {
+ __yyfmt__.Printf("%s", StraceStatname(Stracestate))
+ __yyfmt__.Printf(" saw %s\n", StraceTokname(Stracetoken))
+ }
+ fallthrough
+
+ case 1, 2: /* incompletely recovered error ... try again */
+ Errflag = 3
+
+ /* find a state where "error" is a legal shift action */
+ for Stracep >= 0 {
+ Stracen = StracePact[StraceS[Stracep].yys] + StraceErrCode
+ if Stracen >= 0 && Stracen < StraceLast {
+ Stracestate = StraceAct[Stracen] /* simulate a shift of "error" */
+ if StraceChk[Stracestate] == StraceErrCode {
+ goto Stracestack
+ }
+ }
+
+ /* the current p has no shift on "error", pop stack */
+ if StraceDebug >= 2 {
+ __yyfmt__.Printf("error recovery pops state %d\n", StraceS[Stracep].yys)
+ }
+ Stracep--
+ }
+ /* there is no state on the stack with an error shift ... abort */
+ goto ret1
+
+ case 3: /* no shift yet; clobber input char */
+ if StraceDebug >= 2 {
+ __yyfmt__.Printf("error recovery discards %s\n", StraceTokname(Stracetoken))
+ }
+ if Stracetoken == StraceEofCode {
+ goto ret1
+ }
+ Stracercvr.char = -1
+ Stracetoken = -1
+ goto Stracenewstate /* try again in the same state */
+ }
+ }
+
+ /* reduction by production Stracen */
+ if StraceDebug >= 2 {
+ __yyfmt__.Printf("reduce %v in:\n\t%v\n", Stracen, StraceStatname(Stracestate))
+ }
+
+ Stracent := Stracen
+ Stracept := Stracep
+ _ = Stracept // guard against "declared and not used"
+
+ Stracep -= StraceR2[Stracen]
+ // Stracep is now the index of $0. Perform the default action. Iff the
+ // reduced production is ε, $1 is possibly out of range.
+ if Stracep+1 >= len(StraceS) {
+ nyys := make([]StraceSymType, len(StraceS)*2)
+ copy(nyys, StraceS)
+ StraceS = nyys
+ }
+ StraceVAL = StraceS[Stracep+1]
+
+ /* consult goto table to find next state */
+ Stracen = StraceR1[Stracen]
+ Straceg := StracePgo[Stracen]
+ Stracej := Straceg + StraceS[Stracep].yys + 1
+
+ if Stracej >= StraceLast {
+ Stracestate = StraceAct[Straceg]
+ } else {
+ Stracestate = StraceAct[Stracej]
+ if StraceChk[Stracestate] != -Stracen {
+ Stracestate = StraceAct[Straceg]
+ }
+ }
+ // dummy call; replaced with literal code
+ switch Stracent {
+
+ case 1:
+ StraceDollar = StraceS[Stracept-4 : Stracept+1]
+//line strace.y:63
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, int64(-1), true, false)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 2:
+ StraceDollar = StraceS[Stracept-5 : Stracept+1]
+//line strace.y:66
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, "tmp", nil, -1, true, true)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 3:
+ StraceDollar = StraceS[Stracept-6 : Stracept+1]
+//line strace.y:71
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, nil, int64(StraceDollar[6].val_int), false, false)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 4:
+ StraceDollar = StraceS[Stracept-5 : Stracept+1]
+//line strace.y:76
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, "tmp", StraceDollar[2].val_types, StraceDollar[5].val_ret_type, false, true)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 5:
+ StraceDollar = StraceS[Stracept-5 : Stracept+1]
+//line strace.y:78
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, "tmp", StraceDollar[2].val_types, -1, false, true)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 6:
+ StraceDollar = StraceS[Stracept-8 : Stracept+1]
+//line strace.y:80
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, "tmp", StraceDollar[2].val_types, StraceDollar[5].val_ret_type, false, true)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 7:
+ StraceDollar = StraceS[Stracept-9 : Stracept+1]
+//line strace.y:83
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, "tmp", StraceDollar[2].val_types, StraceDollar[5].val_ret_type, false, true)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 8:
+ StraceDollar = StraceS[Stracept-6 : Stracept+1]
+//line strace.y:85
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, StraceDollar[6].val_ret_type, false, false)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 9:
+ StraceDollar = StraceS[Stracept-6 : Stracept+1]
+//line strace.y:88
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, -1, false, false)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 10:
+ StraceDollar = StraceS[Stracept-10 : Stracept+1]
+//line strace.y:91
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, StraceDollar[6].val_ret_type, false, false)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 11:
+ StraceDollar = StraceS[Stracept-9 : Stracept+1]
+//line strace.y:94
+ {
+ StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, StraceDollar[6].val_ret_type, false, false)
+ Stracelex.(*Stracelexer).result = StraceVAL.val_syscall
+ }
+ case 12:
+ StraceDollar = StraceS[Stracept-2 : Stracept+1]
+//line strace.y:97
+ {
+ call := StraceDollar[2].val_syscall
+ call.Pid = StraceDollar[1].val_int
+ Stracelex.(*Stracelexer).result = call
+ }
+ case 13:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:100
+ {
+ StraceVAL.val_type = nil
+ }
+ case 14:
+ StraceDollar = StraceS[Stracept-2 : Stracept+1]
+//line strace.y:101
+ {
+ StraceVAL.val_type = nil
+ }
+ case 15:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:104
+ {
+ StraceVAL.val_type = nil
+ }
+ case 16:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:105
+ {
+ StraceVAL.val_type = nil
+ }
+ case 17:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:106
+ {
+ StraceVAL.val_type = nil
+ }
+ case 18:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:107
+ {
+ StraceVAL.val_type = nil
+ }
+ case 19:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:108
+ {
+ StraceVAL.val_type = nil
+ }
+ case 20:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:109
+ {
+ StraceVAL.val_type = nil
+ }
+ case 21:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:110
+ {
+ StraceVAL.val_type = nil
+ }
+ case 22:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:111
+ {
+ StraceVAL.val_type = nil
+ }
+ case 23:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:112
+ {
+ StraceVAL.val_type = nil
+ }
+ case 24:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:113
+ {
+ StraceVAL.val_type = nil
+ }
+ case 25:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:114
+ {
+ StraceVAL.val_type = nil
+ }
+ case 26:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:117
+ {
+ StraceVAL.val_ret_type = StraceDollar[1].val_int
+ }
+ case 27:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:118
+ {
+ StraceVAL.val_ret_type = int64(StraceDollar[1].val_uint)
+ }
+ case 28:
+ StraceDollar = StraceS[Stracept-2 : Stracept+1]
+//line strace.y:119
+ {
+ StraceVAL.val_ret_type = -1 * StraceDollar[2].val_int
+ }
+ case 29:
+ StraceDollar = StraceS[Stracept-0 : Stracept+1]
+//line strace.y:121
+ {
+ StraceVAL.val_types = make([]IrType, 0)
+ }
+ case 30:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:122
+ {
+ StraceVAL.val_types = []IrType{StraceDollar[1].val_type}
+ }
+ case 31:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:123
+ {
+ StraceDollar[1].val_types = append(StraceDollar[1].val_types, StraceDollar[3].val_type)
+ StraceVAL.val_types = StraceDollar[1].val_types
+ }
+ case 32:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:126
+ {
+ StraceVAL.val_type = StraceDollar[1].val_buf_type
+ }
+ case 33:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:127
+ {
+ StraceVAL.val_type = StraceDollar[1].val_type
+ }
+ case 34:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:128
+ {
+ StraceVAL.val_type = StraceDollar[1].val_group_type
+ }
+ case 35:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:129
+ {
+ StraceVAL.val_type = StraceDollar[1].val_constant
+ }
+ case 36:
+ StraceDollar = StraceS[Stracept-2 : Stracept+1]
+//line strace.y:130
+ {
+ StraceVAL.val_type = StraceDollar[2].val_group_type
+ }
+ case 37:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:133
+ {
+ StraceVAL.val_constant = Constant(StraceDollar[1].val_int)
+ }
+ case 38:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:134
+ {
+ StraceVAL.val_constant = Constant(StraceDollar[1].val_uint)
+ }
+ case 39:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:135
+ {
+ StraceVAL.val_constant = Constant(uint64(0))
+ }
+ case 40:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:136
+ {
+ StraceVAL.val_constant = StraceDollar[1].val_constant | StraceDollar[3].val_constant
+ }
+ case 41:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:137
+ {
+ StraceVAL.val_constant = StraceDollar[1].val_constant & StraceDollar[3].val_constant
+ }
+ case 42:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:138
+ {
+ StraceVAL.val_constant = StraceDollar[1].val_constant << StraceDollar[3].val_constant
+ }
+ case 43:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:139
+ {
+ StraceVAL.val_constant = StraceDollar[1].val_constant >> StraceDollar[3].val_constant
+ }
+ case 44:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:140
+ {
+ StraceVAL.val_constant = StraceDollar[2].val_constant
+ }
+ case 45:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:141
+ {
+ StraceVAL.val_constant = StraceDollar[1].val_constant * StraceDollar[3].val_constant
+ }
+ case 46:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:142
+ {
+ StraceVAL.val_constant = StraceDollar[1].val_constant - StraceDollar[3].val_constant
+ }
+ case 47:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:143
+ {
+ StraceVAL.val_constant = StraceDollar[1].val_constant + StraceDollar[3].val_constant
+ }
+ case 48:
+ StraceDollar = StraceS[Stracept-2 : Stracept+1]
+//line strace.y:144
+ {
+ StraceVAL.val_constant = ^StraceDollar[2].val_constant
+ }
+ case 49:
+ StraceDollar = StraceS[Stracept-2 : Stracept+1]
+//line strace.y:145
+ {
+ StraceVAL.val_constant = Constant(-int64(StraceDollar[2].val_constant))
+ }
+ case 50:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:148
+ {
+ StraceVAL.val_group_type = newGroupType(StraceDollar[2].val_types)
+ }
+ case 51:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:149
+ {
+ StraceVAL.val_group_type = newGroupType(StraceDollar[2].val_types)
+ }
+ case 52:
+ StraceDollar = StraceS[Stracept-4 : Stracept+1]
+//line strace.y:150
+ {
+ StraceVAL.val_group_type = newGroupType(StraceDollar[2].val_types)
+ }
+ case 53:
+ StraceDollar = StraceS[Stracept-2 : Stracept+1]
+//line strace.y:153
+ {
+ StraceVAL.val_type = nil
+ }
+ case 54:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:154
+ {
+ StraceVAL.val_type = StraceDollar[3].val_type
+ }
+ case 55:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:155
+ {
+ StraceVAL.val_type = StraceDollar[3].val_type
+ }
+ case 56:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:156
+ {
+ StraceVAL.val_type = StraceDollar[3].val_type
+ }
+ case 57:
+ StraceDollar = StraceS[Stracept-3 : Stracept+1]
+//line strace.y:157
+ {
+ StraceVAL.val_type = StraceDollar[1].val_type
+ }
+ case 58:
+ StraceDollar = StraceS[Stracept-6 : Stracept+1]
+//line strace.y:158
+ {
+ StraceVAL.val_type = StraceDollar[6].val_type
+ }
+ case 59:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:161
+ {
+ StraceVAL.val_buf_type = newBufferType(StraceDollar[1].data)
+ }
+ case 60:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:162
+ {
+ StraceVAL.val_buf_type = newBufferType(StraceDollar[1].data)
+ }
+ case 61:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:163
+ {
+ StraceVAL.val_buf_type = newBufferType(StraceDollar[1].data)
+ }
+ case 62:
+ StraceDollar = StraceS[Stracept-1 : Stracept+1]
+//line strace.y:164
+ {
+ StraceVAL.val_buf_type = newBufferType(StraceDollar[1].data)
+ }
+ }
+ goto Stracestack /* stack new state and value */
+}
diff --git a/tools/syz-trace2syz/parser/strace.y b/tools/syz-trace2syz/parser/strace.y
new file mode 100644
index 000000000..47a31c820
--- /dev/null
+++ b/tools/syz-trace2syz/parser/strace.y
@@ -0,0 +1,165 @@
+%{
+// Copyright 2018 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+// nolint
+package parser
+
+%}
+
+%start syscall
+
+%union {
+ data string
+ val_int int64
+ val_double float64
+ val_ret_type int64
+ val_uint uint64
+ val_constant Constant
+ val_identifiers []*BufferType
+ val_buf_type *BufferType
+ val_group_type *GroupType
+ val_type IrType
+ val_types []IrType
+ val_syscall *Syscall
+}
+
+%token <data> STRING_LITERAL IPV6 IDENTIFIER FLAG DATETIME SIGNAL_PLUS SIGNAL_MINUS MAC
+%token <val_int> INT
+%token <val_uint> UINT
+%token <val_double> DOUBLE
+%type <val_ret_type> ret_type
+%type <val_buf_type> buf_type
+%type <val_group_type> group_type
+%type <val_constant> constant
+%type <val_type> parenthetical, parentheticals, type, field_type
+%type <val_types> types
+%type <val_syscall> syscall
+
+%token STRING_LITERAL MAC IDENTIFIER FLAG INT UINT QUESTION DOUBLE ARROW
+%token OR AND LOR TIMES LAND LEQUAL ONESCOMP LSHIFT RSHIFT TIMES NOT MINUS PLUS
+%token COMMA LBRACKET RBRACKET LBRACKET_SQUARE RBRACKET_SQUARE LPAREN RPAREN EQUALS
+%token UNFINISHED RESUMED
+%token SIGNAL_PLUS SIGNAL_MINUS NULL EQUALAT COLON FORWARDSLASH
+
+%nonassoc NOTYPE
+%nonassoc FLAG
+%nonassoc NOFLAG
+
+
+%left OR
+%left AND
+%left LSHIFT RSHIFT
+%left PLUS
+%left TIMES
+%left MINUS ONESCOMP
+%left COLON
+%left ARROW
+%left EQUALS
+%left EQUALAT
+
+%%
+syscall:
+ IDENTIFIER LPAREN types UNFINISHED %prec NOFLAG { $$ = NewSyscall(-1, $1, $3, int64(-1), true, false);
+ Stracelex.(*Stracelexer).result = $$ }
+ | RESUMED UNFINISHED RPAREN EQUALS QUESTION %prec NOFLAG
+ {
+ $$ = NewSyscall(-1, "tmp", nil, -1, true, true);
+ Stracelex.(*Stracelexer).result = $$;
+ }
+ | IDENTIFIER LPAREN RESUMED RPAREN EQUALS INT %prec NOFLAG
+ {
+ $$ = NewSyscall(-1, $1, nil, int64($6), false, false);
+ Stracelex.(*Stracelexer).result = $$;
+ }
+
+ | RESUMED types RPAREN EQUALS ret_type %prec NOFLAG { $$ = NewSyscall(-1, "tmp", $2, $5, false, true);
+ Stracelex.(*Stracelexer).result = $$ }
+ | RESUMED types RPAREN EQUALS QUESTION %prec NOFLAG { $$ = NewSyscall(-1, "tmp", $2, -1, false, true);
+ Stracelex.(*Stracelexer).result = $$ }
+ | RESUMED types RPAREN EQUALS ret_type LPAREN parentheticals RPAREN { $$ = NewSyscall(-1, "tmp", $2, $5, false, true);
+ Stracelex.(*Stracelexer).result = $$ }
+
+ | RESUMED types RPAREN EQUALS ret_type FLAG LPAREN parentheticals RPAREN { $$ = NewSyscall(-1, "tmp", $2, $5, false, true);
+ Stracelex.(*Stracelexer).result = $$ }
+ | IDENTIFIER LPAREN types RPAREN EQUALS ret_type %prec NOFLAG{
+ $$ = NewSyscall(-1, $1, $3, $6, false, false);
+ Stracelex.(*Stracelexer).result = $$;}
+ | IDENTIFIER LPAREN types RPAREN EQUALS QUESTION %prec NOFLAG {
+ $$ = NewSyscall(-1, $1, $3, -1, false, false);
+ Stracelex.(*Stracelexer).result = $$;}
+ | IDENTIFIER LPAREN types RPAREN EQUALS ret_type FLAG LPAREN parentheticals RPAREN {
+ $$ = NewSyscall(-1, $1, $3, $6, false, false);
+ Stracelex.(*Stracelexer).result = $$;}
+ | IDENTIFIER LPAREN types RPAREN EQUALS ret_type LPAREN parentheticals RPAREN {
+ $$ = NewSyscall(-1, $1, $3, $6, false, false);
+ Stracelex.(*Stracelexer).result = $$;}
+ | INT syscall {call := $2; call.Pid = $1; Stracelex.(*Stracelexer).result = call}
+
+parentheticals:
+ parenthetical {$$ = nil;}
+ | parentheticals parenthetical {$$ = nil;}
+
+parenthetical:
+ COMMA {$$=nil}
+ | OR {$$ = nil}
+ | AND {$$ = nil}
+ | LSHIFT {$$ = nil}
+ | RSHIFT {$$ = nil}
+ | IDENTIFIER {$$ = nil}
+ | FORWARDSLASH {$$ = nil}
+ | group_type {$$ = nil}
+ | FLAG {$$ = nil}
+ | INT {$$ = nil}
+ | UINT {$$ = nil}
+
+ret_type:
+ INT {$$ = $1}
+ | UINT {$$ = int64($1)}
+ | MINUS INT {$$ = -1 * $2}
+
+types: {$$ = make([]IrType, 0)}
+ | type {$$ = []IrType{$1}}
+ | types COMMA type {$1 = append($1, $3); $$ = $1;}
+
+type:
+ buf_type {$$ = $1}
+ | field_type {$$ = $1}
+ | group_type {$$ = $1}
+ | constant {$$ = $1}
+ | ONESCOMP group_type {$$ = $2}
+
+constant:
+ INT {$$ = Constant($1)}
+ | UINT {$$ = Constant($1)}
+ | NULL {$$ = Constant(uint64(0))}
+ | constant OR constant {$$ = $1 | $3}
+ | constant AND constant {$$ = $1 & $3}
+ | constant LSHIFT constant {$$ = $1 << $3}
+ | constant RSHIFT constant {$$ = $1 >> $3}
+ | LPAREN constant RPAREN {$$ = $2}
+ | constant TIMES constant {$$ = $1 * $3}
+ | constant MINUS constant {$$ = $1 - $3}
+ | constant PLUS constant {$$ = $1 + $3}
+ | ONESCOMP constant {$$ = ^$2}
+ | MINUS constant {$$ = Constant(-int64($2))}
+
+group_type:
+ LBRACKET_SQUARE types RBRACKET_SQUARE {$$ = newGroupType($2)}
+ | LBRACKET types RBRACKET {$$ = newGroupType($2)}
+ | LBRACKET types COMMA RBRACKET {$$ = newGroupType($2)}
+
+field_type:
+ type EQUALS %prec NOTYPE {$$ = nil}
+ | type COLON type {$$ = $3}
+ | type EQUALAT type {$$ = $3}
+ | type EQUALS type {$$ = $3}
+ | type ARROW type {$$ = $1}
+ | IDENTIFIER LBRACKET_SQUARE FLAG RBRACKET_SQUARE EQUALS type {$$ = $6}
+
+buf_type:
+ STRING_LITERAL {$$ = newBufferType($1)}
+ | IDENTIFIER {$$ = newBufferType($1)}
+ | DATETIME {$$ = newBufferType($1)}
+ | MAC {$$ = newBufferType($1)}
+
diff --git a/tools/syz-trace2syz/parser/straceLex.rl b/tools/syz-trace2syz/parser/straceLex.rl
new file mode 100644
index 000000000..973827087
--- /dev/null
+++ b/tools/syz-trace2syz/parser/straceLex.rl
@@ -0,0 +1,133 @@
+// Copyright 2018 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+// nolint
+
+package parser
+
+import (
+ "fmt"
+ "encoding/hex"
+ "strconv"
+ "strings"
+ "github.com/google/syzkaller/pkg/log"
+)
+
+%%{
+ machine strace;
+ write data;
+ access lex.;
+ variable p lex.p;
+ variable pe lex.pe;
+}%%
+
+type Stracelexer struct {
+ result *Syscall
+ data []byte
+ p, pe, cs int
+ ts, te, act int
+}
+
+func newStraceLexer (data []byte) *Stracelexer {
+ lex := &Stracelexer {
+ data: data,
+ pe: len(data),
+ }
+
+ %% write init;
+ return lex
+}
+
+func (lex *Stracelexer) Lex(out *StraceSymType) int {
+ eof := lex.pe
+ tok := 0
+ %%{
+ dateSep = '-' | '\/';
+ datetimeSep = 'T' | '-';
+ microTimeSep = '+' | '-';
+ date = digit{4}.dateSep.digit{2}.dateSep.digit{2};
+ nullptr = "NULL";
+ time = digit{2}.':'.digit{2}.':'.digit{2} |
+ digit{2}.':'.digit{2}.':'.digit{2}.microTimeSep.digit{4} |
+ digit{2}.':'.digit{2}.':'.digit{2}.microTimeSep.digit{4}.'.'.digit+ |
+ digit{2}.':'.digit{2}.':'.digit{2}.'.'.digit+;
+ datetime = date.datetimeSep.time;
+ unfinished = '<unfinished ...>' | ', <unfinished ...>';
+ ipv4 = digit{1,3}.'\.'.digit{1,3}.'\.'.digit{1,3}.'\.'.digit{1,3};
+ identifier = ([A-Za-z':'].[0-9a-z'_'\*\.\-':']*) | ipv4;
+ resumed = '<... '.identifier+.' resumed>'
+ | '<... '.identifier+.' resumed> ,'
+ | '<... resuming'.' '.identifier.' '.identifier.' '.'...>';
+ flag = (['_']+?upper+ . ['_'A-Z0-9]+)-nullptr;
+ string = '\"'.['_''\.'('')'' ''#'':'0-9a-zA-Z\/\\\*]*.'\"';
+ mac = xdigit{2}.':'.xdigit{2}.':'.xdigit{2}.':'.xdigit{2}.':'.xdigit{2}.':'.xdigit{2};
+ comment := |*
+ ((any-"*\/"));
+ "*\/" => {fgoto main;};
+ *|;
+
+ main := |*
+ [0-9]* => {out.val_int, _ = strconv.ParseInt(string(lex.data[lex.ts : lex.te]), 10, 64); tok = INT;fbreak;};
+ digit . '.' . digit* => {out.val_double, _ = strconv.ParseFloat(string(lex.data[lex.ts : lex.te]), 64); tok= DOUBLE; fbreak;};
+ [0].[0-7]* => {out.val_int, _ = strconv.ParseInt(string(lex.data[lex.ts : lex.te]), 8, 64); tok = INT; fbreak;};
+ '0x'xdigit+ => {out.val_uint, _ = strconv.ParseUint(string(lex.data[lex.ts:lex.te]), 0, 64); tok = UINT;fbreak;};
+ string.['.']* => {out.data = ParseString(string(lex.data[lex.ts+1:lex.te-1])); tok = STRING_LITERAL;fbreak;};
+ nullptr => {tok = NULL; fbreak;};
+ flag => {out.data = string(lex.data[lex.ts:lex.te]); tok = FLAG; fbreak;};
+ '\"'.flag.'\"' => {out.data = string(lex.data[lex.ts+1:lex.te-1]); tok=FLAG; fbreak;};
+ identifier => {out.data = string(lex.data[lex.ts:lex.te]); tok = IDENTIFIER;fbreak;};
+ unfinished => {tok = UNFINISHED; fbreak;};
+ resumed => {tok = RESUMED; fbreak;};
+ mac => {out.data = string(lex.data[lex.ts : lex.te]); tok = MAC; fbreak;};
+ '=' => {tok = EQUALS;fbreak;};
+ '(' => {tok = LPAREN;fbreak;};
+ '=@' => {tok = EQUALAT; fbreak;};
+ ')' => {tok = RPAREN;fbreak;};
+ '[' => {tok = LBRACKET_SQUARE;fbreak;};
+ ']' => {tok = RBRACKET_SQUARE;fbreak;};
+ '*' => {tok = TIMES; fbreak;};
+ '{' => {tok = LBRACKET;fbreak;};
+ [.]*.'}' => {tok = RBRACKET;fbreak;};
+ '|' => {tok = OR;fbreak;};
+ ':' => {tok = COLON; fbreak;};
+ '&' => {tok = AND;fbreak;};
+ '!' => {tok = NOT;fbreak;};
+ '~' => {tok = ONESCOMP; fbreak;};
+ '<<' => {tok = LSHIFT; fbreak;};
+ '>>' => {tok = RSHIFT; fbreak;};
+ '->' => {tok = ARROW; fbreak;};
+ '=>' => {tok = ARROW; fbreak;};
+ ',' => {tok = COMMA;fbreak;};
+ '-' => {tok = MINUS; fbreak;};
+ '+' => {tok = PLUS; fbreak;};
+ '\/' => {tok = FORWARDSLASH; fbreak;};
+ datetime => {out.data = string(lex.data[lex.ts:lex.te]); tok = DATETIME; fbreak;};
+ "\/*" => {fgoto comment;};
+ "?" => {tok = QUESTION; fbreak;};
+ space;
+ *|;
+
+ write exec;
+ }%%
+
+ return tok;
+}
+
+func (lex *Stracelexer) Error(e string) {
+ fmt.Println("error:", e)
+}
+
+func ParseString(s string) string{
+ var decoded []byte
+ var err error
+ var strippedStr string
+ strippedStr = strings.Replace(s, `\x`, "", -1)
+ strippedStr = strings.Replace(strippedStr, `"`, "", -1)
+
+ if decoded, err = hex.DecodeString(strippedStr); err != nil {
+ log.Logf(2, "failed to decode string: %s, with error: %s", s, err.Error())
+ decoded = []byte(strippedStr)
+ }
+ decoded = append(decoded, '\x00')
+ return string(decoded)
+} \ No newline at end of file