-
-
Notifications
You must be signed in to change notification settings - Fork 120
/
code.go
108 lines (104 loc) · 1.47 KB
/
code.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package gojq
type code struct {
v any
op opcode
}
type opcode int
const (
opnop opcode = iota
oppush
oppop
opdup
opconst
opload
opstore
opobject
opappend
opfork
opforktrybegin
opforktryend
opforkalt
opforklabel
opbacktrack
opjump
opjumpifnot
opindex
opindexarray
opcall
opcallrec
oppushpc
opcallpc
opscope
opret
opiter
opexpbegin
opexpend
oppathbegin
oppathend
)
func (op opcode) String() string {
switch op {
case opnop:
return "nop"
case oppush:
return "push"
case oppop:
return "pop"
case opdup:
return "dup"
case opconst:
return "const"
case opload:
return "load"
case opstore:
return "store"
case opobject:
return "object"
case opappend:
return "append"
case opfork:
return "fork"
case opforktrybegin:
return "forktrybegin"
case opforktryend:
return "forktryend"
case opforkalt:
return "forkalt"
case opforklabel:
return "forklabel"
case opbacktrack:
return "backtrack"
case opjump:
return "jump"
case opjumpifnot:
return "jumpifnot"
case opindex:
return "index"
case opindexarray:
return "indexarray"
case opcall:
return "call"
case opcallrec:
return "callrec"
case oppushpc:
return "pushpc"
case opcallpc:
return "callpc"
case opscope:
return "scope"
case opret:
return "ret"
case opiter:
return "iter"
case opexpbegin:
return "expbegin"
case opexpend:
return "expend"
case oppathbegin:
return "pathbegin"
case oppathend:
return "pathend"
default:
panic(op)
}
}