vendor
github.com
alecthomas
chroma
v2
lexers
embedded
abap.xml abnf.xml actionscript.xml actionscript_3.xml ada.xml al.xml angular2.xml antlr.xml apacheconf.xml apl.xml applescript.xml arduino.xml armasm.xml awk.xml ballerina.xml bash.xml batchfile.xml bibtex.xml bicep.xml blitzbasic.xml bnf.xml brainfuck.xml c++.xml c.xml cap_n_proto.xml ceylon.xml cfengine3.xml cfstatement.xml chaiscript.xml clojure.xml cmake.xml cobol.xml coffeescript.xml common_lisp.xml coq.xml crystal.xml csharp.xml css.xml cython.xml d.xml dart.xml diff.xml django_jinja.xml dtd.xml dylan.xml ebnf.xml elixir.xml elm.xml emacslisp.xml erlang.xml factor.xml fennel.xml fish.xml forth.xml fortran.xml fsharp.xml gas.xml gdscript.xml gherkin.xml glsl.xml gnuplot.xml go_template.xml graphql.xml groff.xml groovy.xml handlebars.xml haskell.xml hcl.xml hexdump.xml hlb.xml hy.xml idris.xml igor.xml ini.xml io.xml j.xml java.xml javascript.xml json.xml julia.xml jungle.xml kotlin.xml lighttpd.xml llvm.xml lua.xml mathematica.xml matlab.xml mcfunction.xml meson.xml metal.xml minizinc.xml mlir.xml modula-2.xml monkeyc.xml morrowindscript.xml mysql.xml nasm.xml newspeak.xml nginx.xml nim.xml nix.xml objective-c.xml ocaml.xml octave.xml onesenterprise.xml openscad.xml pacmanconf.xml perl.xml php.xml pig.xml pkgconfig.xml pl_pgsql.xml plutus_core.xml pony.xml postscript.xml povray.xml powerquery.xml powershell.xml prolog.xml promql.xml protobuf.xml puppet.xml python.xml python_2.xml qbasic.xml qml.xml r.xml racket.xml ragel.xml react.xml reasonml.xml reg.xml rexx.xml ruby.xml rust.xml sas.xml sass.xml scala.xml scheme.xml scilab.xml scss.xml sieve.xml smalltalk.xml snobol.xml solidity.xml sparql.xml sql.xml squidconf.xml standard_ml.xml stylus.xml swift.xml systemd.xml systemverilog.xml tablegen.xml tasm.xml tcl.xml tcsh.xml termcap.xml terminfo.xml terraform.xml tex.xml thrift.xml toml.xml tradingview.xml transact-sql.xml turing.xml turtle.xml twig.xml typescript.xml typoscriptcssdata.xml typoscripthtmldata.xml vb_net.xml verilog.xml vhdl.xml vue.xml wdte.xml whiley.xml xml.xml xorg.xml yaml.xml yang.xml zed.xml zig.xmlstyles
abap.go algol.go algol_nu.go api.go arduino.go autumn.go average.go base16-snazzy.go borland.go bw.go colorful.go doom-one.go doom-one2.go dracula.go emacs.go friendly.go fruity.go github.go gruvbox.go hr_dark.go hr_high_contrast.go igor.go lovelace.go manni.go monokai.go monokailight.go murphy.go native.go nord.go onesenterprise.go paraiso-dark.go paraiso-light.go pastie.go perldoc.go pygments.go rainbow_dash.go rrt.go solarized-dark.go solarized-dark256.go solarized-light.go swapoff.go tango.go trac.go vim.go vs.go vulcan.go witchhazel.go xcode-dark.go xcode.gootiai10
copy
.gitignore LICENSE README.md copy.go copy_namedpipes.go copy_namedpipes_x.go fileinfo_go1.15.go fileinfo_go1.16.go options.go permission_control.go preserve_ltimes.go preserve_ltimes_x.go preserve_owner.go preserve_owner_x.go preserve_times.go stat_times.go stat_times_darwin.go stat_times_freebsd.go stat_times_js.go stat_times_windows.go stat_times_x.go test_setup.go test_setup_x.gotdewolff
yuin
goldmark
extension
cjk.go definition_list.go footnote.go gfm.go linkify.go strikethrough.go table.go tasklist.go typographer.goparser
attribute.go atx_heading.go auto_link.go blockquote.go code_block.go code_span.go delimiter.go emphasis.go fcode_block.go html_block.go link.go link_ref.go list.go list_item.go paragraph.go parser.go raw_html.go setext_headings.go thematic_break.gogolang.org
x
net
LICENSE PATENTSsys
unix
.gitignore README.md affinity_linux.go aliases.go asm_aix_ppc64.s asm_bsd_386.s asm_bsd_amd64.s asm_bsd_arm.s asm_bsd_arm64.s asm_bsd_ppc64.s asm_bsd_riscv64.s asm_linux_386.s asm_linux_amd64.s asm_linux_arm.s asm_linux_arm64.s asm_linux_loong64.s asm_linux_mips64x.s asm_linux_mipsx.s asm_linux_ppc64x.s asm_linux_riscv64.s asm_linux_s390x.s asm_openbsd_mips64.s asm_solaris_amd64.s asm_zos_s390x.s bluetooth_linux.go cap_freebsd.go constants.go dev_aix_ppc.go dev_aix_ppc64.go dev_darwin.go dev_dragonfly.go dev_freebsd.go dev_linux.go dev_netbsd.go dev_openbsd.go dev_zos.go dirent.go endian_big.go endian_little.go env_unix.go epoll_zos.go fcntl.go fcntl_darwin.go fcntl_linux_32bit.go fdset.go fstatfs_zos.go gccgo.go gccgo_c.c gccgo_linux_amd64.go ifreq_linux.go ioctl_linux.go ioctl_signed.go ioctl_unsigned.go ioctl_zos.go mkall.sh mkerrors.sh pagesize_unix.go pledge_openbsd.go ptrace_darwin.go ptrace_ios.go race.go race0.go readdirent_getdents.go readdirent_getdirentries.go sockcmsg_dragonfly.go sockcmsg_linux.go sockcmsg_unix.go sockcmsg_unix_other.go syscall.go syscall_aix.go syscall_aix_ppc.go syscall_aix_ppc64.go syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go syscall_darwin_arm64.go syscall_darwin_libSystem.go syscall_dragonfly.go syscall_dragonfly_amd64.go syscall_freebsd.go syscall_freebsd_386.go syscall_freebsd_amd64.go syscall_freebsd_arm.go syscall_freebsd_arm64.go syscall_freebsd_riscv64.go syscall_hurd.go syscall_hurd_386.go syscall_illumos.go syscall_linux.go syscall_linux_386.go syscall_linux_alarm.go syscall_linux_amd64.go syscall_linux_amd64_gc.go syscall_linux_arm.go syscall_linux_arm64.go syscall_linux_gc.go syscall_linux_gc_386.go syscall_linux_gc_arm.go syscall_linux_gccgo_386.go syscall_linux_gccgo_arm.go syscall_linux_loong64.go syscall_linux_mips64x.go syscall_linux_mipsx.go syscall_linux_ppc.go syscall_linux_ppc64x.go syscall_linux_riscv64.go syscall_linux_s390x.go syscall_linux_sparc64.go syscall_netbsd.go syscall_netbsd_386.go syscall_netbsd_amd64.go syscall_netbsd_arm.go syscall_netbsd_arm64.go syscall_openbsd.go syscall_openbsd_386.go syscall_openbsd_amd64.go syscall_openbsd_arm.go syscall_openbsd_arm64.go syscall_openbsd_libc.go syscall_openbsd_mips64.go syscall_openbsd_ppc64.go syscall_openbsd_riscv64.go syscall_solaris.go syscall_solaris_amd64.go syscall_unix.go syscall_unix_gc.go syscall_unix_gc_ppc64x.go syscall_zos_s390x.go sysvshm_linux.go sysvshm_unix.go sysvshm_unix_other.go timestruct.go unveil_openbsd.go xattr_bsd.go zerrors_aix_ppc.go zerrors_aix_ppc64.go zerrors_darwin_amd64.go zerrors_darwin_arm64.go zerrors_dragonfly_amd64.go zerrors_freebsd_386.go zerrors_freebsd_amd64.go zerrors_freebsd_arm.go zerrors_freebsd_arm64.go zerrors_freebsd_riscv64.go zerrors_linux.go zerrors_linux_386.go zerrors_linux_amd64.go zerrors_linux_arm.go zerrors_linux_arm64.go zerrors_linux_loong64.go zerrors_linux_mips.go zerrors_linux_mips64.go zerrors_linux_mips64le.go zerrors_linux_mipsle.go zerrors_linux_ppc.go zerrors_linux_ppc64.go zerrors_linux_ppc64le.go zerrors_linux_riscv64.go zerrors_linux_s390x.go zerrors_linux_sparc64.go zerrors_netbsd_386.go zerrors_netbsd_amd64.go zerrors_netbsd_arm.go zerrors_netbsd_arm64.go zerrors_openbsd_386.go zerrors_openbsd_amd64.go zerrors_openbsd_arm.go zerrors_openbsd_arm64.go zerrors_openbsd_mips64.go zerrors_openbsd_ppc64.go zerrors_openbsd_riscv64.go zerrors_solaris_amd64.go zerrors_zos_s390x.go zptrace_armnn_linux.go zptrace_linux_arm64.go zptrace_mipsnn_linux.go zptrace_mipsnnle_linux.go zptrace_x86_linux.go zsyscall_aix_ppc.go zsyscall_aix_ppc64.go zsyscall_aix_ppc64_gc.go zsyscall_aix_ppc64_gccgo.go zsyscall_darwin_amd64.go zsyscall_darwin_amd64.s zsyscall_darwin_arm64.go zsyscall_darwin_arm64.s zsyscall_dragonfly_amd64.go zsyscall_freebsd_386.go zsyscall_freebsd_amd64.go zsyscall_freebsd_arm.go zsyscall_freebsd_arm64.go zsyscall_freebsd_riscv64.go zsyscall_illumos_amd64.go zsyscall_linux.go zsyscall_linux_386.go zsyscall_linux_amd64.go zsyscall_linux_arm.go zsyscall_linux_arm64.go zsyscall_linux_loong64.go zsyscall_linux_mips.go zsyscall_linux_mips64.go zsyscall_linux_mips64le.go zsyscall_linux_mipsle.go zsyscall_linux_ppc.go zsyscall_linux_ppc64.go zsyscall_linux_ppc64le.go zsyscall_linux_riscv64.go zsyscall_linux_s390x.go zsyscall_linux_sparc64.go zsyscall_netbsd_386.go zsyscall_netbsd_amd64.go zsyscall_netbsd_arm.go zsyscall_netbsd_arm64.go zsyscall_openbsd_386.go zsyscall_openbsd_386.s zsyscall_openbsd_amd64.go zsyscall_openbsd_amd64.s zsyscall_openbsd_arm.go zsyscall_openbsd_arm.s zsyscall_openbsd_arm64.go zsyscall_openbsd_arm64.s zsyscall_openbsd_mips64.go zsyscall_openbsd_mips64.s zsyscall_openbsd_ppc64.go zsyscall_openbsd_ppc64.s zsyscall_openbsd_riscv64.go zsyscall_openbsd_riscv64.s zsyscall_solaris_amd64.go zsyscall_zos_s390x.go zsysctl_openbsd_386.go zsysctl_openbsd_amd64.go zsysctl_openbsd_arm.go zsysctl_openbsd_arm64.go zsysctl_openbsd_mips64.go zsysctl_openbsd_ppc64.go zsysctl_openbsd_riscv64.go zsysnum_darwin_amd64.go zsysnum_darwin_arm64.go zsysnum_dragonfly_amd64.go zsysnum_freebsd_386.go zsysnum_freebsd_amd64.go zsysnum_freebsd_arm.go zsysnum_freebsd_arm64.go zsysnum_freebsd_riscv64.go zsysnum_linux_386.go zsysnum_linux_amd64.go zsysnum_linux_arm.go zsysnum_linux_arm64.go zsysnum_linux_loong64.go zsysnum_linux_mips.go zsysnum_linux_mips64.go zsysnum_linux_mips64le.go zsysnum_linux_mipsle.go zsysnum_linux_ppc.go zsysnum_linux_ppc64.go zsysnum_linux_ppc64le.go zsysnum_linux_riscv64.go zsysnum_linux_s390x.go zsysnum_linux_sparc64.go zsysnum_netbsd_386.go zsysnum_netbsd_amd64.go zsysnum_netbsd_arm.go zsysnum_netbsd_arm64.go zsysnum_openbsd_386.go zsysnum_openbsd_amd64.go zsysnum_openbsd_arm.go zsysnum_openbsd_arm64.go zsysnum_openbsd_mips64.go zsysnum_openbsd_ppc64.go zsysnum_openbsd_riscv64.go zsysnum_zos_s390x.go ztypes_aix_ppc.go ztypes_aix_ppc64.go ztypes_darwin_amd64.go ztypes_darwin_arm64.go ztypes_dragonfly_amd64.go ztypes_freebsd_386.go ztypes_freebsd_amd64.go ztypes_freebsd_arm.go ztypes_freebsd_arm64.go ztypes_freebsd_riscv64.go ztypes_linux.go ztypes_linux_386.go ztypes_linux_amd64.go ztypes_linux_arm.go ztypes_linux_arm64.go ztypes_linux_loong64.go ztypes_linux_mips.go ztypes_linux_mips64.go ztypes_linux_mips64le.go ztypes_linux_mipsle.go ztypes_linux_ppc.go ztypes_linux_ppc64.go ztypes_linux_ppc64le.go ztypes_linux_riscv64.go ztypes_linux_s390x.go ztypes_linux_sparc64.go ztypes_netbsd_386.go ztypes_netbsd_amd64.go ztypes_netbsd_arm.go ztypes_netbsd_arm64.go ztypes_openbsd_386.go ztypes_openbsd_amd64.go ztypes_openbsd_arm.go ztypes_openbsd_arm64.go ztypes_openbsd_mips64.go ztypes_openbsd_ppc64.go ztypes_openbsd_riscv64.go ztypes_solaris_amd64.go ztypes_zos_s390x.gogopkg.in
vendor/github.com/tdewolff/parse/v2/js/walk.go
raw
1package js
2
3// IVisitor represents the AST Visitor
4// Each INode encountered by `Walk` is passed to `Enter`, children nodes will be ignored if the returned IVisitor is nil
5// `Exit` is called upon the exit of a node
6type IVisitor interface {
7 Enter(n INode) IVisitor
8 Exit(n INode)
9}
10
11// Walk traverses an AST in depth-first order
12func Walk(v IVisitor, n INode) {
13 if n == nil {
14 return
15 }
16
17 if v = v.Enter(n); v == nil {
18 return
19 }
20
21 defer v.Exit(n)
22
23 switch n := n.(type) {
24 case *AST:
25 Walk(v, &n.BlockStmt)
26 case *Var:
27 return
28 case *BlockStmt:
29 if n.List != nil {
30 for i := 0; i < len(n.List); i++ {
31 Walk(v, n.List[i])
32 }
33 }
34 case *EmptyStmt:
35 return
36 case *ExprStmt:
37 Walk(v, n.Value)
38 case *IfStmt:
39 Walk(v, n.Body)
40 Walk(v, n.Else)
41 Walk(v, n.Cond)
42 case *DoWhileStmt:
43 Walk(v, n.Body)
44 Walk(v, n.Cond)
45 case *WhileStmt:
46 Walk(v, n.Body)
47 Walk(v, n.Cond)
48 case *ForStmt:
49 if n.Body != nil {
50 Walk(v, n.Body)
51 }
52
53 Walk(v, n.Init)
54 Walk(v, n.Cond)
55 Walk(v, n.Post)
56 case *ForInStmt:
57 if n.Body != nil {
58 Walk(v, n.Body)
59 }
60
61 Walk(v, n.Init)
62 Walk(v, n.Value)
63 case *ForOfStmt:
64 if n.Body != nil {
65 Walk(v, n.Body)
66 }
67
68 Walk(v, n.Init)
69 Walk(v, n.Value)
70 case *CaseClause:
71 if n.List != nil {
72 for i := 0; i < len(n.List); i++ {
73 Walk(v, n.List[i])
74 }
75 }
76
77 Walk(v, n.Cond)
78 case *SwitchStmt:
79 if n.List != nil {
80 for i := 0; i < len(n.List); i++ {
81 Walk(v, &n.List[i])
82 }
83 }
84
85 Walk(v, n.Init)
86 case *BranchStmt:
87 return
88 case *ReturnStmt:
89 Walk(v, n.Value)
90 case *WithStmt:
91 Walk(v, n.Body)
92 Walk(v, n.Cond)
93 case *LabelledStmt:
94 Walk(v, n.Value)
95 case *ThrowStmt:
96 Walk(v, n.Value)
97 case *TryStmt:
98 if n.Body != nil {
99 Walk(v, n.Body)
100 }
101
102 if n.Catch != nil {
103 Walk(v, n.Catch)
104 }
105
106 if n.Finally != nil {
107 Walk(v, n.Finally)
108 }
109
110 Walk(v, n.Binding)
111 case *DebuggerStmt:
112 return
113 case *Alias:
114 return
115 case *ImportStmt:
116 if n.List != nil {
117 for i := 0; i < len(n.List); i++ {
118 Walk(v, &n.List[i])
119 }
120 }
121 case *ExportStmt:
122 if n.List != nil {
123 for i := 0; i < len(n.List); i++ {
124 Walk(v, &n.List[i])
125 }
126 }
127
128 Walk(v, n.Decl)
129 case *DirectivePrologueStmt:
130 return
131 case *PropertyName:
132 Walk(v, &n.Literal)
133 Walk(v, n.Computed)
134 case *BindingArray:
135 if n.List != nil {
136 for i := 0; i < len(n.List); i++ {
137 Walk(v, &n.List[i])
138 }
139 }
140
141 Walk(v, n.Rest)
142 case *BindingObjectItem:
143 if n.Key != nil {
144 Walk(v, n.Key)
145 }
146
147 Walk(v, &n.Value)
148 case *BindingObject:
149 if n.List != nil {
150 for i := 0; i < len(n.List); i++ {
151 Walk(v, &n.List[i])
152 }
153 }
154
155 if n.Rest != nil {
156 Walk(v, n.Rest)
157 }
158 case *BindingElement:
159 Walk(v, n.Binding)
160 Walk(v, n.Default)
161 case *VarDecl:
162 if n.List != nil {
163 for i := 0; i < len(n.List); i++ {
164 Walk(v, &n.List[i])
165 }
166 }
167 case *Params:
168 if n.List != nil {
169 for i := 0; i < len(n.List); i++ {
170 Walk(v, &n.List[i])
171 }
172 }
173
174 Walk(v, n.Rest)
175 case *FuncDecl:
176 Walk(v, &n.Body)
177 Walk(v, &n.Params)
178
179 if n.Name != nil {
180 Walk(v, n.Name)
181 }
182 case *MethodDecl:
183 Walk(v, &n.Body)
184 Walk(v, &n.Params)
185 Walk(v, &n.Name)
186 case *Field:
187 Walk(v, &n.Name)
188 Walk(v, n.Init)
189 case *ClassDecl:
190 if n.Name != nil {
191 Walk(v, n.Name)
192 }
193
194 Walk(v, n.Extends)
195
196 for _, item := range n.List {
197 if item.StaticBlock != nil {
198 Walk(v, item.StaticBlock)
199 } else if item.Method != nil {
200 Walk(v, item.Method)
201 } else {
202 Walk(v, &item.Field)
203 }
204 }
205 case *LiteralExpr:
206 return
207 case *Element:
208 Walk(v, n.Value)
209 case *ArrayExpr:
210 if n.List != nil {
211 for i := 0; i < len(n.List); i++ {
212 Walk(v, &n.List[i])
213 }
214 }
215 case *Property:
216 if n.Name != nil {
217 Walk(v, n.Name)
218 }
219
220 Walk(v, n.Value)
221 Walk(v, n.Init)
222 case *ObjectExpr:
223 if n.List != nil {
224 for i := 0; i < len(n.List); i++ {
225 Walk(v, &n.List[i])
226 }
227 }
228 case *TemplatePart:
229 Walk(v, n.Expr)
230 case *TemplateExpr:
231 if n.List != nil {
232 for i := 0; i < len(n.List); i++ {
233 Walk(v, &n.List[i])
234 }
235 }
236
237 Walk(v, n.Tag)
238 case *GroupExpr:
239 Walk(v, n.X)
240 case *IndexExpr:
241 Walk(v, n.X)
242 Walk(v, n.Y)
243 case *DotExpr:
244 Walk(v, n.X)
245 Walk(v, &n.Y)
246 case *NewTargetExpr:
247 return
248 case *ImportMetaExpr:
249 return
250 case *Arg:
251 Walk(v, n.Value)
252 case *Args:
253 if n.List != nil {
254 for i := 0; i < len(n.List); i++ {
255 Walk(v, &n.List[i])
256 }
257 }
258 case *NewExpr:
259 if n.Args != nil {
260 Walk(v, n.Args)
261 }
262
263 Walk(v, n.X)
264 case *CallExpr:
265 Walk(v, &n.Args)
266 Walk(v, n.X)
267 case *UnaryExpr:
268 Walk(v, n.X)
269 case *BinaryExpr:
270 Walk(v, n.X)
271 Walk(v, n.Y)
272 case *CondExpr:
273 Walk(v, n.Cond)
274 Walk(v, n.X)
275 Walk(v, n.Y)
276 case *YieldExpr:
277 Walk(v, n.X)
278 case *ArrowFunc:
279 Walk(v, &n.Body)
280 Walk(v, &n.Params)
281 case *CommaExpr:
282 for _, item := range n.List {
283 Walk(v, item)
284 }
285 default:
286 return
287 }
288}