OXIESEC PANEL
- Current Dir:
/
/
opt
/
alt
/
python311
/
lib
/
python3.11
/
site-packages
/
pygments
/
lexers
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
05/08/2024 06:42:35 PM
rwxr-xr-x
📄
__init__.py
11.78 KB
05/08/2024 06:42:35 PM
rw-r--r--
📁
__pycache__
-
05/08/2024 06:42:35 PM
rwxr-xr-x
📄
_ada_builtins.py
1.51 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_asy_builtins.py
26.65 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_cl_builtins.py
13.67 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_cocoa_builtins.py
102.71 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_csound_builtins.py
17.98 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_css_builtins.py
12.15 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_julia_builtins.py
11.6 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_lasso_builtins.py
131.36 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_lilypond_builtins.py
105.56 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_lua_builtins.py
7.92 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_luau_builtins.py
955 bytes
05/08/2024 06:42:35 PM
rw-r--r--
📄
_mapping.py
67.47 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_mql_builtins.py
24.13 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_mysql_builtins.py
25.23 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_openedge_builtins.py
48.24 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_php_builtins.py
105.39 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_postgres_builtins.py
13.03 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_qlik_builtins.py
12.3 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_scheme_builtins.py
31.8 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_scilab_builtins.py
51.18 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_sourcemod_builtins.py
26.15 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_stan_builtins.py
13.13 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_stata_builtins.py
26.59 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_tsql_builtins.py
15.1 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_usd_builtins.py
1.62 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_vbscript_builtins.py
4.13 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
_vim_builtins.py
55.73 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
actionscript.py
11.45 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ada.py
5.23 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
agile.py
896 bytes
05/08/2024 06:42:35 PM
rw-r--r--
📄
algebra.py
9.68 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ambient.py
2.54 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
amdgpu.py
1.68 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ampl.py
4.08 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
apdlexer.py
30.08 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
apl.py
3.32 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
archetype.py
11.27 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
arrow.py
3.48 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
arturo.py
11.15 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
asc.py
1.65 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
asm.py
40.95 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
asn1.py
4.16 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
automation.py
19.37 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
bare.py
2.95 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
basic.py
27.33 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
bdd.py
1.6 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
berry.py
3.13 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
bibtex.py
4.7 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
blueprint.py
6.04 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
boa.py
3.83 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
bqn.py
3.26 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
business.py
27.68 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
c_cpp.py
17.64 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
c_like.py
31.27 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
capnproto.py
2.12 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
carbon.py
3.14 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
cddl.py
4.96 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
chapel.py
5.04 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
clean.py
6.27 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
comal.py
3.1 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
compiled.py
1.39 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
configs.py
49.35 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
console.py
4.08 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
cplint.py
1.36 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
crystal.py
15.38 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
csound.py
16.6 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
css.py
24.77 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
d.py
9.69 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
dalvik.py
4.5 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
data.py
26.39 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
dax.py
7.91 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
devicetree.py
3.92 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
diff.py
5.26 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
dns.py
3.8 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
dotnet.py
37.07 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
dsls.py
35.88 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
dylan.py
10.15 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ecl.py
6.22 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
eiffel.py
2.63 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
elm.py
3.08 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
elpi.py
6.38 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
email.py
4.69 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
erlang.py
18.7 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
esoteric.py
10.25 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ezhil.py
3.2 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
factor.py
19.07 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
fantom.py
9.99 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
felix.py
9.43 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
fift.py
1.61 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
floscript.py
2.6 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
forth.py
7.02 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
fortran.py
10.14 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
foxpro.py
25.68 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
freefem.py
26.28 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
func.py
3.61 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
functional.py
693 bytes
05/08/2024 06:42:35 PM
rw-r--r--
📄
futhark.py
3.66 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
gcodelexer.py
874 bytes
05/08/2024 06:42:35 PM
rw-r--r--
📄
gdscript.py
7.39 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
go.py
3.69 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
grammar_notation.py
7.85 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
graph.py
4.01 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
graphics.py
38.23 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
graphql.py
5.47 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
graphviz.py
1.89 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
gsql.py
3.9 KB
05/08/2024 06:42:35 PM
rwxr-xr-x
📄
haskell.py
32.46 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
haxe.py
30.25 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
hdl.py
22.21 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
hexdump.py
3.57 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
html.py
20.09 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
idl.py
15.09 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
igor.py
30.88 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
inferno.py
3.06 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
installers.py
12.99 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
int_fiction.py
55.22 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
iolang.py
1.86 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
j.py
4.74 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
javascript.py
61.62 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
jmespath.py
2.03 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
jslt.py
3.61 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
jsonnet.py
5.5 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
jsx.py
2.18 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
julia.py
11.41 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
jvm.py
70.96 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
kuin.py
11.14 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
kusto.py
3.4 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ldap.py
6.4 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
lean.py
8.37 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
lilypond.py
9.52 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
lisp.py
153.97 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
macaulay2.py
32.07 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
make.py
7.65 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
markup.py
63.56 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
math.py
695 bytes
05/08/2024 06:42:35 PM
rw-r--r--
📄
matlab.py
129.85 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
maxima.py
2.65 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
meson.py
4.23 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
mime.py
7.4 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
minecraft.py
13.38 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
mips.py
4.55 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ml.py
34.56 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
modeling.py
13.36 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
modula2.py
51.83 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
mojo.py
23.61 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
monte.py
6.14 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
mosel.py
9.08 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ncl.py
62.5 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
nimrod.py
6.26 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
nit.py
2.66 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
nix.py
4.32 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
oberon.py
4.11 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
objective.py
22.7 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ooc.py
2.91 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
openscad.py
3.61 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
other.py
1.72 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
parasail.py
2.66 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
parsers.py
25.97 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
pascal.py
30.26 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
pawn.py
8.06 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
perl.py
38.27 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
phix.py
22.7 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
php.py
12.75 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
pointless.py
1.93 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
pony.py
3.2 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
praat.py
12.38 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
procfile.py
1.13 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
prolog.py
12.56 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
promql.py
4.63 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
prql.py
8.54 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ptx.py
4.4 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
python.py
52.38 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
q.py
6.77 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
qlik.py
3.61 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
qvt.py
5.96 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
r.py
6.19 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
rdf.py
15.67 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
rebol.py
17.83 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
resource.py
2.86 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ride.py
4.92 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
rita.py
1.1 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
rnc.py
1.93 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
roboconf.py
2.03 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
robotframework.py
18.02 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ruby.py
22.22 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
rust.py
8.07 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
sas.py
9.23 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
savi.py
4.76 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
scdoc.py
2.46 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
scripting.py
79.16 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
sgf.py
1.94 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
shell.py
35.38 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
sieve.py
2.46 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
slash.py
8.29 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
smalltalk.py
7.04 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
smithy.py
2.6 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
smv.py
2.74 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
snobol.py
2.71 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
solidity.py
3.09 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
soong.py
2.28 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
sophia.py
3.3 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
special.py
3.47 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
spice.py
2.72 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
sql.py
41.6 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
srcinfo.py
1.71 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
stata.py
6.26 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
supercollider.py
3.61 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
tact.py
10.56 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
tal.py
2.84 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
tcl.py
5.38 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
teal.py
3.44 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
templates.py
73.94 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
teraterm.py
9.49 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
testing.py
10.56 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
text.py
1.02 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
textedit.py
7.58 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
textfmts.py
15.16 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
theorem.py
17.44 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
thingsdb.py
5.88 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
tlb.py
1.42 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
tls.py
1.5 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
tnt.py
10.21 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
trafficscript.py
1.47 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
typoscript.py
8.14 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
typst.py
4.24 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
ul4.py
10.25 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
unicon.py
18.19 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
urbi.py
5.94 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
usd.py
3.23 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
varnish.py
7.3 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
verification.py
3.84 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
verifpal.py
2.6 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
vip.py
5.58 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
vyper.py
5.46 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
web.py
913 bytes
05/08/2024 06:42:35 PM
rw-r--r--
📄
webassembly.py
5.56 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
webidl.py
10.27 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
webmisc.py
39.61 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
wgsl.py
11.6 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
whiley.py
3.92 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
wowtoc.py
3.98 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
wren.py
3.15 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
x10.py
1.9 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
xorg.py
925 bytes
05/08/2024 06:42:35 PM
rw-r--r--
📄
yang.py
4.39 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
yara.py
2.37 KB
05/08/2024 06:42:35 PM
rw-r--r--
📄
zig.py
3.88 KB
05/08/2024 06:42:35 PM
rw-r--r--
Editing: business.py
Close
""" pygments.lexers.business ~~~~~~~~~~~~~~~~~~~~~~~~ Lexers for "business-oriented" languages. :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ import re from pygments.lexer import RegexLexer, include, words, bygroups from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Punctuation, Error, Whitespace from pygments.lexers._openedge_builtins import OPENEDGEKEYWORDS __all__ = ['CobolLexer', 'CobolFreeformatLexer', 'ABAPLexer', 'OpenEdgeLexer', 'GoodDataCLLexer', 'MaqlLexer'] class CobolLexer(RegexLexer): """ Lexer for OpenCOBOL code. """ name = 'COBOL' aliases = ['cobol'] filenames = ['*.cob', '*.COB', '*.cpy', '*.CPY'] mimetypes = ['text/x-cobol'] url = 'https://en.wikipedia.org/wiki/COBOL' version_added = '1.6' flags = re.IGNORECASE | re.MULTILINE # Data Types: by PICTURE and USAGE # Operators: **, *, +, -, /, <, >, <=, >=, =, <> # Logical (?): NOT, AND, OR # Reserved words: # http://opencobol.add1tocobol.com/#reserved-words # Intrinsics: # http://opencobol.add1tocobol.com/#does-opencobol-implement-any-intrinsic-functions tokens = { 'root': [ include('comment'), include('strings'), include('core'), include('nums'), (r'[a-z0-9]([\w\-]*[a-z0-9]+)?', Name.Variable), # (r'[\s]+', Text), (r'[ \t]+', Whitespace), ], 'comment': [ (r'(^.{6}[*/].*\n|^.{6}|\*>.*\n)', Comment), ], 'core': [ # Figurative constants (r'(^|(?<=[^\w\-]))(ALL\s+)?' r'((ZEROES)|(HIGH-VALUE|LOW-VALUE|QUOTE|SPACE|ZERO)(S)?)' r'\s*($|(?=[^\w\-]))', Name.Constant), # Reserved words STATEMENTS and other bolds (words(( 'ACCEPT', 'ADD', 'ALLOCATE', 'CALL', 'CANCEL', 'CLOSE', 'COMPUTE', 'CONFIGURATION', 'CONTINUE', 'DATA', 'DELETE', 'DISPLAY', 'DIVIDE', 'DIVISION', 'ELSE', 'END', 'END-ACCEPT', 'END-ADD', 'END-CALL', 'END-COMPUTE', 'END-DELETE', 'END-DISPLAY', 'END-DIVIDE', 'END-EVALUATE', 'END-IF', 'END-MULTIPLY', 'END-OF-PAGE', 'END-PERFORM', 'END-READ', 'END-RETURN', 'END-REWRITE', 'END-SEARCH', 'END-START', 'END-STRING', 'END-SUBTRACT', 'END-UNSTRING', 'END-WRITE', 'ENVIRONMENT', 'EVALUATE', 'EXIT', 'FD', 'FILE', 'FILE-CONTROL', 'FOREVER', 'FREE', 'GENERATE', 'GO', 'GOBACK', 'IDENTIFICATION', 'IF', 'INITIALIZE', 'INITIATE', 'INPUT-OUTPUT', 'INSPECT', 'INVOKE', 'I-O-CONTROL', 'LINKAGE', 'LOCAL-STORAGE', 'MERGE', 'MOVE', 'MULTIPLY', 'OPEN', 'PERFORM', 'PROCEDURE', 'PROGRAM-ID', 'RAISE', 'READ', 'RELEASE', 'RESUME', 'RETURN', 'REWRITE', 'SCREEN', 'SD', 'SEARCH', 'SECTION', 'SET', 'SORT', 'START', 'STOP', 'STRING', 'SUBTRACT', 'SUPPRESS', 'TERMINATE', 'THEN', 'UNLOCK', 'UNSTRING', 'USE', 'VALIDATE', 'WORKING-STORAGE', 'WRITE'), prefix=r'(^|(?<=[^\w\-]))', suffix=r'\s*($|(?=[^\w\-]))'), Keyword.Reserved), # Reserved words (words(( 'ACCESS', 'ADDRESS', 'ADVANCING', 'AFTER', 'ALL', 'ALPHABET', 'ALPHABETIC', 'ALPHABETIC-LOWER', 'ALPHABETIC-UPPER', 'ALPHANUMERIC', 'ALPHANUMERIC-EDITED', 'ALSO', 'ALTER', 'ALTERNATE' 'ANY', 'ARE', 'AREA', 'AREAS', 'ARGUMENT-NUMBER', 'ARGUMENT-VALUE', 'AS', 'ASCENDING', 'ASSIGN', 'AT', 'AUTO', 'AUTO-SKIP', 'AUTOMATIC', 'AUTOTERMINATE', 'BACKGROUND-COLOR', 'BASED', 'BEEP', 'BEFORE', 'BELL', 'BLANK', 'BLINK', 'BLOCK', 'BOTTOM', 'BY', 'BYTE-LENGTH', 'CHAINING', 'CHARACTER', 'CHARACTERS', 'CLASS', 'CODE', 'CODE-SET', 'COL', 'COLLATING', 'COLS', 'COLUMN', 'COLUMNS', 'COMMA', 'COMMAND-LINE', 'COMMIT', 'COMMON', 'CONSTANT', 'CONTAINS', 'CONTENT', 'CONTROL', 'CONTROLS', 'CONVERTING', 'COPY', 'CORR', 'CORRESPONDING', 'COUNT', 'CRT', 'CURRENCY', 'CURSOR', 'CYCLE', 'DATE', 'DAY', 'DAY-OF-WEEK', 'DE', 'DEBUGGING', 'DECIMAL-POINT', 'DECLARATIVES', 'DEFAULT', 'DELIMITED', 'DELIMITER', 'DEPENDING', 'DESCENDING', 'DETAIL', 'DISK', 'DOWN', 'DUPLICATES', 'DYNAMIC', 'EBCDIC', 'ENTRY', 'ENVIRONMENT-NAME', 'ENVIRONMENT-VALUE', 'EOL', 'EOP', 'EOS', 'ERASE', 'ERROR', 'ESCAPE', 'EXCEPTION', 'EXCLUSIVE', 'EXTEND', 'EXTERNAL', 'FILE-ID', 'FILLER', 'FINAL', 'FIRST', 'FIXED', 'FLOAT-LONG', 'FLOAT-SHORT', 'FOOTING', 'FOR', 'FOREGROUND-COLOR', 'FORMAT', 'FROM', 'FULL', 'FUNCTION', 'FUNCTION-ID', 'GIVING', 'GLOBAL', 'GROUP', 'HEADING', 'HIGHLIGHT', 'I-O', 'ID', 'IGNORE', 'IGNORING', 'IN', 'INDEX', 'INDEXED', 'INDICATE', 'INITIAL', 'INITIALIZED', 'INPUT', 'INTO', 'INTRINSIC', 'INVALID', 'IS', 'JUST', 'JUSTIFIED', 'KEY', 'LABEL', 'LAST', 'LEADING', 'LEFT', 'LENGTH', 'LIMIT', 'LIMITS', 'LINAGE', 'LINAGE-COUNTER', 'LINE', 'LINES', 'LOCALE', 'LOCK', 'LOWLIGHT', 'MANUAL', 'MEMORY', 'MINUS', 'MODE', 'MULTIPLE', 'NATIONAL', 'NATIONAL-EDITED', 'NATIVE', 'NEGATIVE', 'NEXT', 'NO', 'NULL', 'NULLS', 'NUMBER', 'NUMBERS', 'NUMERIC', 'NUMERIC-EDITED', 'OBJECT-COMPUTER', 'OCCURS', 'OF', 'OFF', 'OMITTED', 'ON', 'ONLY', 'OPTIONAL', 'ORDER', 'ORGANIZATION', 'OTHER', 'OUTPUT', 'OVERFLOW', 'OVERLINE', 'PACKED-DECIMAL', 'PADDING', 'PAGE', 'PARAGRAPH', 'PLUS', 'POINTER', 'POSITION', 'POSITIVE', 'PRESENT', 'PREVIOUS', 'PRINTER', 'PRINTING', 'PROCEDURE-POINTER', 'PROCEDURES', 'PROCEED', 'PROGRAM', 'PROGRAM-POINTER', 'PROMPT', 'QUOTE', 'QUOTES', 'RANDOM', 'RD', 'RECORD', 'RECORDING', 'RECORDS', 'RECURSIVE', 'REDEFINES', 'REEL', 'REFERENCE', 'RELATIVE', 'REMAINDER', 'REMOVAL', 'RENAMES', 'REPLACING', 'REPORT', 'REPORTING', 'REPORTS', 'REPOSITORY', 'REQUIRED', 'RESERVE', 'RETURNING', 'REVERSE-VIDEO', 'REWIND', 'RIGHT', 'ROLLBACK', 'ROUNDED', 'RUN', 'SAME', 'SCROLL', 'SECURE', 'SEGMENT-LIMIT', 'SELECT', 'SENTENCE', 'SEPARATE', 'SEQUENCE', 'SEQUENTIAL', 'SHARING', 'SIGN', 'SIGNED', 'SIGNED-INT', 'SIGNED-LONG', 'SIGNED-SHORT', 'SIZE', 'SORT-MERGE', 'SOURCE', 'SOURCE-COMPUTER', 'SPECIAL-NAMES', 'STANDARD', 'STANDARD-1', 'STANDARD-2', 'STATUS', 'SUBKEY', 'SUM', 'SYMBOLIC', 'SYNC', 'SYNCHRONIZED', 'TALLYING', 'TAPE', 'TEST', 'THROUGH', 'THRU', 'TIME', 'TIMES', 'TO', 'TOP', 'TRAILING', 'TRANSFORM', 'TYPE', 'UNDERLINE', 'UNIT', 'UNSIGNED', 'UNSIGNED-INT', 'UNSIGNED-LONG', 'UNSIGNED-SHORT', 'UNTIL', 'UP', 'UPDATE', 'UPON', 'USAGE', 'USING', 'VALUE', 'VALUES', 'VARYING', 'WAIT', 'WHEN', 'WITH', 'WORDS', 'YYYYDDD', 'YYYYMMDD'), prefix=r'(^|(?<=[^\w\-]))', suffix=r'\s*($|(?=[^\w\-]))'), Keyword.Pseudo), # inactive reserved words (words(( 'ACTIVE-CLASS', 'ALIGNED', 'ANYCASE', 'ARITHMETIC', 'ATTRIBUTE', 'B-AND', 'B-NOT', 'B-OR', 'B-XOR', 'BIT', 'BOOLEAN', 'CD', 'CENTER', 'CF', 'CH', 'CHAIN', 'CLASS-ID', 'CLASSIFICATION', 'COMMUNICATION', 'CONDITION', 'DATA-POINTER', 'DESTINATION', 'DISABLE', 'EC', 'EGI', 'EMI', 'ENABLE', 'END-RECEIVE', 'ENTRY-CONVENTION', 'EO', 'ESI', 'EXCEPTION-OBJECT', 'EXPANDS', 'FACTORY', 'FLOAT-BINARY-16', 'FLOAT-BINARY-34', 'FLOAT-BINARY-7', 'FLOAT-DECIMAL-16', 'FLOAT-DECIMAL-34', 'FLOAT-EXTENDED', 'FORMAT', 'FUNCTION-POINTER', 'GET', 'GROUP-USAGE', 'IMPLEMENTS', 'INFINITY', 'INHERITS', 'INTERFACE', 'INTERFACE-ID', 'INVOKE', 'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_MESSAGES', 'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME', 'LINE-COUNTER', 'MESSAGE', 'METHOD', 'METHOD-ID', 'NESTED', 'NONE', 'NORMAL', 'OBJECT', 'OBJECT-REFERENCE', 'OPTIONS', 'OVERRIDE', 'PAGE-COUNTER', 'PF', 'PH', 'PROPERTY', 'PROTOTYPE', 'PURGE', 'QUEUE', 'RAISE', 'RAISING', 'RECEIVE', 'RELATION', 'REPLACE', 'REPRESENTS-NOT-A-NUMBER', 'RESET', 'RESUME', 'RETRY', 'RF', 'RH', 'SECONDS', 'SEGMENT', 'SELF', 'SEND', 'SOURCES', 'STATEMENT', 'STEP', 'STRONG', 'SUB-QUEUE-1', 'SUB-QUEUE-2', 'SUB-QUEUE-3', 'SUPER', 'SYMBOL', 'SYSTEM-DEFAULT', 'TABLE', 'TERMINAL', 'TEXT', 'TYPEDEF', 'UCS-4', 'UNIVERSAL', 'USER-DEFAULT', 'UTF-16', 'UTF-8', 'VAL-STATUS', 'VALID', 'VALIDATE', 'VALIDATE-STATUS'), prefix=r'(^|(?<=[^\w\-]))', suffix=r'\s*($|(?=[^\w\-]))'), Error), # Data Types (r'(^|(?<=[^\w\-]))' r'(PIC\s+.+?(?=(\s|\.\s))|PICTURE\s+.+?(?=(\s|\.\s))|' r'(COMPUTATIONAL)(-[1-5X])?|(COMP)(-[1-5X])?|' r'BINARY-C-LONG|' r'BINARY-CHAR|BINARY-DOUBLE|BINARY-LONG|BINARY-SHORT|' r'BINARY)\s*($|(?=[^\w\-]))', Keyword.Type), # Operators (r'(\*\*|\*|\+|-|/|<=|>=|<|>|==|/=|=)', Operator), # (r'(::)', Keyword.Declaration), (r'([(),;:&%.])', Punctuation), # Intrinsics (r'(^|(?<=[^\w\-]))(ABS|ACOS|ANNUITY|ASIN|ATAN|BYTE-LENGTH|' r'CHAR|COMBINED-DATETIME|CONCATENATE|COS|CURRENT-DATE|' r'DATE-OF-INTEGER|DATE-TO-YYYYMMDD|DAY-OF-INTEGER|DAY-TO-YYYYDDD|' r'EXCEPTION-(?:FILE|LOCATION|STATEMENT|STATUS)|EXP10|EXP|E|' r'FACTORIAL|FRACTION-PART|INTEGER-OF-(?:DATE|DAY|PART)|INTEGER|' r'LENGTH|LOCALE-(?:DATE|TIME(?:-FROM-SECONDS)?)|LOG(?:10)?|' r'LOWER-CASE|MAX|MEAN|MEDIAN|MIDRANGE|MIN|MOD|NUMVAL(?:-C)?|' r'ORD(?:-MAX|-MIN)?|PI|PRESENT-VALUE|RANDOM|RANGE|REM|REVERSE|' r'SECONDS-FROM-FORMATTED-TIME|SECONDS-PAST-MIDNIGHT|SIGN|SIN|SQRT|' r'STANDARD-DEVIATION|STORED-CHAR-LENGTH|SUBSTITUTE(?:-CASE)?|' r'SUM|TAN|TEST-DATE-YYYYMMDD|TEST-DAY-YYYYDDD|TRIM|' r'UPPER-CASE|VARIANCE|WHEN-COMPILED|YEAR-TO-YYYY)\s*' r'($|(?=[^\w\-]))', Name.Function), # Booleans (r'(^|(?<=[^\w\-]))(true|false)\s*($|(?=[^\w\-]))', Name.Builtin), # Comparing Operators (r'(^|(?<=[^\w\-]))(equal|equals|ne|lt|le|gt|ge|' r'greater|less|than|not|and|or)\s*($|(?=[^\w\-]))', Operator.Word), ], # \"[^\"\n]*\"|\'[^\'\n]*\' 'strings': [ # apparently strings can be delimited by EOL if they are continued # in the next line (r'"[^"\n]*("|\n)', String.Double), (r"'[^'\n]*('|\n)", String.Single), ], 'nums': [ (r'\d+(\s*|\.$|$)', Number.Integer), (r'[+-]?\d*\.\d+(E[-+]?\d+)?', Number.Float), (r'[+-]?\d+\.\d*(E[-+]?\d+)?', Number.Float), ], } class CobolFreeformatLexer(CobolLexer): """ Lexer for Free format OpenCOBOL code. """ name = 'COBOLFree' aliases = ['cobolfree'] filenames = ['*.cbl', '*.CBL'] mimetypes = [] url = 'https://opencobol.add1tocobol.com' version_added = '1.6' flags = re.IGNORECASE | re.MULTILINE tokens = { 'comment': [ (r'(\*>.*\n|^\w*\*.*$)', Comment), ], } class ABAPLexer(RegexLexer): """ Lexer for ABAP, SAP's integrated language. """ name = 'ABAP' aliases = ['abap'] filenames = ['*.abap', '*.ABAP'] mimetypes = ['text/x-abap'] url = 'https://community.sap.com/topics/abap' version_added = '1.1' flags = re.IGNORECASE | re.MULTILINE tokens = { 'common': [ (r'\s+', Whitespace), (r'^\*.*$', Comment.Single), (r'\".*?\n', Comment.Single), (r'##\w+', Comment.Special), ], 'variable-names': [ (r'<\S+>', Name.Variable), (r'\w[\w~]*(?:(\[\])|->\*)?', Name.Variable), ], 'root': [ include('common'), # function calls (r'CALL\s+(?:BADI|CUSTOMER-FUNCTION|FUNCTION)', Keyword), (r'(CALL\s+(?:DIALOG|SCREEN|SUBSCREEN|SELECTION-SCREEN|' r'TRANSACTION|TRANSFORMATION))\b', Keyword), (r'(FORM|PERFORM)(\s+)(\w+)', bygroups(Keyword, Whitespace, Name.Function)), (r'(PERFORM)(\s+)(\()(\w+)(\))', bygroups(Keyword, Whitespace, Punctuation, Name.Variable, Punctuation)), (r'(MODULE)(\s+)(\S+)(\s+)(INPUT|OUTPUT)', bygroups(Keyword, Whitespace, Name.Function, Whitespace, Keyword)), # method implementation (r'(METHOD)(\s+)([\w~]+)', bygroups(Keyword, Whitespace, Name.Function)), # method calls (r'(\s+)([\w\-]+)([=\-]>)([\w\-~]+)', bygroups(Whitespace, Name.Variable, Operator, Name.Function)), # call methodnames returning style (r'(?<=(=|-)>)([\w\-~]+)(?=\()', Name.Function), # text elements (r'(TEXT)(-)(\d{3})', bygroups(Keyword, Punctuation, Number.Integer)), (r'(TEXT)(-)(\w{3})', bygroups(Keyword, Punctuation, Name.Variable)), # keywords with dashes in them. # these need to be first, because for instance the -ID part # of MESSAGE-ID wouldn't get highlighted if MESSAGE was # first in the list of keywords. (r'(ADD-CORRESPONDING|AUTHORITY-CHECK|' r'CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|' r'DELETE-ADJACENT|DIVIDE-CORRESPONDING|' r'EDITOR-CALL|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|EXIT-COMMAND|' r'FIELD-GROUPS|FIELD-SYMBOLS|FIELD-SYMBOL|FUNCTION-POOL|' r'INTERFACE-POOL|INVERTED-DATE|' r'LOAD-OF-PROGRAM|LOG-POINT|' r'MESSAGE-ID|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|' r'NEW-LINE|NEW-PAGE|NEW-SECTION|NO-EXTENSION|' r'OUTPUT-LENGTH|PRINT-CONTROL|' r'SELECT-OPTIONS|START-OF-SELECTION|SUBTRACT-CORRESPONDING|' r'SYNTAX-CHECK|SYSTEM-EXCEPTIONS|' r'TYPE-POOL|TYPE-POOLS|NO-DISPLAY' r')\b', Keyword), # keyword kombinations (r'(?<![-\>])(CREATE\s+(PUBLIC|PRIVATE|DATA|OBJECT)|' r'(PUBLIC|PRIVATE|PROTECTED)\s+SECTION|' r'(TYPE|LIKE)\s+((LINE\s+OF|REF\s+TO|' r'(SORTED|STANDARD|HASHED)\s+TABLE\s+OF))?|' r'FROM\s+(DATABASE|MEMORY)|CALL\s+METHOD|' r'(GROUP|ORDER) BY|HAVING|SEPARATED BY|' r'GET\s+(BADI|BIT|CURSOR|DATASET|LOCALE|PARAMETER|' r'PF-STATUS|(PROPERTY|REFERENCE)\s+OF|' r'RUN\s+TIME|TIME\s+(STAMP)?)?|' r'SET\s+(BIT|BLANK\s+LINES|COUNTRY|CURSOR|DATASET|EXTENDED\s+CHECK|' r'HANDLER|HOLD\s+DATA|LANGUAGE|LEFT\s+SCROLL-BOUNDARY|' r'LOCALE|MARGIN|PARAMETER|PF-STATUS|PROPERTY\s+OF|' r'RUN\s+TIME\s+(ANALYZER|CLOCK\s+RESOLUTION)|SCREEN|' r'TITLEBAR|UPADTE\s+TASK\s+LOCAL|USER-COMMAND)|' r'CONVERT\s+((INVERTED-)?DATE|TIME|TIME\s+STAMP|TEXT)|' r'(CLOSE|OPEN)\s+(DATASET|CURSOR)|' r'(TO|FROM)\s+(DATA BUFFER|INTERNAL TABLE|MEMORY ID|' r'DATABASE|SHARED\s+(MEMORY|BUFFER))|' r'DESCRIBE\s+(DISTANCE\s+BETWEEN|FIELD|LIST|TABLE)|' r'FREE\s(MEMORY|OBJECT)?|' r'PROCESS\s+(BEFORE\s+OUTPUT|AFTER\s+INPUT|' r'ON\s+(VALUE-REQUEST|HELP-REQUEST))|' r'AT\s+(LINE-SELECTION|USER-COMMAND|END\s+OF|NEW)|' r'AT\s+SELECTION-SCREEN(\s+(ON(\s+(BLOCK|(HELP|VALUE)-REQUEST\s+FOR|' r'END\s+OF|RADIOBUTTON\s+GROUP))?|OUTPUT))?|' r'SELECTION-SCREEN:?\s+((BEGIN|END)\s+OF\s+((TABBED\s+)?BLOCK|LINE|' r'SCREEN)|COMMENT|FUNCTION\s+KEY|' r'INCLUDE\s+BLOCKS|POSITION|PUSHBUTTON|' r'SKIP|ULINE)|' r'LEAVE\s+(LIST-PROCESSING|PROGRAM|SCREEN|' r'TO LIST-PROCESSING|TO TRANSACTION)' r'(ENDING|STARTING)\s+AT|' r'FORMAT\s+(COLOR|INTENSIFIED|INVERSE|HOTSPOT|INPUT|FRAMES|RESET)|' r'AS\s+(CHECKBOX|SUBSCREEN|WINDOW)|' r'WITH\s+(((NON-)?UNIQUE)?\s+KEY|FRAME)|' r'(BEGIN|END)\s+OF|' r'DELETE(\s+ADJACENT\s+DUPLICATES\sFROM)?|' r'COMPARING(\s+ALL\s+FIELDS)?|' r'(INSERT|APPEND)(\s+INITIAL\s+LINE\s+(IN)?TO|\s+LINES\s+OF)?|' r'IN\s+((BYTE|CHARACTER)\s+MODE|PROGRAM)|' r'END-OF-(DEFINITION|PAGE|SELECTION)|' r'WITH\s+FRAME(\s+TITLE)|' r'(REPLACE|FIND)\s+((FIRST|ALL)\s+OCCURRENCES?\s+OF\s+)?(SUBSTRING|REGEX)?|' r'MATCH\s+(LENGTH|COUNT|LINE|OFFSET)|' r'(RESPECTING|IGNORING)\s+CASE|' r'IN\s+UPDATE\s+TASK|' r'(SOURCE|RESULT)\s+(XML)?|' r'REFERENCE\s+INTO|' # simple kombinations r'AND\s+(MARK|RETURN)|CLIENT\s+SPECIFIED|CORRESPONDING\s+FIELDS\s+OF|' r'IF\s+FOUND|FOR\s+EVENT|INHERITING\s+FROM|LEAVE\s+TO\s+SCREEN|' r'LOOP\s+AT\s+(SCREEN)?|LOWER\s+CASE|MATCHCODE\s+OBJECT|MODIF\s+ID|' r'MODIFY\s+SCREEN|NESTING\s+LEVEL|NO\s+INTERVALS|OF\s+STRUCTURE|' r'RADIOBUTTON\s+GROUP|RANGE\s+OF|REF\s+TO|SUPPRESS DIALOG|' r'TABLE\s+OF|UPPER\s+CASE|TRANSPORTING\s+NO\s+FIELDS|' r'VALUE\s+CHECK|VISIBLE\s+LENGTH|HEADER\s+LINE|COMMON\s+PART)\b', Keyword), # single word keywords. (r'(^|(?<=(\s|\.)))(ABBREVIATED|ABSTRACT|ADD|ALIASES|ALIGN|ALPHA|' r'ASSERT|AS|ASSIGN(ING)?|AT(\s+FIRST)?|' r'BACK|BLOCK|BREAK-POINT|' r'CASE|CAST|CATCH|CHANGING|CHECK|CLASS|CLEAR|COLLECT|COLOR|COMMIT|COND|CONV|' r'CREATE|COMMUNICATION|COMPONENTS?|COMPUTE|CONCATENATE|CONDENSE|' r'CONSTANTS|CONTEXTS|CONTINUE|CONTROLS|COUNTRY|CURRENCY|' r'DATA|DATE|DECIMALS|DEFAULT|DEFINE|DEFINITION|DEFERRED|DEMAND|' r'DETAIL|DIRECTORY|DIVIDE|DO|DUMMY|' r'ELSE(IF)?|ENDAT|ENDCASE|ENDCATCH|ENDCLASS|ENDDO|ENDFORM|ENDFUNCTION|' r'ENDIF|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDSELECT|ENDTRY|ENDWHILE|' r'ENHANCEMENT|EVENTS|EXACT|EXCEPTIONS?|EXIT|EXPONENT|EXPORT|EXPORTING|EXTRACT|' r'FETCH|FIELDS?|FOR|FORM|FORMAT|FREE|FROM|FUNCTION|' r'HIDE|' r'ID|IF|IMPORT|IMPLEMENTATION|IMPORTING|IN|INCLUDE|INCLUDING|' r'INDEX|INFOTYPES|INITIALIZATION|INTERFACE|INTERFACES|INTO|' r'LANGUAGE|LEAVE|LENGTH|LINES|LOAD|LOCAL|' r'JOIN|' r'KEY|' r'NEW|NEXT|' r'MAXIMUM|MESSAGE|METHOD[S]?|MINIMUM|MODULE|MODIFIER|MODIFY|MOVE|MULTIPLY|' r'NODES|NUMBER|' r'OBLIGATORY|OBJECT|OF|OFF|ON|OTHERS|OVERLAY|' r'PACK|PAD|PARAMETERS|PERCENTAGE|POSITION|PROGRAM|PROVIDE|PUBLIC|PUT|PF\d\d|' r'RAISE|RAISING|RANGES?|READ|RECEIVE|REDEFINITION|REFRESH|REJECT|REPORT|RESERVE|' r'REF|RESUME|RETRY|RETURN|RETURNING|RIGHT|ROLLBACK|REPLACE|' r'SCROLL|SEARCH|SELECT|SHIFT|SIGN|SINGLE|SIZE|SKIP|SORT|SPLIT|STATICS|STOP|' r'STYLE|SUBMATCHES|SUBMIT|SUBTRACT|SUM(?!\()|SUMMARY|SUMMING|SUPPLY|SWITCH|' r'TABLE|TABLES|TIMESTAMP|TIMES?|TIMEZONE|TITLE|\??TO|' r'TOP-OF-PAGE|TRANSFER|TRANSLATE|TRY|TYPES|' r'ULINE|UNDER|UNPACK|UPDATE|USING|' r'VALUE|VALUES|VIA|VARYING|VARY|' r'WAIT|WHEN|WHERE|WIDTH|WHILE|WITH|WINDOW|WRITE|XSD|ZERO)\b', Keyword), # builtins (r'(abs|acos|asin|atan|' r'boolc|boolx|bit_set|' r'char_off|charlen|ceil|cmax|cmin|condense|contains|' r'contains_any_of|contains_any_not_of|concat_lines_of|cos|cosh|' r'count|count_any_of|count_any_not_of|' r'dbmaxlen|distance|' r'escape|exp|' r'find|find_end|find_any_of|find_any_not_of|floor|frac|from_mixed|' r'insert|' r'lines|log|log10|' r'match|matches|' r'nmax|nmin|numofchar|' r'repeat|replace|rescale|reverse|round|' r'segment|shift_left|shift_right|sign|sin|sinh|sqrt|strlen|' r'substring|substring_after|substring_from|substring_before|substring_to|' r'tan|tanh|to_upper|to_lower|to_mixed|translate|trunc|' r'xstrlen)(\()\b', bygroups(Name.Builtin, Punctuation)), (r'&[0-9]', Name), (r'[0-9]+', Number.Integer), # operators which look like variable names before # parsing variable names. (r'(?<=(\s|.))(AND|OR|EQ|NE|GT|LT|GE|LE|CO|CN|CA|NA|CS|NOT|NS|CP|NP|' r'BYTE-CO|BYTE-CN|BYTE-CA|BYTE-NA|BYTE-CS|BYTE-NS|' r'IS\s+(NOT\s+)?(INITIAL|ASSIGNED|REQUESTED|BOUND))\b', Operator.Word), include('variable-names'), # standard operators after variable names, # because < and > are part of field symbols. (r'[?*<>=\-+&]', Operator), (r"'(''|[^'])*'", String.Single), (r"`([^`])*`", String.Single), (r"([|}])([^{}|]*?)([|{])", bygroups(Punctuation, String.Single, Punctuation)), (r'[/;:()\[\],.]', Punctuation), (r'(!)(\w+)', bygroups(Operator, Name)), ], } class OpenEdgeLexer(RegexLexer): """ Lexer for OpenEdge ABL (formerly Progress) source code. """ name = 'OpenEdge ABL' aliases = ['openedge', 'abl', 'progress'] filenames = ['*.p', '*.cls'] mimetypes = ['text/x-openedge', 'application/x-openedge'] url = 'https://www.progress.com/openedge/features/abl' version_added = '1.5' types = (r'(?i)(^|(?<=[^\w\-]))(CHARACTER|CHAR|CHARA|CHARAC|CHARACT|CHARACTE|' r'COM-HANDLE|DATE|DATETIME|DATETIME-TZ|' r'DECIMAL|DEC|DECI|DECIM|DECIMA|HANDLE|' r'INT64|INTEGER|INT|INTE|INTEG|INTEGE|' r'LOGICAL|LONGCHAR|MEMPTR|RAW|RECID|ROWID)\s*($|(?=[^\w\-]))') keywords = words(OPENEDGEKEYWORDS, prefix=r'(?i)(^|(?<=[^\w\-]))', suffix=r'\s*($|(?=[^\w\-]))') tokens = { 'root': [ (r'/\*', Comment.Multiline, 'comment'), (r'\{', Comment.Preproc, 'preprocessor'), (r'\s*&.*', Comment.Preproc), (r'0[xX][0-9a-fA-F]+[LlUu]*', Number.Hex), (r'(?i)(DEFINE|DEF|DEFI|DEFIN)\b', Keyword.Declaration), (types, Keyword.Type), (keywords, Name.Builtin), (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double), (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single), (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float), (r'[0-9]+', Number.Integer), (r'\s+', Whitespace), (r'[+*/=-]', Operator), (r'[.:()]', Punctuation), (r'.', Name.Variable), # Lazy catch-all ], 'comment': [ (r'[^*/]', Comment.Multiline), (r'/\*', Comment.Multiline, '#push'), (r'\*/', Comment.Multiline, '#pop'), (r'[*/]', Comment.Multiline) ], 'preprocessor': [ (r'[^{}]', Comment.Preproc), (r'\{', Comment.Preproc, '#push'), (r'\}', Comment.Preproc, '#pop'), ], } def analyse_text(text): """Try to identify OpenEdge ABL based on a few common constructs.""" result = 0 if 'END.' in text: result += 0.05 if 'END PROCEDURE.' in text: result += 0.05 if 'ELSE DO:' in text: result += 0.05 return result class GoodDataCLLexer(RegexLexer): """ Lexer for GoodData-CL script files. """ name = 'GoodData-CL' aliases = ['gooddata-cl'] filenames = ['*.gdc'] mimetypes = ['text/x-gooddata-cl'] url = 'https://github.com/gooddata/GoodData-CL' version_added = '1.4' flags = re.IGNORECASE # Syntax: # https://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/com/gooddata/processor/COMMANDS.txt tokens = { 'root': [ # Comments (r'#.*', Comment.Single), # Function call (r'[a-z]\w*', Name.Function), # Argument list (r'\(', Punctuation, 'args-list'), # Punctuation (r';', Punctuation), # Space is not significant (r'\s+', Text) ], 'args-list': [ (r'\)', Punctuation, '#pop'), (r',', Punctuation), (r'[a-z]\w*', Name.Variable), (r'=', Operator), (r'"', String, 'string-literal'), (r'[0-9]+(?:\.[0-9]+)?(?:e[+-]?[0-9]{1,3})?', Number), # Space is not significant (r'\s', Whitespace) ], 'string-literal': [ (r'\\[tnrfbae"\\]', String.Escape), (r'"', String, '#pop'), (r'[^\\"]+', String) ] } class MaqlLexer(RegexLexer): """ Lexer for GoodData MAQL scripts. """ name = 'MAQL' aliases = ['maql'] filenames = ['*.maql'] mimetypes = ['text/x-gooddata-maql', 'application/x-gooddata-maql'] url = 'https://help.gooddata.com/doc/enterprise/en/dashboards-and-insights/maql-analytical-query-language' version_added = '1.4' flags = re.IGNORECASE tokens = { 'root': [ # IDENTITY (r'IDENTIFIER\b', Name.Builtin), # IDENTIFIER (r'\{[^}]+\}', Name.Variable), # NUMBER (r'[0-9]+(?:\.[0-9]+)?(?:e[+-]?[0-9]{1,3})?', Number), # STRING (r'"', String, 'string-literal'), # RELATION (r'\<\>|\!\=', Operator), (r'\=|\>\=|\>|\<\=|\<', Operator), # := (r'\:\=', Operator), # OBJECT (r'\[[^]]+\]', Name.Variable.Class), # keywords (words(( 'DIMENSION', 'DIMENSIONS', 'BOTTOM', 'METRIC', 'COUNT', 'OTHER', 'FACT', 'WITH', 'TOP', 'OR', 'ATTRIBUTE', 'CREATE', 'PARENT', 'FALSE', 'ROW', 'ROWS', 'FROM', 'ALL', 'AS', 'PF', 'COLUMN', 'COLUMNS', 'DEFINE', 'REPORT', 'LIMIT', 'TABLE', 'LIKE', 'AND', 'BY', 'BETWEEN', 'EXCEPT', 'SELECT', 'MATCH', 'WHERE', 'TRUE', 'FOR', 'IN', 'WITHOUT', 'FILTER', 'ALIAS', 'WHEN', 'NOT', 'ON', 'KEYS', 'KEY', 'FULLSET', 'PRIMARY', 'LABELS', 'LABEL', 'VISUAL', 'TITLE', 'DESCRIPTION', 'FOLDER', 'ALTER', 'DROP', 'ADD', 'DATASET', 'DATATYPE', 'INT', 'BIGINT', 'DOUBLE', 'DATE', 'VARCHAR', 'DECIMAL', 'SYNCHRONIZE', 'TYPE', 'DEFAULT', 'ORDER', 'ASC', 'DESC', 'HYPERLINK', 'INCLUDE', 'TEMPLATE', 'MODIFY'), suffix=r'\b'), Keyword), # FUNCNAME (r'[a-z]\w*\b', Name.Function), # Comments (r'#.*', Comment.Single), # Punctuation (r'[,;()]', Punctuation), # Space is not significant (r'\s+', Whitespace) ], 'string-literal': [ (r'\\[tnrfbae"\\]', String.Escape), (r'"', String, '#pop'), (r'[^\\"]+', String) ], }