pygments.rb 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/CHANGELOG.adoc +5 -0
  4. data/bench.rb +2 -2
  5. data/lib/pygments/lexer.rb +1 -1
  6. data/lib/pygments/mentos.py +6 -4
  7. data/lib/pygments/popen.rb +14 -7
  8. data/lib/pygments/version.rb +1 -1
  9. data/lib/pygments.rb +8 -2
  10. data/pygments.rb.gemspec +4 -4
  11. data/test/test_pygments.rb +13 -7
  12. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/AUTHORS +8 -1
  13. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/INSTALLER +0 -0
  14. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/LICENSE +0 -0
  15. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/METADATA +1 -1
  16. data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +524 -0
  17. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/REQUESTED +0 -0
  18. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/WHEEL +0 -0
  19. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/entry_points.txt +0 -0
  20. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/top_level.txt +0 -0
  21. data/vendor/pygments-main/bin/pygmentize +1 -1
  22. data/vendor/pygments-main/pygments/__init__.py +1 -1
  23. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -0
  24. data/vendor/pygments-main/pygments/formatters/html.py +20 -7
  25. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +83 -0
  26. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +55 -14
  27. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +401 -0
  28. data/vendor/pygments-main/pygments/lexers/_mapping.py +68 -52
  29. data/vendor/pygments-main/pygments/lexers/actionscript.py +2 -2
  30. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  31. data/vendor/pygments-main/pygments/lexers/amdgpu.py +9 -4
  32. data/vendor/pygments-main/pygments/lexers/apdlexer.py +448 -0
  33. data/vendor/pygments-main/pygments/lexers/apl.py +6 -3
  34. data/vendor/pygments-main/pygments/lexers/asc.py +51 -0
  35. data/vendor/pygments-main/pygments/lexers/asm.py +86 -58
  36. data/vendor/pygments-main/pygments/lexers/automation.py +1 -1
  37. data/vendor/pygments-main/pygments/lexers/bibtex.py +2 -2
  38. data/vendor/pygments-main/pygments/lexers/c_cpp.py +60 -33
  39. data/vendor/pygments-main/pygments/lexers/c_like.py +102 -3
  40. data/vendor/pygments-main/pygments/lexers/cddl.py +2 -2
  41. data/vendor/pygments-main/pygments/lexers/chapel.py +53 -29
  42. data/vendor/pygments-main/pygments/lexers/clean.py +6 -6
  43. data/vendor/pygments-main/pygments/lexers/configs.py +133 -43
  44. data/vendor/pygments-main/pygments/lexers/csound.py +2 -2
  45. data/vendor/pygments-main/pygments/lexers/devicetree.py +1 -1
  46. data/vendor/pygments-main/pygments/lexers/dotnet.py +1 -1
  47. data/vendor/pygments-main/pygments/lexers/erlang.py +1 -1
  48. data/vendor/pygments-main/pygments/lexers/floscript.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/futhark.py +5 -4
  50. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +36 -0
  51. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  52. data/vendor/pygments-main/pygments/lexers/graphics.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/graphviz.py +5 -4
  54. data/vendor/pygments-main/pygments/lexers/gsql.py +92 -0
  55. data/vendor/pygments-main/pygments/lexers/haskell.py +4 -4
  56. data/vendor/pygments-main/pygments/lexers/haxe.py +1 -1
  57. data/vendor/pygments-main/pygments/lexers/installers.py +2 -2
  58. data/vendor/pygments-main/pygments/lexers/javascript.py +145 -127
  59. data/vendor/pygments-main/pygments/lexers/jslt.py +94 -0
  60. data/vendor/pygments-main/pygments/lexers/julia.py +135 -183
  61. data/vendor/pygments-main/pygments/lexers/jvm.py +262 -202
  62. data/vendor/pygments-main/pygments/lexers/kuin.py +299 -0
  63. data/vendor/pygments-main/pygments/lexers/lisp.py +18 -15
  64. data/vendor/pygments-main/pygments/lexers/markup.py +3 -3
  65. data/vendor/pygments-main/pygments/lexers/matlab.py +23 -10
  66. data/vendor/pygments-main/pygments/lexers/meson.py +155 -0
  67. data/vendor/pygments-main/pygments/lexers/mime.py +6 -21
  68. data/vendor/pygments-main/pygments/lexers/ml.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/nimrod.py +1 -1
  70. data/vendor/pygments-main/pygments/lexers/objective.py +3 -3
  71. data/vendor/pygments-main/pygments/lexers/parsers.py +1 -1
  72. data/vendor/pygments-main/pygments/lexers/procfile.py +43 -0
  73. data/vendor/pygments-main/pygments/lexers/promql.py +1 -1
  74. data/vendor/pygments-main/pygments/lexers/python.py +19 -5
  75. data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  77. data/vendor/pygments-main/pygments/lexers/ruby.py +1 -1
  78. data/vendor/pygments-main/pygments/lexers/rust.py +9 -10
  79. data/vendor/pygments-main/pygments/lexers/scripting.py +7 -7
  80. data/vendor/pygments-main/pygments/lexers/shell.py +11 -8
  81. data/vendor/pygments-main/pygments/lexers/smithy.py +79 -0
  82. data/vendor/pygments-main/pygments/lexers/smv.py +1 -1
  83. data/vendor/pygments-main/pygments/lexers/special.py +15 -2
  84. data/vendor/pygments-main/pygments/lexers/supercollider.py +1 -1
  85. data/vendor/pygments-main/pygments/lexers/tcl.py +3 -3
  86. data/vendor/pygments-main/pygments/lexers/teal.py +88 -0
  87. data/vendor/pygments-main/pygments/lexers/templates.py +19 -19
  88. data/vendor/pygments-main/pygments/lexers/teraterm.py +1 -1
  89. data/vendor/pygments-main/pygments/lexers/testing.py +1 -1
  90. data/vendor/pygments-main/pygments/lexers/theorem.py +4 -2
  91. data/vendor/pygments-main/pygments/lexers/thingsdb.py +118 -0
  92. data/vendor/pygments-main/pygments/lexers/tnt.py +25 -15
  93. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  94. data/vendor/pygments-main/pygments/lexers/webassembly.py +120 -0
  95. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  96. data/vendor/pygments-main/pygments/style.py +1 -1
  97. data/vendor/pygments-main/pygments/styles/__init__.py +2 -0
  98. data/vendor/pygments-main/pygments/styles/friendly.py +1 -0
  99. data/vendor/pygments-main/pygments/styles/gruvbox.py +107 -0
  100. data/vendor/pygments-main/pygments/styles/native.py +1 -0
  101. metadata +29 -14
  102. data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +0 -494
@@ -0,0 +1,448 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.apdlexer
4
+ ~~~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for ANSYS Parametric Design Language.
7
+
8
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+
14
+ from pygments.lexer import RegexLexer, include, words
15
+ from pygments.token import Comment, Keyword, Name, Text, Number, Operator, \
16
+ String, Generic, Punctuation
17
+
18
+ __all__ = ['apdlexer']
19
+
20
+
21
+ class apdlexer(RegexLexer):
22
+ """
23
+ For APDL source code.
24
+
25
+ .. versionadded:: 2.9
26
+ """
27
+ name = 'ANSYS parametric design language'
28
+ aliases = ['ansys', 'apdl']
29
+ filenames = ['*.ans']
30
+ flags = re.IGNORECASE
31
+
32
+ # list of elements
33
+ elafunb = ("SURF152", "SURF153", "SURF154", "SURF156", "SHELL157",
34
+ "SURF159", "LINK160", "BEAM161", "PLANE162",
35
+ "SHELL163", "SOLID164", "COMBI165", "MASS166",
36
+ "LINK167", "SOLID168", "TARGE169", "TARGE170",
37
+ "CONTA171", "CONTA172", "CONTA173", "CONTA174",
38
+ "CONTA175", "CONTA176", "CONTA177", "CONTA178",
39
+ "PRETS179", "LINK180", "SHELL181", "PLANE182",
40
+ "PLANE183", "MPC184", "SOLID185", "SOLID186",
41
+ "SOLID187", "BEAM188", "BEAM189", "SOLSH190",
42
+ "INTER192", "INTER193", "INTER194", "INTER195",
43
+ "MESH200", "FOLLW201", "INTER202", "INTER203",
44
+ "INTER204", "INTER205", "SHELL208", "SHELL209",
45
+ "CPT212", "CPT213", "COMBI214", "CPT215", "CPT216",
46
+ "CPT217", "FLUID220", "FLUID221", "PLANE223",
47
+ "SOLID226", "SOLID227", "PLANE230", "SOLID231",
48
+ "SOLID232", "PLANE233", "SOLID236", "SOLID237",
49
+ "PLANE238", "SOLID239", "SOLID240", "HSFLD241",
50
+ "HSFLD242", "SURF251", "SURF252", "REINF263",
51
+ "REINF264", "REINF265", "SOLID272", "SOLID273",
52
+ "SOLID278", "SOLID279", "SHELL281", "SOLID285",
53
+ "PIPE288", "PIPE289", "ELBOW290", "USER300", "BEAM3",
54
+ "BEAM4", "BEAM23", "BEAM24", "BEAM44", "BEAM54",
55
+ "COMBIN7", "FLUID79", "FLUID80", "FLUID81", "FLUID141",
56
+ "FLUID142", "INFIN9", "INFIN47", "PLANE13", "PLANE25",
57
+ "PLANE42", "PLANE53", "PLANE67", "PLANE82", "PLANE83",
58
+ "PLANE145", "PLANE146", "CONTAC12", "CONTAC52",
59
+ "LINK1", "LINK8", "LINK10", "LINK32", "PIPE16",
60
+ "PIPE17", "PIPE18", "PIPE20", "PIPE59", "PIPE60",
61
+ "SHELL41", "SHELL43", "SHELL57", "SHELL63", "SHELL91",
62
+ "SHELL93", "SHELL99", "SHELL150", "SOLID5", "SOLID45",
63
+ "SOLID46", "SOLID65", "SOLID69", "SOLID92", "SOLID95",
64
+ "SOLID117", "SOLID127", "SOLID128", "SOLID147",
65
+ "SOLID148", "SOLID191", "VISCO88", "VISCO89",
66
+ "VISCO106", "VISCO107", "VISCO108", "TRANS109")
67
+
68
+ elafunc = ("PGRAPH", "/VT", "VTIN", "VTRFIL", "VTTEMP", "PGRSET",
69
+ "VTCLR", "VTMETH", "VTRSLT", "VTVMOD", "PGSELE",
70
+ "VTDISC", "VTMP", "VTSEC", "PGWRITE", "VTEVAL", "VTOP",
71
+ "VTSFE", "POUTRES", "VTFREQ", "VTPOST", "VTSL",
72
+ "FLDATA1-40", "HFPCSWP", "MSDATA", "MSVARY", "QFACT",
73
+ "FLOCHECK", "HFPOWER", "MSMASS", "PERI", "SPADP",
74
+ "FLREAD", "HFPORT", "MSMETH", "PLFSS", "SPARM",
75
+ "FLOTRAN", "HFSCAT", "MSMIR", "PLSCH", "SPFSS",
76
+ "HFADP", "ICE", "MSNOMF", "PLSYZ", "SPICE", "HFARRAY",
77
+ "ICEDELE", "MSPROP", "PLTD", "SPSCAN", "HFDEEM",
78
+ "ICELIST", "MSQUAD", "PLTLINE", "SPSWP", "HFEIGOPT",
79
+ "ICVFRC", "MSRELAX", "PLVFRC", "HFEREFINE", "LPRT",
80
+ "MSSOLU", "/PICE", "HFMODPRT", "MSADV", "MSSPEC",
81
+ "PLWAVE", "HFPA", "MSCAP", "MSTERM", "PRSYZ")
82
+
83
+ elafund = ("*VOPER", "VOVLAP", "*VPLOT", "VPLOT", "VPTN", "*VPUT",
84
+ "VPUT", "*VREAD", "VROTAT", "VSBA", "VSBV", "VSBW",
85
+ "/VSCALE", "*VSCFUN", "VSEL", "VSLA", "*VSTAT", "VSUM",
86
+ "VSWEEP", "VSYMM", "VTRAN", "VTYPE", "/VUP", "*VWRITE",
87
+ "/WAIT", "WAVES", "WERASE", "WFRONT", "/WINDOW",
88
+ "WMID", "WMORE", "WPAVE", "WPCSYS", "WPLANE", "WPOFFS",
89
+ "WPROTA", "WPSTYL", "WRFULL", "WRITE", "WRITEMAP",
90
+ "*WRK", "WSORT", "WSPRINGS", "WSTART", "WTBCREATE",
91
+ "XFDATA", "XFENRICH", "XFLIST", "/XFRM", "/XRANGE",
92
+ "XVAR", "/YRANGE", "/ZOOM", "/WB", "XMLO", "/XML",
93
+ "CNTR", "EBLOCK", "CMBLOCK", "NBLOCK", "/TRACK",
94
+ "CWZPLOT", "~EUI", "NELE", "EALL", "NALL", "FLITEM",
95
+ "LSLN", "PSOLVE", "ASLN", "/VERIFY", "/SSS", "~CFIN",
96
+ "*EVAL", "*MOONEY", "/RUNSTAT", "ALPFILL",
97
+ "ARCOLLAPSE", "ARDETACH", "ARFILL", "ARMERGE",
98
+ "ARSPLIT", "FIPLOT", "GAPFINISH", "GAPLIST",
99
+ "GAPMERGE", "GAPOPT", "GAPPLOT", "LNCOLLAPSE",
100
+ "LNDETACH", "LNFILL", "LNMERGE", "LNSPLIT", "PCONV",
101
+ "PLCONV", "PEMOPTS", "PEXCLUDE", "PINCLUDE", "PMETH",
102
+ "/PMETH", "PMOPTS", "PPLOT", "PPRANGE", "PRCONV",
103
+ "PRECISION", "RALL", "RFILSZ", "RITER", "RMEMRY",
104
+ "RSPEED", "RSTAT", "RTIMST", "/RUNST", "RWFRNT",
105
+ "SARPLOT", "SHSD", "SLPPLOT", "SLSPLOT", "VCVFILL",
106
+ "/OPT", "OPEQN", "OPFACT", "OPFRST", "OPGRAD",
107
+ "OPKEEP", "OPLOOP", "OPPRNT", "OPRAND", "OPSUBP",
108
+ "OPSWEEP", "OPTYPE", "OPUSER", "OPVAR", "OPADD",
109
+ "OPCLR", "OPDEL", "OPMAKE", "OPSEL", "OPANL", "OPDATA",
110
+ "OPRESU", "OPSAVE", "OPEXE", "OPLFA", "OPLGR",
111
+ "OPLIST", "OPLSW", "OPRFA", "OPRGR", "OPRSW",
112
+ "PILECALC", "PILEDISPSET", "PILEGEN", "PILELOAD",
113
+ "PILEMASS", "PILERUN", "PILESEL", "PILESTIF",
114
+ "PLVAROPT", "PRVAROPT", "TOCOMP", "TODEF", "TOFREQ",
115
+ "TOTYPE", "TOVAR", "TOEXE", "TOLOOP", "TOGRAPH",
116
+ "TOLIST", "TOPLOT", "TOPRINT", "TOSTAT", "TZAMESH",
117
+ "TZDELE", "TZEGEN", "XVAROPT", "PGSAVE", "SOLCONTROL",
118
+ "TOTAL", "VTGEOM", "VTREAL", "VTSTAT")
119
+
120
+ elafune = ("/ANUM", "AOFFST", "AOVLAP", "APLOT", "APPEND", "APTN",
121
+ "ARCLEN", "ARCTRM", "AREAS", "AREFINE", "AREMESH",
122
+ "AREVERSE", "AROTAT", "ARSCALE", "ARSYM", "ASBA",
123
+ "ASBL", "ASBV", "ASBW", "ASCRES", "ASEL", "ASIFILE",
124
+ "*ASK", "ASKIN", "ASLL", "ASLV", "ASOL", "/ASSIGN",
125
+ "ASUB", "ASUM", "ATAN", "ATRAN", "ATYPE", "/AUTO",
126
+ "AUTOTS", "/AUX2", "/AUX3", "/AUX12", "/AUX15",
127
+ "AVPRIN", "AVRES", "AWAVE", "/AXLAB", "*AXPY",
128
+ "/BATCH", "BCSOPTION", "BETAD", "BF", "BFA", "BFADELE",
129
+ "BFALIST", "BFCUM", "BFDELE", "BFE", "BFECUM",
130
+ "BFEDELE", "BFELIST", "BFESCAL", "BFINT", "BFK",
131
+ "BFKDELE", "BFKLIST", "BFL", "BFLDELE", "BFLIST",
132
+ "BFLLIST", "BFSCALE", "BFTRAN", "BFUNIF", "BFV",
133
+ "BFVDELE", "BFVLIST", "BIOOPT", "BIOT", "BLC4", "BLC5",
134
+ "BLOCK", "BOOL", "BOPTN", "BSAX", "BSMD", "BSM1",
135
+ "BSM2", "BSPLIN", "BSS1", "BSS2", "BSTE", "BSTQ",
136
+ "BTOL", "BUCOPT", "C", "CALC", "CAMPBELL", "CBDOF",
137
+ "CBMD", "CBMX", "CBTE", "CBTMP", "CDOPT", "CDREAD",
138
+ "CDWRITE", "CE", "CECHECK", "CECMOD", "CECYC",
139
+ "CEDELE", "CEINTF", "CELIST", "CENTER", "CEQN",
140
+ "CERIG", "CESGEN", "CFACT", "*CFCLOS", "*CFOPEN",
141
+ "*CFWRITE", "/CFORMAT", "CGLOC", "CGOMGA", "CGROW",
142
+ "CHECK", "CHKMSH", "CINT", "CIRCLE", "CISOL",
143
+ "/CLABEL", "/CLEAR", "CLOCAL", "CLOG", "/CLOG",
144
+ "CLRMSHLN", "CM", "CMACEL", "/CMAP", "CMATRIX",
145
+ "CMDELE", "CMDOMEGA", "CMEDIT", "CMGRP", "CMLIST",
146
+ "CMMOD", "CMOMEGA", "CMPLOT", "CMROTATE", "CMSEL",
147
+ "CMSFILE", "CMSOPT", "CMWRITE", "CNCHECK", "CNKMOD",
148
+ "CNTR", "CNVTOL", "/COLOR", "/COM", "*COMP", "COMBINE",
149
+ "COMPRESS", "CON4", "CONE", "/CONFIG", "CONJUG",
150
+ "/CONTOUR", "/COPY", "CORIOLIS", "COUPLE", "COVAL",
151
+ "CP", "CPCYC", "CPDELE", "CPINTF", "/CPLANE", "CPLGEN",
152
+ "CPLIST", "CPMERGE", "CPNGEN", "CPSGEN", "CQC",
153
+ "*CREATE", "CRPLIM", "CS", "CSCIR", "CSDELE", "CSKP",
154
+ "CSLIST", "CSWPLA", "CSYS", "/CTYPE", "CURR2D",
155
+ "CUTCONTROL", "/CVAL", "CVAR", "/CWD", "CYCCALC",
156
+ "/CYCEXPAND", "CYCFILES", "CYCFREQ", "*CYCLE",
157
+ "CYCLIC", "CYCOPT", "CYCPHASE", "CYCSPEC", "CYL4",
158
+ "CYL5", "CYLIND", "CZDEL", "CZMESH", "D", "DA",
159
+ "DADELE", "DALIST", "DAMORPH", "DATA", "DATADEF",
160
+ "DCGOMG", "DCUM", "DCVSWP", "DDASPEC", "DDELE",
161
+ "DDOPTION", "DEACT", "DEFINE", "*DEL", "DELETE",
162
+ "/DELETE", "DELTIM", "DEMORPH", "DERIV", "DESIZE",
163
+ "DESOL", "DETAB", "/DEVDISP", "/DEVICE", "/DFLAB",
164
+ "DFLX", "DFSWAVE", "DIG", "DIGIT", "*DIM",
165
+ "/DIRECTORY", "DISPLAY", "/DIST", "DJ", "DJDELE",
166
+ "DJLIST", "DK", "DKDELE", "DKLIST", "DL", "DLDELE",
167
+ "DLIST", "DLLIST", "*DMAT", "DMOVE", "DMPEXT",
168
+ "DMPOPTION", "DMPRAT", "DMPSTR", "DNSOL", "*DO", "DOF",
169
+ "DOFSEL", "DOMEGA", "*DOT", "*DOWHILE", "DSCALE",
170
+ "/DSCALE", "DSET", "DSPOPTION", "DSUM", "DSURF",
171
+ "DSYM", "DSYS", "DTRAN", "DUMP", "/DV3D", "DVAL",
172
+ "DVMORPH", "DYNOPT", "E", "EALIVE", "EDADAPT", "EDALE",
173
+ "EDASMP", "EDBOUND", "EDBX", "EDBVIS", "EDCADAPT",
174
+ "EDCGEN", "EDCLIST", "EDCMORE", "EDCNSTR", "EDCONTACT",
175
+ "EDCPU", "EDCRB", "EDCSC", "EDCTS", "EDCURVE",
176
+ "EDDAMP", "EDDBL", "EDDC", "EDDRELAX", "EDDUMP",
177
+ "EDELE", "EDENERGY", "EDFPLOT", "EDGCALE", "/EDGE",
178
+ "EDHGLS", "EDHIST", "EDHTIME", "EDINT", "EDIPART",
179
+ "EDIS", "EDLCS", "EDLOAD", "EDMP", "EDNB", "EDNDTSD",
180
+ "EDNROT", "EDOPT", "EDOUT", "EDPART", "EDPC", "EDPL",
181
+ "EDPVEL", "EDRC", "EDRD", "EDREAD", "EDRI", "EDRST",
182
+ "EDRUN", "EDSHELL", "EDSOLV", "EDSP", "EDSTART",
183
+ "EDTERM", "EDTP", "EDVEL", "EDWELD", "EDWRITE",
184
+ "EEXTRUDE", "/EFACET", "EGEN", "*EIGEN", "EINFIN",
185
+ "EINTF", "EKILL", "ELBOW", "ELEM", "ELIST", "*ELSE",
186
+ "*ELSEIF", "EMAGERR", "EMATWRITE", "EMF", "EMFT",
187
+ "EMID", "EMIS", "EMODIF", "EMORE", "EMSYM", "EMTGEN",
188
+ "EMUNIT", "EN", "*END", "*ENDDO", "*ENDIF",
189
+ "ENDRELEASE", "ENERSOL", "ENGEN", "ENORM", "ENSYM",
190
+ "EORIENT", "EPLOT", "EQSLV", "ERASE", "/ERASE",
191
+ "EREAD", "EREFINE", "EREINF", "ERESX", "ERNORM",
192
+ "ERRANG", "ESCHECK", "ESEL", "/ESHAPE", "ESIZE",
193
+ "ESLA", "ESLL", "ESLN", "ESLV", "ESOL", "ESORT",
194
+ "ESSOLV", "ESTIF", "ESURF", "ESYM", "ESYS", "ET",
195
+ "ETABLE", "ETCHG", "ETCONTROL", "ETDELE", "ETLIST",
196
+ "ETYPE", "EUSORT", "EWRITE", "*EXIT", "/EXIT", "EXP",
197
+ "EXPAND", "/EXPAND", "EXPASS", "*EXPORT", "EXPROFILE",
198
+ "EXPSOL", "EXTOPT", "EXTREM", "EXUNIT", "F", "/FACET",
199
+ "FATIGUE", "FC", "FCCHECK", "FCDELE", "FCLIST", "FCUM",
200
+ "FCTYP", "FDELE", "/FDELE", "FE", "FEBODY", "FECONS",
201
+ "FEFOR", "FELIST", "FESURF", "*FFT", "FILE",
202
+ "FILEAUX2", "FILEAUX3", "FILEDISP", "FILL", "FILLDATA",
203
+ "/FILNAME", "FINISH", "FITEM", "FJ", "FJDELE",
204
+ "FJLIST", "FK", "FKDELE", "FKLIST", "FL", "FLIST",
205
+ "FLLIST", "FLST", "FLUXV", "FLUREAD", "FMAGBC",
206
+ "FMAGSUM", "/FOCUS", "FOR2D", "FORCE", "FORM",
207
+ "/FORMAT", "FP", "FPLIST", "*FREE", "FREQ", "FRQSCL",
208
+ "FS", "FSCALE", "FSDELE", "FSLIST", "FSNODE", "FSPLOT",
209
+ "FSSECT", "FSSPARM", "FSUM", "FTCALC", "FTRAN",
210
+ "FTSIZE", "FTWRITE", "FTYPE", "FVMESH", "GAP", "GAPF",
211
+ "GAUGE", "GCDEF", "GCGEN", "/GCMD", "/GCOLUMN",
212
+ "GENOPT", "GEOM", "GEOMETRY", "*GET", "/GFILE",
213
+ "/GFORMAT", "/GLINE", "/GMARKER", "GMATRIX", "GMFACE",
214
+ "*GO", "/GO", "/GOLIST", "/GOPR", "GP", "GPDELE",
215
+ "GPLIST", "GPLOT", "/GRAPHICS", "/GRESUME", "/GRID",
216
+ "/GROPT", "GRP", "/GRTYP", "/GSAVE", "GSBDATA",
217
+ "GSGDATA", "GSLIST", "GSSOL", "/GST", "GSUM", "/GTHK",
218
+ "/GTYPE", "HARFRQ", "/HBC", "HBMAT", "/HEADER", "HELP",
219
+ "HELPDISP", "HEMIOPT", "HFANG", "HFSYM", "HMAGSOLV",
220
+ "HPGL", "HPTCREATE", "HPTDELETE", "HRCPLX", "HREXP",
221
+ "HROPT", "HROCEAN", "HROUT", "IC", "ICDELE", "ICLIST",
222
+ "/ICLWID", "/ICSCALE", "*IF", "IGESIN", "IGESOUT",
223
+ "/IMAGE", "IMAGIN", "IMESH", "IMMED", "IMPD",
224
+ "INISTATE", "*INIT", "/INPUT", "/INQUIRE", "INRES",
225
+ "INRTIA", "INT1", "INTSRF", "IOPTN", "IRLF", "IRLIST",
226
+ "*ITENGINE", "JPEG", "JSOL", "K", "KATT", "KBC",
227
+ "KBETW", "KCALC", "KCENTER", "KCLEAR", "KDELE",
228
+ "KDIST", "KEEP", "KESIZE", "KEYOPT", "KEYPTS", "KEYW",
229
+ "KFILL", "KGEN", "KL", "KLIST", "KMESH", "KMODIF",
230
+ "KMOVE", "KNODE", "KPLOT", "KPSCALE", "KREFINE",
231
+ "KSCALE", "KSCON", "KSEL", "KSLL", "KSLN", "KSUM",
232
+ "KSYMM", "KTRAN", "KUSE", "KWPAVE", "KWPLAN", "L",
233
+ "L2ANG", "L2TAN", "LANG", "LARC", "/LARC", "LAREA",
234
+ "LARGE", "LATT", "LAYER", "LAYERP26", "LAYLIST",
235
+ "LAYPLOT", "LCABS", "LCASE", "LCCALC", "LCCAT",
236
+ "LCDEF", "LCFACT", "LCFILE", "LCLEAR", "LCOMB",
237
+ "LCOPER", "LCSEL", "LCSL", "LCSUM", "LCWRITE",
238
+ "LCZERO", "LDELE", "LDIV", "LDRAG", "LDREAD", "LESIZE",
239
+ "LEXTND", "LFILLT", "LFSURF", "LGEN", "LGLUE",
240
+ "LGWRITE", "/LIGHT", "LINA", "LINE", "/LINE", "LINES",
241
+ "LINL", "LINP", "LINV", "LIST", "*LIST", "LLIST",
242
+ "LMATRIX", "LMESH", "LNSRCH", "LOCAL", "LOVLAP",
243
+ "LPLOT", "LPTN", "LREFINE", "LREVERSE", "LROTAT",
244
+ "LSBA", "*LSBAC", "LSBL", "LSBV", "LSBW", "LSCLEAR",
245
+ "LSDELE", "*LSDUMP", "LSEL", "*LSENGINE", "*LSFACTOR",
246
+ "LSLA", "LSLK", "LSOPER", "/LSPEC", "LSREAD",
247
+ "*LSRESTORE", "LSSCALE", "LSSOLVE", "LSTR", "LSUM",
248
+ "LSWRITE", "/LSYMBOL", "LSYMM", "LTAN", "LTRAN",
249
+ "LUMPM", "LVSCALE", "LWPLAN", "M", "MADAPT", "MAGOPT",
250
+ "MAGSOLV", "/MAIL", "MAP", "/MAP", "MAP2DTO3D",
251
+ "MAPSOLVE", "MAPVAR", "MASTER", "MAT", "MATER",
252
+ "MCHECK", "MDAMP", "MDELE", "MDPLOT", "MEMM", "/MENU",
253
+ "MESHING", "MFANALYSIS", "MFBUCKET", "MFCALC", "MFCI",
254
+ "MFCLEAR", "MFCMMAND", "MFCONV", "MFDTIME", "MFELEM",
255
+ "MFEM", "MFEXTER", "MFFNAME", "MFFR", "MFIMPORT",
256
+ "MFINTER", "MFITER", "MFLCOMM", "MFLIST", "MFMAP",
257
+ "MFORDER", "MFOUTPUT", "*MFOURI", "MFPSIMUL", "MFRC",
258
+ "MFRELAX", "MFRSTART", "MFSORDER", "MFSURFACE",
259
+ "MFTIME", "MFTOL", "*MFUN", "MFVOLUME", "MFWRITE",
260
+ "MGEN", "MIDTOL", "/MKDIR", "MLIST", "MMASS", "MMF",
261
+ "MODCONT", "MODE", "MODIFY", "MODMSH", "MODSELOPTION",
262
+ "MODOPT", "MONITOR", "*MOPER", "MOPT", "MORPH", "MOVE",
263
+ "MP", "MPAMOD", "MPCHG", "MPCOPY", "MPDATA", "MPDELE",
264
+ "MPDRES", "/MPLIB", "MPLIST", "MPPLOT", "MPREAD",
265
+ "MPRINT", "MPTEMP", "MPTGEN", "MPTRES", "MPWRITE",
266
+ "/MREP", "MSAVE", "*MSG", "MSHAPE", "MSHCOPY",
267
+ "MSHKEY", "MSHMID", "MSHPATTERN", "MSOLVE", "/MSTART",
268
+ "MSTOLE", "*MULT", "*MWRITE", "MXPAND", "N", "NANG",
269
+ "NAXIS", "NCNV", "NDELE", "NDIST", "NDSURF", "NEQIT",
270
+ "/NERR", "NFORCE", "NGEN", "NKPT", "NLADAPTIVE",
271
+ "NLDIAG", "NLDPOST", "NLGEOM", "NLHIST", "NLIST",
272
+ "NLMESH", "NLOG", "NLOPT", "NMODIF", "NOCOLOR",
273
+ "NODES", "/NOERASE", "/NOLIST", "NOOFFSET", "NOORDER",
274
+ "/NOPR", "NORA", "NORL", "/NORMAL", "NPLOT", "NPRINT",
275
+ "NREAD", "NREFINE", "NRLSUM", "*NRM", "NROPT",
276
+ "NROTAT", "NRRANG", "NSCALE", "NSEL", "NSLA", "NSLE",
277
+ "NSLK", "NSLL", "NSLV", "NSMOOTH", "NSOL", "NSORT",
278
+ "NSTORE", "NSUBST", "NSVR", "NSYM", "/NUMBER",
279
+ "NUMCMP", "NUMEXP", "NUMMRG", "NUMOFF", "NUMSTR",
280
+ "NUMVAR", "NUSORT", "NWPAVE", "NWPLAN", "NWRITE",
281
+ "OCDATA", "OCDELETE", "OCLIST", "OCREAD", "OCTABLE",
282
+ "OCTYPE", "OCZONE", "OMEGA", "OPERATE", "OPNCONTROL",
283
+ "OUTAERO", "OUTOPT", "OUTPR", "/OUTPUT", "OUTRES",
284
+ "OVCHECK", "PADELE", "/PAGE", "PAGET", "PAPUT",
285
+ "PARESU", "PARTSEL", "PARRES", "PARSAV", "PASAVE",
286
+ "PATH", "PAUSE", "/PBC", "/PBF", "PCALC", "PCGOPT",
287
+ "PCIRC", "/PCIRCLE", "/PCOPY", "PCROSS", "PDANL",
288
+ "PDCDF", "PDCFLD", "PDCLR", "PDCMAT", "PDCORR",
289
+ "PDDMCS", "PDDOEL", "PDEF", "PDEXE", "PDHIST",
290
+ "PDINQR", "PDLHS", "PDMETH", "PDOT", "PDPINV",
291
+ "PDPLOT", "PDPROB", "PDRESU", "PDROPT", "/PDS",
292
+ "PDSAVE", "PDSCAT", "PDSENS", "PDSHIS", "PDUSER",
293
+ "PDVAR", "PDWRITE", "PERBC2D", "PERTURB", "PFACT",
294
+ "PHYSICS", "PIVCHECK", "PLCAMP", "PLCFREQ", "PLCHIST",
295
+ "PLCINT", "PLCPLX", "PLCRACK", "PLDISP", "PLESOL",
296
+ "PLETAB", "PLFAR", "PLF2D", "PLGEOM", "PLLS", "PLMAP",
297
+ "PLMC", "PLNEAR", "PLNSOL", "/PLOPTS", "PLORB", "PLOT",
298
+ "PLOTTING", "PLPAGM", "PLPATH", "PLSECT", "PLST",
299
+ "PLTIME", "PLTRAC", "PLVAR", "PLVECT", "PLZZ",
300
+ "/PMACRO", "PMAP", "PMGTRAN", "PMLOPT", "PMLSIZE",
301
+ "/PMORE", "PNGR", "/PNUM", "POINT", "POLY", "/POLYGON",
302
+ "/POST1", "/POST26", "POWERH", "PPATH", "PRANGE",
303
+ "PRAS", "PRCAMP", "PRCINT", "PRCPLX", "PRED",
304
+ "PRENERGY", "/PREP7", "PRERR", "PRESOL", "PRETAB",
305
+ "PRFAR", "PRI2", "PRIM", "PRINT", "*PRINT", "PRISM",
306
+ "PRITER", "PRJSOL", "PRNEAR", "PRNLD", "PRNSOL",
307
+ "PROD", "PRORB", "PRPATH", "PRRFOR", "PRRSOL",
308
+ "PRSCONTROL", "PRSECT", "PRTIME", "PRVAR", "PRVECT",
309
+ "PSCONTROL", "PSCR", "PSDCOM", "PSDFRQ", "PSDGRAPH",
310
+ "PSDRES", "PSDSPL", "PSDUNIT", "PSDVAL", "PSDWAV",
311
+ "/PSEARCH", "PSEL", "/PSF", "PSMAT", "PSMESH",
312
+ "/PSPEC", "/PSTATUS", "PSTRES", "/PSYMB", "PTR",
313
+ "PTXY", "PVECT", "/PWEDGE", "QDVAL", "QRDOPT", "QSOPT",
314
+ "QUAD", "/QUIT", "QUOT", "R", "RACE", "RADOPT",
315
+ "RAPPND", "RATE", "/RATIO", "RBE3", "RCON", "RCYC",
316
+ "RDEC", "RDELE", "READ", "REAL", "REALVAR", "RECTNG",
317
+ "REMESH", "/RENAME", "REORDER", "*REPEAT", "/REPLOT",
318
+ "RESCOMBINE", "RESCONTROL", "RESET", "/RESET", "RESP",
319
+ "RESUME", "RESVEC", "RESWRITE", "*RETURN", "REXPORT",
320
+ "REZONE", "RFORCE", "/RGB", "RIGID", "RIGRESP",
321
+ "RIMPORT", "RLIST", "RMALIST", "RMANL", "RMASTER",
322
+ "RMCAP", "RMCLIST", "/RMDIR", "RMFLVEC", "RMLVSCALE",
323
+ "RMMLIST", "RMMRANGE", "RMMSELECT", "RMNDISP",
324
+ "RMNEVEC", "RMODIF", "RMORE", "RMPORDER", "RMRESUME",
325
+ "RMRGENERATE", "RMROPTIONS", "RMRPLOT", "RMRSTATUS",
326
+ "RMSAVE", "RMSMPLE", "RMUSE", "RMXPORT", "ROCK",
327
+ "ROSE", "RPOLY", "RPR4", "RPRISM", "RPSD", "RSFIT",
328
+ "RSOPT", "RSPLIT", "RSPLOT", "RSPRNT", "RSSIMS",
329
+ "RSTMAC", "RSTOFF", "RSURF", "RSYMM", "RSYS", "RTHICK",
330
+ "SABS", "SADD", "SALLOW", "SAVE", "SBCLIST", "SBCTRAN",
331
+ "SDELETE", "SE", "SECCONTROL", "SECDATA",
332
+ "SECFUNCTION", "SECJOINT", "/SECLIB", "SECLOCK",
333
+ "SECMODIF", "SECNUM", "SECOFFSET", "SECPLOT",
334
+ "SECREAD", "SECSTOP", "SECTYPE", "SECWRITE", "SED",
335
+ "SEDLIST", "SEEXP", "/SEG", "SEGEN", "SELIST", "SELM",
336
+ "SELTOL", "SENERGY", "SEOPT", "SESYMM", "*SET", "SET",
337
+ "SETFGAP", "SETRAN", "SEXP", "SF", "SFA", "SFACT",
338
+ "SFADELE", "SFALIST", "SFBEAM", "SFCALC", "SFCUM",
339
+ "SFDELE", "SFE", "SFEDELE", "SFELIST", "SFFUN",
340
+ "SFGRAD", "SFL", "SFLDELE", "SFLEX", "SFLIST",
341
+ "SFLLIST", "SFSCALE", "SFTRAN", "/SHADE", "SHELL",
342
+ "/SHOW", "/SHOWDISP", "SHPP", "/SHRINK", "SLIST",
343
+ "SLOAD", "SMALL", "*SMAT", "SMAX", "/SMBC", "SMBODY",
344
+ "SMCONS", "SMFOR", "SMIN", "SMOOTH", "SMRTSIZE",
345
+ "SMSURF", "SMULT", "SNOPTION", "SOLU", "/SOLU",
346
+ "SOLUOPT", "SOLVE", "SORT", "SOURCE", "SPACE",
347
+ "SPCNOD", "SPCTEMP", "SPDAMP", "SPEC", "SPFREQ",
348
+ "SPGRAPH", "SPH4", "SPH5", "SPHERE", "SPLINE", "SPLOT",
349
+ "SPMWRITE", "SPOINT", "SPOPT", "SPREAD", "SPTOPT",
350
+ "SPOWER", "SPUNIT", "SPVAL", "SQRT", "*SREAD", "SRSS",
351
+ "SSBT", "/SSCALE", "SSLN", "SSMT", "SSPA", "SSPB",
352
+ "SSPD", "SSPE", "SSPM", "SSUM", "SSTATE", "STABILIZE",
353
+ "STAOPT", "STAT", "*STATUS", "/STATUS", "STEF",
354
+ "/STITLE", "STORE", "SUBOPT", "SUBSET", "SUCALC",
355
+ "SUCR", "SUDEL", "SUEVAL", "SUGET", "SUMAP", "SUMTYPE",
356
+ "SUPL", "SUPR", "SURESU", "SUSAVE", "SUSEL", "SUVECT",
357
+ "SV", "SVPLOT", "SVTYP", "SWADD", "SWDEL", "SWGEN",
358
+ "SWLIST", "SYNCHRO", "/SYP", "/SYS", "TALLOW",
359
+ "TARGET", "*TAXIS", "TB", "TBCOPY", "TBDATA", "TBDELE",
360
+ "TBEO", "TBIN", "TBFIELD", "TBFT", "TBLE", "TBLIST",
361
+ "TBMODIF", "TBPLOT", "TBPT", "TBTEMP", "TCHG", "/TEE",
362
+ "TERM", "THEXPAND", "THOPT", "TIFF", "TIME",
363
+ "TIMERANGE", "TIMINT", "TIMP", "TINTP", "/TITLE",
364
+ "/TLABEL", "TOFFST", "*TOPER", "TORQ2D", "TORQC2D",
365
+ "TORQSUM", "TORUS", "TRANS", "TRANSFER", "*TREAD",
366
+ "TREF", "/TRIAD", "/TRLCY", "TRNOPT", "TRPDEL",
367
+ "TRPLIS", "TRPOIN", "TRTIME", "TSHAP", "/TSPEC",
368
+ "TSRES", "TUNIF", "TVAR", "/TXTRE", "/TYPE", "TYPE",
369
+ "/UCMD", "/UDOC", "/UI", "UIMP", "/UIS", "*ULIB",
370
+ "UNDELETE", "UNDO", "/UNITS", "UNPAUSE", "UPCOORD",
371
+ "UPGEOM", "*USE", "/USER", "USRCAL", "USRDOF",
372
+ "USRELEM", "V", "V2DOPT", "VA", "*VABS", "VADD",
373
+ "VARDEL", "VARNAM", "VATT", "VCLEAR", "*VCOL",
374
+ "/VCONE", "VCROSS", "*VCUM", "VDDAM", "VDELE", "VDGL",
375
+ "VDOT", "VDRAG", "*VEC", "*VEDIT", "VEORIENT", "VEXT",
376
+ "*VFACT", "*VFILL", "VFOPT", "VFQUERY", "VFSM",
377
+ "*VFUN", "VGEN", "*VGET", "VGET", "VGLUE", "/VIEW",
378
+ "VIMP", "VINP", "VINV", "*VITRP", "*VLEN", "VLIST",
379
+ "VLSCALE", "*VMASK", "VMESH", "VOFFST", "VOLUMES")
380
+
381
+ # list of in-built () functions
382
+ elafunf = ("NX()", "NY()", "NZ()", "KX()", "KY()", "KZ()", "LX()",
383
+ "LY()", "LZ()", "LSX()", "LSY()", "LSZ()", "NODE()",
384
+ "KP()", "DISTND()", "DISTKP()", "DISTEN()", "ANGLEN()",
385
+ "ANGLEK()", "NNEAR()", "KNEAR()", "ENEARN()",
386
+ "AREAND()", "AREAKP()", "ARNODE()", "NORMNX()",
387
+ "NORMNY()", "NORMNZ()", "NORMKX()", "NORMKY()",
388
+ "NORMKZ()", "ENEXTN()", "NELEM()", "NODEDOF()",
389
+ "ELADJ()", "NDFACE()", "NMFACE()", "ARFACE()", "UX()",
390
+ "UY()", "UZ()", "ROTX()", "ROTY()", "ROTZ()", "TEMP()",
391
+ "PRES()", "VX()", "VY()", "VZ()", "ENKE()", "ENDS()",
392
+ "VOLT()", "MAG()", "AX()", "AY()", "AZ()",
393
+ "VIRTINQR()", "KWGET()", "VALCHR()", "VALHEX()",
394
+ "CHRHEX()", "STRFILL()", "STRCOMP()", "STRPOS()",
395
+ "STRLENG()", "UPCASE()", "LWCASE()", "JOIN()",
396
+ "SPLIT()", "ABS()", "SIGN()", "CXABS()", "EXP()",
397
+ "LOG()", "LOG10()", "SQRT()", "NINT()", "MOD()",
398
+ "RAND()", "GDIS()", "SIN()", "COS()", "TAN()",
399
+ "SINH()", "COSH()", "TANH()", "ASIN()", "ACOS()",
400
+ "ATAN()", "ATAN2()")
401
+
402
+ elafung = ("NSEL()", "ESEL()", "KSEL()", "LSEL()", "ASEL()",
403
+ "VSEL()", "NDNEXT()", "ELNEXT()", "KPNEXT()",
404
+ "LSNEXT()", "ARNEXT()", "VLNEXT()", "CENTRX()",
405
+ "CENTRY()", "CENTRZ()")
406
+
407
+ elafunh = ("~CAT5IN", "~CATIAIN", "~PARAIN", "~PROEIN", "~SATIN",
408
+ "~UGIN", "A", "AADD", "AATT", "ABEXTRACT", "*ABBR",
409
+ "ABBRES", "ABBSAV", "ABS", "ACCAT", "ACCOPTION",
410
+ "ACEL", "ACLEAR", "ADAMS", "ADAPT", "ADD", "ADDAM",
411
+ "ADELE", "ADGL", "ADRAG", "AESIZE", "AFILLT", "AFLIST",
412
+ "AFSURF", "*AFUN", "AGEN", "AGLUE", "AINA", "AINP",
413
+ "AINV", "AL", "ALIST", "ALLSEL", "ALPHAD", "AMAP",
414
+ "AMESH", "/AN3D", "ANCNTR", "ANCUT", "ANCYC", "ANDATA",
415
+ "ANDSCL", "ANDYNA", "/ANFILE", "ANFLOW", "/ANGLE",
416
+ "ANHARM", "ANIM", "ANISOS", "ANMODE", "ANMRES",
417
+ "/ANNOT", "ANORM", "ANPRES", "ANSOL", "ANSTOAQWA",
418
+ "ANSTOASAS", "ANTIME", "ANTYPE")
419
+
420
+ tokens = {
421
+ 'root': [
422
+ (r'!.*\n', Comment),
423
+ include('strings'),
424
+ include('core'),
425
+ include('nums'),
426
+ (words((elafunb+elafunc+elafund+elafune+elafunh), suffix=r'\b'), Keyword),
427
+ (words((elafunf+elafung), suffix=r'\b'), Name.Builtin),
428
+ (r'AR[0-9]+', Name.Variable.Instance),
429
+ (r'[a-z][a-z0-9_]*', Name.Variable),
430
+ (r'[\s]+', Text),
431
+ ],
432
+ 'core': [
433
+ # Operators
434
+ (r'(\*\*|\*|\+|-|\/|<|>|<=|>=|==|\/=|=)', Operator),
435
+ (r'/EOF', Generic.Emph),
436
+ (r'[(),:&;]', Punctuation),
437
+ ],
438
+ 'strings': [
439
+ (r'(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
440
+ (r"(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
441
+ (r'[$%]', String.Symbol),
442
+ ],
443
+ 'nums': [
444
+ (r'\d+(?![.ef])', Number.Integer),
445
+ (r'[+-]?\d*\.?\d+([ef][-+]?\d+)?', Number.Float),
446
+ (r'[+-]?\d+\.?\d*([ef][-+]?\d+)?', Number.Float),
447
+ ]
448
+ }
@@ -23,7 +23,10 @@ class APLLexer(RegexLexer):
23
23
  """
24
24
  name = 'APL'
25
25
  aliases = ['apl']
26
- filenames = ['*.apl']
26
+ filenames = [
27
+ '*.apl', '*.aplf', '*.aplo', '*.apln',
28
+ '*.aplc', '*.apli', '*.dyalog',
29
+ ]
27
30
 
28
31
  tokens = {
29
32
  'root': [
@@ -65,8 +68,8 @@ class APLLexer(RegexLexer):
65
68
  #
66
69
  # Variables
67
70
  # =========
68
- # following IBM APL2 standard
69
- (r'[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*', Name.Variable),
71
+ # following IBM APL2 standard (with a leading _ ok for GNU APL and Dyalog)
72
+ (r'[A-Za-zΔ∆⍙_][A-Za-zΔ∆⍙_¯0-9]*', Name.Variable),
70
73
  #
71
74
  # Numbers
72
75
  # =======
@@ -0,0 +1,51 @@
1
+ """
2
+ pygments.lexers.asc
3
+ ~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for various ASCII armored files.
6
+
7
+ :copyright: Copyright 2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+ import re
11
+
12
+ from pygments.lexer import RegexLexer, bygroups
13
+ from pygments.token import Comment, Generic, Name, Operator, String, Whitespace
14
+
15
+ __all__ = ['AscLexer']
16
+
17
+
18
+ class AscLexer(RegexLexer):
19
+ """
20
+ Lexer for ASCII armored files, containing `-----BEGIN/END ...-----` wrapped base64 data.
21
+
22
+ .. versionadded:: 2.10
23
+ """
24
+ name = 'ASCII armored'
25
+ aliases = ['asc', 'pem']
26
+ filenames = [
27
+ '*.asc', # PGP; *.gpg, *.pgp, and *.sig too, but those can be binary
28
+ '*.pem', # X.509; *.cer, *.crt, *.csr, and key etc too, but those can be binary
29
+ 'id_dsa', 'id_ecdsa', 'id_ecdsa_sk', 'id_ed25519', 'id_ed25519_sk', 'id_rsa', # SSH private keys
30
+ ]
31
+ mimetypes = ['application/pgp-keys', 'application/pgp-encrypted', 'application/pgp-signature']
32
+
33
+ flags = re.MULTILINE
34
+
35
+ tokens = {
36
+ 'root': [
37
+ (r'\s+', Whitespace),
38
+ (r'^-----BEGIN [^\n]+-----$', Generic.Heading, 'data'),
39
+ (r'\S+', Comment),
40
+ ],
41
+ 'data': [
42
+ (r'\s+', Whitespace),
43
+ (r'^([^:]+)(:)([ \t]+)(.*)', bygroups(Name.Attribute, Operator, Whitespace, String)),
44
+ (r'^-----END [^\n]+-----$', Generic.Heading, 'root'),
45
+ (r'\S+', String),
46
+ ],
47
+ }
48
+
49
+ def analyse_text(text):
50
+ if re.search(r'^-----BEGIN [^\n]+-----\r?\n', text):
51
+ return True