pygments.rb 0.5.4 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +40 -0
- data/README.md +3 -0
- data/lexers +0 -0
- data/lib/pygments/popen.rb +3 -2
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +2 -1
- data/vendor/pygments-main/AUTHORS +20 -1
- data/vendor/pygments-main/CHANGES +55 -3
- data/vendor/pygments-main/LICENSE +1 -1
- data/vendor/pygments-main/MANIFEST.in +1 -1
- data/vendor/pygments-main/Makefile +5 -8
- data/vendor/pygments-main/REVISION +1 -1
- data/vendor/pygments-main/doc/Makefile +153 -0
- data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
- data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
- data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
- data/vendor/pygments-main/doc/_templates/docssidebar.html +3 -0
- data/vendor/pygments-main/doc/_templates/indexsidebar.html +25 -0
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +98 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +401 -0
- data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +15 -0
- data/vendor/pygments-main/doc/conf.py +249 -0
- data/vendor/pygments-main/doc/docs/api.rst +316 -0
- data/vendor/pygments-main/doc/docs/authors.rst +4 -0
- data/vendor/pygments-main/doc/docs/changelog.rst +1 -0
- data/vendor/pygments-main/{docs/src/cmdline.txt → doc/docs/cmdline.rst} +9 -11
- data/vendor/pygments-main/{docs/src/filterdevelopment.txt → doc/docs/filterdevelopment.rst} +1 -1
- data/vendor/pygments-main/{docs/src/filters.txt → doc/docs/filters.rst} +4 -5
- data/vendor/pygments-main/{docs/src/formatterdevelopment.txt → doc/docs/formatterdevelopment.rst} +1 -1
- data/vendor/pygments-main/{docs/src/formatters.txt → doc/docs/formatters.rst} +6 -6
- data/vendor/pygments-main/doc/docs/index.rst +66 -0
- data/vendor/pygments-main/{docs/src/integrate.txt → doc/docs/integrate.rst} +3 -7
- data/vendor/pygments-main/{docs/src/java.txt → doc/docs/java.rst} +0 -0
- data/vendor/pygments-main/{docs/src/lexerdevelopment.txt → doc/docs/lexerdevelopment.rst} +13 -14
- data/vendor/pygments-main/{docs/src/lexers.txt → doc/docs/lexers.rst} +7 -5
- data/vendor/pygments-main/{docs/src/moinmoin.txt → doc/docs/moinmoin.rst} +0 -0
- data/vendor/pygments-main/{docs/src/plugins.txt → doc/docs/plugins.rst} +0 -0
- data/vendor/pygments-main/{docs/src/quickstart.txt → doc/docs/quickstart.rst} +22 -19
- data/vendor/pygments-main/{docs/src/rstdirective.txt → doc/docs/rstdirective.rst} +0 -0
- data/vendor/pygments-main/{docs/src/styles.txt → doc/docs/styles.rst} +2 -2
- data/vendor/pygments-main/{docs/src/tokens.txt → doc/docs/tokens.rst} +10 -7
- data/vendor/pygments-main/{docs/src/unicode.txt → doc/docs/unicode.rst} +8 -7
- data/vendor/pygments-main/doc/download.rst +41 -0
- data/vendor/pygments-main/doc/faq.rst +143 -0
- data/vendor/pygments-main/doc/index.rst +53 -0
- data/vendor/pygments-main/doc/languages.rst +151 -0
- data/vendor/pygments-main/doc/make.bat +190 -0
- data/vendor/pygments-main/{docs → doc}/pygmentize.1 +0 -0
- data/vendor/pygments-main/external/autopygmentize +65 -48
- data/vendor/pygments-main/external/markdown-processor.py +15 -15
- data/vendor/pygments-main/external/moin-parser.py +1 -1
- data/vendor/pygments-main/external/rst-directive.py +2 -3
- data/vendor/pygments-main/ez_setup.py +340 -234
- data/vendor/pygments-main/pygments/__init__.py +4 -4
- data/vendor/pygments-main/pygments/cmdline.py +81 -68
- data/vendor/pygments-main/pygments/console.py +1 -1
- data/vendor/pygments-main/pygments/filter.py +1 -1
- data/vendor/pygments-main/pygments/filters/__init__.py +11 -9
- data/vendor/pygments-main/pygments/formatter.py +3 -3
- data/vendor/pygments-main/pygments/formatters/__init__.py +5 -3
- data/vendor/pygments-main/pygments/formatters/_mapping.py +16 -5
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +44 -26
- data/vendor/pygments-main/pygments/formatters/img.py +21 -14
- data/vendor/pygments-main/pygments/formatters/latex.py +104 -12
- data/vendor/pygments-main/pygments/formatters/other.py +53 -6
- data/vendor/pygments-main/pygments/formatters/rtf.py +30 -16
- data/vendor/pygments-main/pygments/formatters/svg.py +2 -2
- data/vendor/pygments-main/pygments/formatters/terminal.py +41 -1
- data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -2
- data/vendor/pygments-main/pygments/lexer.py +59 -39
- data/vendor/pygments-main/pygments/lexers/__init__.py +38 -15
- data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +15 -15
- data/vendor/pygments-main/pygments/lexers/_cocoabuiltins.py +73 -0
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +11 -1
- data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +14 -8
- data/vendor/pygments-main/pygments/lexers/_mapping.py +81 -30
- data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +1067 -95
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +7 -7
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +5 -4
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +12 -7
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +112 -18
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/agile.py +644 -382
- data/vendor/pygments-main/pygments/lexers/asm.py +66 -29
- data/vendor/pygments-main/pygments/lexers/compiled.py +1643 -174
- data/vendor/pygments-main/pygments/lexers/dalvik.py +27 -6
- data/vendor/pygments-main/pygments/lexers/dotnet.py +45 -33
- data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
- data/vendor/pygments-main/pygments/lexers/functional.py +1510 -570
- data/vendor/pygments-main/pygments/lexers/graph.py +81 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +29 -30
- data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +622 -207
- data/vendor/pygments-main/pygments/lexers/math.py +438 -70
- data/vendor/pygments-main/pygments/lexers/other.py +885 -171
- data/vendor/pygments-main/pygments/lexers/parsers.py +24 -24
- data/vendor/pygments-main/pygments/lexers/qbasic.py +157 -0
- data/vendor/pygments-main/pygments/lexers/rdf.py +99 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +28 -25
- data/vendor/pygments-main/pygments/lexers/special.py +7 -8
- data/vendor/pygments-main/pygments/lexers/sql.py +56 -23
- data/vendor/pygments-main/pygments/lexers/templates.py +377 -59
- data/vendor/pygments-main/pygments/lexers/text.py +208 -46
- data/vendor/pygments-main/pygments/lexers/web.py +729 -264
- data/vendor/pygments-main/pygments/modeline.py +1 -1
- data/vendor/pygments-main/pygments/plugin.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +1 -1
- data/vendor/pygments-main/pygments/sphinxext.py +153 -0
- data/vendor/pygments-main/pygments/style.py +3 -2
- data/vendor/pygments-main/pygments/styles/__init__.py +5 -1
- data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
- data/vendor/pygments-main/pygments/styles/borland.py +1 -1
- data/vendor/pygments-main/pygments/styles/bw.py +1 -1
- data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
- data/vendor/pygments-main/pygments/styles/default.py +1 -1
- data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
- data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
- data/vendor/pygments-main/pygments/styles/igor.py +29 -0
- data/vendor/pygments-main/pygments/styles/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
- data/vendor/pygments-main/pygments/styles/native.py +1 -1
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +125 -0
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +125 -0
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
- data/vendor/pygments-main/pygments/styles/tango.py +1 -1
- data/vendor/pygments-main/pygments/styles/trac.py +1 -1
- data/vendor/pygments-main/pygments/styles/vim.py +1 -1
- data/vendor/pygments-main/pygments/styles/vs.py +1 -1
- data/vendor/pygments-main/pygments/styles/xcode.py +51 -0
- data/vendor/pygments-main/pygments/token.py +4 -1
- data/vendor/pygments-main/pygments/unistring.py +6 -5
- data/vendor/pygments-main/pygments/util.py +35 -21
- data/vendor/pygments-main/scripts/check_sources.py +28 -44
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +5 -4
- data/vendor/pygments-main/scripts/find_codetags.py +27 -19
- data/vendor/pygments-main/scripts/find_error.py +16 -13
- data/vendor/pygments-main/scripts/get_vimkw.py +3 -3
- data/vendor/pygments-main/scripts/vim2pygments.py +9 -7
- data/vendor/pygments-main/setup.py +19 -19
- data/vendor/pygments-main/tests/examplefiles/99_bottles_of_beer.chpl +118 -0
- data/vendor/pygments-main/tests/examplefiles/Error.pmod +38 -0
- data/vendor/pygments-main/tests/examplefiles/FakeFile.pike +360 -0
- data/vendor/pygments-main/tests/examplefiles/{ANTLRv3.g → antlr_ANTLRv3.g} +0 -0
- data/vendor/pygments-main/tests/examplefiles/clojure-weird-keywords.clj +5 -0
- data/vendor/pygments-main/tests/examplefiles/core.cljs +52 -0
- data/vendor/pygments-main/tests/examplefiles/demo.cfm +13 -1
- data/vendor/pygments-main/tests/examplefiles/demo.hbs +12 -0
- data/vendor/pygments-main/tests/examplefiles/ember.handlebars +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.als +217 -0
- data/vendor/pygments-main/tests/examplefiles/example.c +1 -1
- data/vendor/pygments-main/tests/examplefiles/example.chai +6 -0
- data/vendor/pygments-main/tests/examplefiles/example.coffee +27 -0
- data/vendor/pygments-main/tests/examplefiles/example.e +124 -0
- data/vendor/pygments-main/tests/examplefiles/example.f90 +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.feature +16 -0
- data/vendor/pygments-main/tests/examplefiles/example.gd +23 -0
- data/vendor/pygments-main/tests/examplefiles/example.gi +64 -0
- data/vendor/pygments-main/tests/examplefiles/example.groovy +2 -0
- data/vendor/pygments-main/tests/examplefiles/example.hs +27 -0
- data/vendor/pygments-main/tests/examplefiles/example.hx +44 -1
- data/vendor/pygments-main/tests/examplefiles/example.i6t +32 -0
- data/vendor/pygments-main/tests/examplefiles/example.i7x +45 -0
- data/vendor/pygments-main/tests/examplefiles/example.inf +374 -0
- data/vendor/pygments-main/tests/examplefiles/example.j +564 -0
- data/vendor/pygments-main/tests/examplefiles/example.java +16 -0
- data/vendor/pygments-main/tests/examplefiles/example.kal +75 -0
- data/vendor/pygments-main/tests/examplefiles/example.liquid +42 -0
- data/vendor/pygments-main/tests/examplefiles/example.ma +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.mq4 +187 -0
- data/vendor/pygments-main/tests/examplefiles/example.mqh +123 -0
- data/vendor/pygments-main/tests/examplefiles/example.ni +57 -0
- data/vendor/pygments-main/tests/examplefiles/example.nix +80 -0
- data/vendor/pygments-main/tests/examplefiles/example.pp +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.red +257 -0
- data/vendor/pygments-main/tests/examplefiles/example.reds +150 -0
- data/vendor/pygments-main/tests/examplefiles/example.rkt +677 -29
- data/vendor/pygments-main/tests/examplefiles/example.sh +22 -0
- data/vendor/pygments-main/tests/examplefiles/example.slim +31 -0
- data/vendor/pygments-main/tests/examplefiles/example.sls +51 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +2 -0
- data/vendor/pygments-main/tests/examplefiles/example.todotxt +9 -0
- data/vendor/pygments-main/tests/examplefiles/exampleScript.cfc +241 -0
- data/vendor/pygments-main/tests/examplefiles/exampleTag.cfc +18 -0
- data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +192 -350
- data/vendor/pygments-main/tests/examplefiles/hash_syntax.rb +5 -0
- data/vendor/pygments-main/tests/examplefiles/hello.at +6 -0
- data/vendor/pygments-main/tests/examplefiles/hello.golo +5 -0
- data/vendor/pygments-main/tests/examplefiles/hello.lsl +12 -0
- data/vendor/pygments-main/tests/examplefiles/{File.hy → hybris_File.hy} +0 -0
- data/vendor/pygments-main/tests/examplefiles/{mg_sample.pro → idl_sample.pro} +0 -0
- data/vendor/pygments-main/tests/examplefiles/iex_example +23 -0
- data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +24 -24
- data/vendor/pygments-main/tests/examplefiles/language.hy +165 -0
- data/vendor/pygments-main/tests/examplefiles/limbo.b +456 -0
- data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +3 -1
- data/vendor/pygments-main/tests/examplefiles/main.cmake +2 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +163 -16
- data/vendor/pygments-main/tests/examplefiles/{example.p → openedge_example} +0 -0
- data/vendor/pygments-main/tests/examplefiles/pawn_example +25 -0
- data/vendor/pygments-main/tests/examplefiles/qbasic_example +2 -0
- data/vendor/pygments-main/tests/examplefiles/r6rs-comments.scm +23 -0
- data/vendor/pygments-main/tests/examplefiles/{robotframework.txt → robotframework_test.txt} +0 -0
- data/vendor/pygments-main/tests/examplefiles/rql-queries.rql +34 -0
- data/vendor/pygments-main/tests/examplefiles/scope.cirru +43 -0
- data/vendor/pygments-main/tests/examplefiles/sparql.rq +23 -0
- data/vendor/pygments-main/tests/examplefiles/test.R +37 -5
- data/vendor/pygments-main/tests/examplefiles/test.apl +26 -0
- data/vendor/pygments-main/tests/examplefiles/test.cyp +123 -0
- data/vendor/pygments-main/tests/examplefiles/test.idr +93 -0
- data/vendor/pygments-main/tests/examplefiles/test.mask +41 -0
- data/vendor/pygments-main/tests/examplefiles/test.pan +54 -0
- data/vendor/pygments-main/tests/examplefiles/test.php +3 -1
- data/vendor/pygments-main/tests/examplefiles/test.pig +148 -0
- data/vendor/pygments-main/tests/examplefiles/test.pwn +253 -0
- data/vendor/pygments-main/tests/examplefiles/test.r3 +27 -7
- data/vendor/pygments-main/tests/examplefiles/test.rsl +111 -0
- data/vendor/pygments-main/tests/examplefiles/test.swift +65 -0
- data/vendor/pygments-main/tests/examplefiles/test.zep +33 -0
- data/vendor/pygments-main/tests/examplefiles/unicode.go +10 -0
- data/vendor/pygments-main/tests/examplefiles/{test.bas → vbnet_test.bas} +0 -0
- data/vendor/pygments-main/tests/examplefiles/vctreestatus_hg +4 -0
- data/vendor/pygments-main/tests/examplefiles/vimrc +21 -0
- data/vendor/pygments-main/tests/run.py +14 -19
- data/vendor/pygments-main/tests/string_asserts.py +22 -0
- data/vendor/pygments-main/tests/test_basic_api.py +28 -14
- data/vendor/pygments-main/tests/test_cfm.py +46 -0
- data/vendor/pygments-main/tests/test_clexer.py +208 -3
- data/vendor/pygments-main/tests/test_cmdline.py +6 -5
- data/vendor/pygments-main/tests/test_examplefiles.py +30 -19
- data/vendor/pygments-main/tests/test_html_formatter.py +15 -13
- data/vendor/pygments-main/tests/test_latex_formatter.py +4 -2
- data/vendor/pygments-main/tests/test_lexers_other.py +11 -11
- data/vendor/pygments-main/tests/test_objectiveclexer.py +81 -0
- data/vendor/pygments-main/tests/test_perllexer.py +1 -1
- data/vendor/pygments-main/tests/test_qbasiclexer.py +43 -0
- data/vendor/pygments-main/tests/test_regexlexer.py +8 -1
- data/vendor/pygments-main/tests/test_rtf_formatter.py +109 -0
- data/vendor/pygments-main/tests/test_string_asserts.py +39 -0
- data/vendor/pygments-main/tests/test_token.py +3 -3
- data/vendor/pygments-main/tests/test_using_api.py +1 -1
- data/vendor/pygments-main/tests/test_util.py +1 -1
- metadata +138 -51
- data/vendor/pygments-main/docs/generate.py +0 -472
- data/vendor/pygments-main/docs/src/api.txt +0 -270
- data/vendor/pygments-main/docs/src/authors.txt +0 -5
- data/vendor/pygments-main/docs/src/changelog.txt +0 -5
- data/vendor/pygments-main/docs/src/index.txt +0 -69
- data/vendor/pygments-main/docs/src/installation.txt +0 -71
- data/vendor/pygments-main/external/rst-directive-old.py +0 -77
- data/vendor/pygments-main/scripts/reindent.py +0 -291
- data/vendor/pygments-main/tests/examplefiles/import.hs +0 -4
- data/vendor/pygments-main/tests/examplefiles/objc_example2.m +0 -24
- data/vendor/pygments-main/tests/old_run.py +0 -138
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
Lexers for other languages.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
|
12
12
|
import re
|
13
13
|
|
14
14
|
from pygments.lexer import RegexLexer, include, bygroups, using, \
|
15
|
-
this, combined, ExtendedRegexLexer
|
15
|
+
this, combined, ExtendedRegexLexer, default
|
16
16
|
from pygments.token import Error, Punctuation, Literal, Token, \
|
17
17
|
Text, Comment, Operator, Keyword, Name, String, Number, Generic, \
|
18
18
|
Whitespace
|
@@ -36,7 +36,91 @@ __all__ = ['BrainfuckLexer', 'BefungeLexer', 'RedcodeLexer', 'MOOCodeLexer',
|
|
36
36
|
'ECLLexer', 'UrbiscriptLexer', 'OpenEdgeLexer', 'BroLexer',
|
37
37
|
'MscgenLexer', 'KconfigLexer', 'VGLLexer', 'SourcePawnLexer',
|
38
38
|
'RobotFrameworkLexer', 'PuppetLexer', 'NSISLexer', 'RPMSpecLexer',
|
39
|
-
'CbmBasicV2Lexer', 'AutoItLexer', 'RexxLexer'
|
39
|
+
'CbmBasicV2Lexer', 'AutoItLexer', 'RexxLexer', 'APLLexer',
|
40
|
+
'LSLLexer', 'AmbientTalkLexer', 'PawnLexer', 'VCTreeStatusLexer',
|
41
|
+
'RslLexer', 'PanLexer', 'RedLexer', 'AlloyLexer']
|
42
|
+
|
43
|
+
|
44
|
+
class LSLLexer(RegexLexer):
|
45
|
+
"""
|
46
|
+
For Second Life's Linden Scripting Language source code.
|
47
|
+
"""
|
48
|
+
|
49
|
+
name = 'LSL'
|
50
|
+
aliases = ['lsl']
|
51
|
+
filenames = ['*.lsl']
|
52
|
+
mimetypes = ['text/x-lsl']
|
53
|
+
|
54
|
+
flags = re.MULTILINE
|
55
|
+
|
56
|
+
lsl_keywords = r'\b(?:do|else|for|if|jump|return|while)\b'
|
57
|
+
lsl_types = r'\b(?:float|integer|key|list|quaternion|rotation|string|vector)\b'
|
58
|
+
lsl_states = r'\b(?:(?:state)\s+\w+|default)\b'
|
59
|
+
lsl_events = r'\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\b'
|
60
|
+
lsl_functions_builtin = r'\b(?:ll(?:ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|RequestPermissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\b'
|
61
|
+
lsl_constants_float = r'\b(?:DEG_TO_RAD|PI(?:_BY_TWO)?|RAD_TO_DEG|SQRT2|TWO_PI)\b'
|
62
|
+
lsl_constants_integer = r'\b(?:JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASSIVE|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_ON_REZ|NAME|DESC|POS|PRIM_EQUIVALENCE|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|ROO?T|VELOCITY|OWNER|GROUP|CREATOR|ATTACHED_POINT|RENDER_WEIGHT|PATHFINDING_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?))|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE|SET_MODE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\b'
|
63
|
+
lsl_constants_integer_boolean = r'\b(?:FALSE|TRUE)\b'
|
64
|
+
lsl_constants_rotation = r'\b(?:ZERO_ROTATION)\b'
|
65
|
+
lsl_constants_string = r'\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\b'
|
66
|
+
lsl_constants_vector = r'\b(?:TOUCH_INVALID_(?:TEXCOORD|VECTOR)|ZERO_VECTOR)\b'
|
67
|
+
lsl_invalid_broken = r'\b(?:LAND_(?:LARGE|MEDIUM|SMALL)_BRUSH)\b'
|
68
|
+
lsl_invalid_deprecated = r'\b(?:ATTACH_[LR]PEC|DATA_RATING|OBJECT_ATTACHMENT_(?:GEOMETRY_BYTES|SURFACE_AREA)|PRIM_(?:CAST_SHADOWS|MATERIAL_LIGHT|TYPE_LEGACY)|PSYS_SRC_(?:INNER|OUTER)ANGLE|VEHICLE_FLAG_NO_FLY_UP|ll(?:Cloud|Make(?:Explosion|Fountain|Smoke|Fire)|RemoteDataSetRegion|Sound(?:Preload)?|XorBase64Strings(?:Correct)?))\b'
|
69
|
+
lsl_invalid_illegal = r'\b(?:event)\b'
|
70
|
+
lsl_invalid_unimplemented = r'\b(?:CHARACTER_(?:MAX_ANGULAR_(?:ACCEL|SPEED)|TURN_SPEED_MULTIPLIER)|PERMISSION_(?:CHANGE_(?:JOINTS|PERMISSIONS)|RELEASE_OWNERSHIP|REMAP_CONTROLS)|PRIM_PHYSICS_MATERIAL|PSYS_SRC_OBJ_REL_MASK|ll(?:CollisionSprite|(?:Stop)?PointAt|(?:(?:Refresh|Set)Prim)URL|(?:Take|Release)Camera|RemoteLoadScript))\b'
|
71
|
+
lsl_reserved_godmode = r'\b(?:ll(?:GodLikeRezObject|Set(?:Inventory|Object)PermMask))\b'
|
72
|
+
lsl_reserved_log = r'\b(?:print)\b'
|
73
|
+
lsl_operators = r'\+\+|\-\-|<<|>>|&&?|\|\|?|\^|~|[!%<>=*+\-\/]=?'
|
74
|
+
|
75
|
+
tokens = {
|
76
|
+
'root':
|
77
|
+
[
|
78
|
+
(r'//.*?\n', Comment.Single),
|
79
|
+
(r'/\*', Comment.Multiline, 'comment'),
|
80
|
+
(r'"', String.Double, 'string'),
|
81
|
+
(lsl_keywords, Keyword),
|
82
|
+
(lsl_types, Keyword.Type),
|
83
|
+
(lsl_states, Name.Class),
|
84
|
+
(lsl_events, Name.Builtin),
|
85
|
+
(lsl_functions_builtin, Name.Function),
|
86
|
+
(lsl_constants_float, Keyword.Constant),
|
87
|
+
(lsl_constants_integer, Keyword.Constant),
|
88
|
+
(lsl_constants_integer_boolean, Keyword.Constant),
|
89
|
+
(lsl_constants_rotation, Keyword.Constant),
|
90
|
+
(lsl_constants_string, Keyword.Constant),
|
91
|
+
(lsl_constants_vector, Keyword.Constant),
|
92
|
+
(lsl_invalid_broken, Error),
|
93
|
+
(lsl_invalid_deprecated, Error),
|
94
|
+
(lsl_invalid_illegal, Error),
|
95
|
+
(lsl_invalid_unimplemented, Error),
|
96
|
+
(lsl_reserved_godmode, Keyword.Reserved),
|
97
|
+
(lsl_reserved_log, Keyword.Reserved),
|
98
|
+
(r'\b([a-zA-Z_]\w*)\b', Name.Variable),
|
99
|
+
(r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d*', Number.Float),
|
100
|
+
(r'(\d+\.\d*|\.\d+)', Number.Float),
|
101
|
+
(r'0[xX][0-9a-fA-F]+', Number.Hex),
|
102
|
+
(r'\d+', Number.Integer),
|
103
|
+
(lsl_operators, Operator),
|
104
|
+
(r':=?', Error),
|
105
|
+
(r'[,;{}\(\)\[\]]', Punctuation),
|
106
|
+
(r'\n+', Whitespace),
|
107
|
+
(r'\s+', Whitespace)
|
108
|
+
],
|
109
|
+
'comment':
|
110
|
+
[
|
111
|
+
(r'[^*/]+', Comment.Multiline),
|
112
|
+
(r'/\*', Comment.Multiline, '#push'),
|
113
|
+
(r'\*/', Comment.Multiline, '#pop'),
|
114
|
+
(r'[*/]', Comment.Multiline)
|
115
|
+
],
|
116
|
+
'string':
|
117
|
+
[
|
118
|
+
(r'\\([nt"\\])', String.Escape),
|
119
|
+
(r'"', String.Double, '#pop'),
|
120
|
+
(r'\\.', Error),
|
121
|
+
(r'[^"\\]+', String.Double),
|
122
|
+
]
|
123
|
+
}
|
40
124
|
|
41
125
|
|
42
126
|
class ECLLexer(RegexLexer):
|
@@ -45,7 +129,7 @@ class ECLLexer(RegexLexer):
|
|
45
129
|
<http://hpccsystems.com/community/docs/ecl-language-reference/html>`_
|
46
130
|
language.
|
47
131
|
|
48
|
-
|
132
|
+
.. versionadded:: 1.5
|
49
133
|
"""
|
50
134
|
|
51
135
|
name = 'ECL'
|
@@ -72,15 +156,15 @@ class ECLLexer(RegexLexer):
|
|
72
156
|
include('hash'),
|
73
157
|
(r'"', String, 'string'),
|
74
158
|
(r'\'', String, 'string'),
|
75
|
-
(r'(\d+\.\d*|\.\d+|\d+)[
|
159
|
+
(r'(\d+\.\d*|\.\d+|\d+)e[+-]?\d+[lu]*', Number.Float),
|
76
160
|
(r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
|
77
|
-
(r'0x[0-9a-
|
78
|
-
(r'0[0-7]+[
|
161
|
+
(r'0x[0-9a-f]+[lu]*', Number.Hex),
|
162
|
+
(r'0[0-7]+[lu]*', Number.Oct),
|
79
163
|
(r'\d+[LlUu]*', Number.Integer),
|
80
164
|
(r'\*/', Error),
|
81
165
|
(r'[~!%^&*+=|?:<>/-]+', Operator),
|
82
166
|
(r'[{}()\[\],.;]', Punctuation),
|
83
|
-
(r'[a-
|
167
|
+
(r'[a-z_]\w*', Name),
|
84
168
|
],
|
85
169
|
'hash': [
|
86
170
|
(r'^#.*$', Comment.Preproc),
|
@@ -176,7 +260,7 @@ class BefungeLexer(RegexLexer):
|
|
176
260
|
Lexer for the esoteric `Befunge <http://en.wikipedia.org/wiki/Befunge>`_
|
177
261
|
language.
|
178
262
|
|
179
|
-
|
263
|
+
.. versionadded:: 0.7
|
180
264
|
"""
|
181
265
|
name = 'Befunge'
|
182
266
|
aliases = ['befunge']
|
@@ -206,7 +290,7 @@ class RedcodeLexer(RegexLexer):
|
|
206
290
|
A simple Redcode lexer based on ICWS'94.
|
207
291
|
Contributed by Adam Blinkinsop <blinks@acm.org>.
|
208
292
|
|
209
|
-
|
293
|
+
.. versionadded:: 0.8
|
210
294
|
"""
|
211
295
|
name = 'Redcode'
|
212
296
|
aliases = ['redcode']
|
@@ -242,7 +326,7 @@ class MOOCodeLexer(RegexLexer):
|
|
242
326
|
For `MOOCode <http://www.moo.mud.org/>`_ (the MOO scripting
|
243
327
|
language).
|
244
328
|
|
245
|
-
|
329
|
+
.. versionadded:: 0.9
|
246
330
|
"""
|
247
331
|
name = 'MOOCode'
|
248
332
|
filenames = ['*.moo']
|
@@ -286,7 +370,7 @@ class SmalltalkLexer(RegexLexer):
|
|
286
370
|
Contributed by Stefan Matthias Aust.
|
287
371
|
Rewritten by Nils Winter.
|
288
372
|
|
289
|
-
|
373
|
+
.. versionadded:: 0.10
|
290
374
|
"""
|
291
375
|
name = 'Smalltalk'
|
292
376
|
filenames = ['*.st']
|
@@ -319,7 +403,7 @@ class SmalltalkLexer(RegexLexer):
|
|
319
403
|
(r'(:)(\s*)(\w+)',
|
320
404
|
bygroups(Operator, Text, Name.Variable)),
|
321
405
|
(r'\|', Operator, '#pop'),
|
322
|
-
(
|
406
|
+
default('#pop'), # else pop
|
323
407
|
],
|
324
408
|
'literals' : [
|
325
409
|
(r"'(''|[^'])*'", String, 'afterobject'),
|
@@ -405,7 +489,7 @@ class LogtalkLexer(RegexLexer):
|
|
405
489
|
"""
|
406
490
|
For `Logtalk <http://logtalk.org/>`_ source code.
|
407
491
|
|
408
|
-
|
492
|
+
.. versionadded:: 0.10
|
409
493
|
"""
|
410
494
|
|
411
495
|
name = 'Logtalk'
|
@@ -425,12 +509,12 @@ class LogtalkLexer(RegexLexer):
|
|
425
509
|
(r'\s+', Text),
|
426
510
|
# Numbers
|
427
511
|
(r"0'.", Number),
|
428
|
-
(r'0b[01]+', Number),
|
429
|
-
(r'0o[0-7]+', Number),
|
430
|
-
(r'0x[0-9a-fA-F]+', Number),
|
431
|
-
(r'\d+\.?\d*((e|E)(\+|-)?\d+)?', Number),
|
512
|
+
(r'0b[01]+', Number.Bin),
|
513
|
+
(r'0o[0-7]+', Number.Oct),
|
514
|
+
(r'0x[0-9a-fA-F]+', Number.Hex),
|
515
|
+
(r'\d+\.?\d*((e|E)(\+|-)?\d+)?', Number.Float),
|
432
516
|
# Variables
|
433
|
-
(r'([A-Z_]
|
517
|
+
(r'([A-Z_]\w*)', Name.Variable),
|
434
518
|
# Event handlers
|
435
519
|
(r'(after|before)(?=[(])', Keyword),
|
436
520
|
# Execution-context methods
|
@@ -546,7 +630,7 @@ class LogtalkLexer(RegexLexer):
|
|
546
630
|
# Ponctuation
|
547
631
|
(r'[()\[\],.|]', Text),
|
548
632
|
# Atoms
|
549
|
-
(r"[a-z]
|
633
|
+
(r"[a-z]\w*", Text),
|
550
634
|
(r"'", String, 'quoted_atom'),
|
551
635
|
],
|
552
636
|
|
@@ -577,8 +661,8 @@ class LogtalkLexer(RegexLexer):
|
|
577
661
|
(r'op(?=[(])', Keyword, 'root'),
|
578
662
|
(r'(c(alls|oinductive)|reexport|use(s|_module))(?=[(])',
|
579
663
|
Keyword, 'root'),
|
580
|
-
(r'[a-z]
|
581
|
-
(r'[a-z]
|
664
|
+
(r'[a-z]\w*(?=[(])', Text, 'root'),
|
665
|
+
(r'[a-z]\w*[.]', Text, 'root'),
|
582
666
|
],
|
583
667
|
|
584
668
|
'entityrelations': [
|
@@ -586,14 +670,14 @@ class LogtalkLexer(RegexLexer):
|
|
586
670
|
r'(?=[(])', Keyword),
|
587
671
|
# Numbers
|
588
672
|
(r"0'.", Number),
|
589
|
-
(r'0b[01]+', Number),
|
590
|
-
(r'0o[0-7]+', Number),
|
591
|
-
(r'0x[0-9a-fA-F]+', Number),
|
592
|
-
(r'\d+\.?\d*((e|E)(\+|-)?\d+)?', Number),
|
673
|
+
(r'0b[01]+', Number.Bin),
|
674
|
+
(r'0o[0-7]+', Number.Oct),
|
675
|
+
(r'0x[0-9a-fA-F]+', Number.Hex),
|
676
|
+
(r'\d+\.?\d*((e|E)(\+|-)?\d+)?', Number.Float),
|
593
677
|
# Variables
|
594
|
-
(r'([A-Z_]
|
678
|
+
(r'([A-Z_]\w*)', Name.Variable),
|
595
679
|
# Atoms
|
596
|
-
(r"[a-z]
|
680
|
+
(r"[a-z]\w*", Text),
|
597
681
|
(r"'", String, 'quoted_atom'),
|
598
682
|
# Strings
|
599
683
|
(r'"(\\\\|\\"|[^"])*"', String),
|
@@ -633,7 +717,7 @@ class GnuplotLexer(RegexLexer):
|
|
633
717
|
"""
|
634
718
|
For `Gnuplot <http://gnuplot.info/>`_ plotting scripts.
|
635
719
|
|
636
|
-
|
720
|
+
.. versionadded:: 0.11
|
637
721
|
"""
|
638
722
|
|
639
723
|
name = 'Gnuplot'
|
@@ -663,11 +747,11 @@ class GnuplotLexer(RegexLexer):
|
|
663
747
|
(_shortened_many('pwd$', 're$read', 'res$et', 'scr$eendump',
|
664
748
|
'she$ll', 'test$'),
|
665
749
|
Keyword, 'noargs'),
|
666
|
-
('([a-zA-Z_]
|
750
|
+
('([a-zA-Z_]\w*)(\s*)(=)',
|
667
751
|
bygroups(Name.Variable, Text, Operator), 'genericargs'),
|
668
|
-
('([a-zA-Z_]
|
752
|
+
('([a-zA-Z_]\w*)(\s*\(.*?\)\s*)(=)',
|
669
753
|
bygroups(Name.Function, Text, Operator), 'genericargs'),
|
670
|
-
(r'@[a-zA-Z_]
|
754
|
+
(r'@[a-zA-Z_]\w*', Name.Constant), # macros
|
671
755
|
(r';', Keyword),
|
672
756
|
],
|
673
757
|
'comment': [
|
@@ -713,10 +797,10 @@ class GnuplotLexer(RegexLexer):
|
|
713
797
|
('[,.~!%^&*+=|?:<>/-]', Operator),
|
714
798
|
('[{}()\[\]]', Punctuation),
|
715
799
|
(r'(eq|ne)\b', Operator.Word),
|
716
|
-
(r'([a-zA-Z_]
|
800
|
+
(r'([a-zA-Z_]\w*)(\s*)(\()',
|
717
801
|
bygroups(Name.Function, Text, Punctuation)),
|
718
|
-
(r'[a-zA-Z_]
|
719
|
-
(r'@[a-zA-Z_]
|
802
|
+
(r'[a-zA-Z_]\w*', Name),
|
803
|
+
(r'@[a-zA-Z_]\w*', Name.Constant), # macros
|
720
804
|
(r'\\\n', Text),
|
721
805
|
],
|
722
806
|
'optionarg': [
|
@@ -792,7 +876,7 @@ class PovrayLexer(RegexLexer):
|
|
792
876
|
"""
|
793
877
|
For `Persistence of Vision Raytracer <http://www.povray.org/>`_ files.
|
794
878
|
|
795
|
-
|
879
|
+
.. versionadded:: 0.11
|
796
880
|
"""
|
797
881
|
name = 'POVRay'
|
798
882
|
aliases = ['pov']
|
@@ -1150,18 +1234,18 @@ class AppleScriptLexer(RegexLexer):
|
|
1150
1234
|
tokens = {
|
1151
1235
|
'root': [
|
1152
1236
|
(r'\s+', Text),
|
1153
|
-
(
|
1237
|
+
(u'¬\\n', String.Escape),
|
1154
1238
|
(r"'s\s+", Text), # This is a possessive, consider moving
|
1155
1239
|
(r'(--|#).*?$', Comment),
|
1156
1240
|
(r'\(\*', Comment.Multiline, 'comment'),
|
1157
1241
|
(r'[\(\){}!,.:]', Punctuation),
|
1158
|
-
(
|
1242
|
+
(u'(«)([^»]+)(»)',
|
1159
1243
|
bygroups(Text, Name.Builtin, Text)),
|
1160
1244
|
(r'\b((?:considering|ignoring)\s*)'
|
1161
1245
|
r'(application responses|case|diacriticals|hyphens|'
|
1162
1246
|
r'numeric strings|punctuation|white space)',
|
1163
1247
|
bygroups(Keyword, Name.Builtin)),
|
1164
|
-
(
|
1248
|
+
(u'(-|\\*|\\+|&|≠|>=?|<=?|=|≥|≤|/|÷|\\^)', Operator),
|
1165
1249
|
(r"\b(%s)\b" % '|'.join(Operators), Operator.Word),
|
1166
1250
|
(r'^(\s*(?:on|end)\s+)'
|
1167
1251
|
r'(%s)' % '|'.join(StudioEvents[::-1]),
|
@@ -1198,7 +1282,7 @@ class ModelicaLexer(RegexLexer):
|
|
1198
1282
|
"""
|
1199
1283
|
For `Modelica <http://www.modelica.org/>`_ source code.
|
1200
1284
|
|
1201
|
-
|
1285
|
+
.. versionadded:: 1.1
|
1202
1286
|
"""
|
1203
1287
|
name = 'Modelica'
|
1204
1288
|
aliases = ['modelica']
|
@@ -1221,25 +1305,28 @@ class ModelicaLexer(RegexLexer):
|
|
1221
1305
|
(r'(\d+\.\d*|\.\d+)', Number.Float),
|
1222
1306
|
(r'\d+[Ll]?', Number.Integer),
|
1223
1307
|
(r'[~!%^&*+=|?:<>/-]', Operator),
|
1224
|
-
(r'[()\[\]{},.;]', Punctuation),
|
1225
1308
|
(r'(true|false|NULL|Real|Integer|Boolean)\b', Name.Builtin),
|
1226
|
-
(r
|
1227
|
-
r
|
1228
|
-
|
1309
|
+
(r'([a-z_][\w]*|\'[^\']+\')'
|
1310
|
+
r'([\[\d,:\]]*)'
|
1311
|
+
r'(\.([a-z_][\w]*|\'[^\']+\'))+'
|
1312
|
+
r'([\[\d,:\]]*)', Name.Class),
|
1313
|
+
(r'(\'[\w\+\-\*\/\^]+\'|\w+)', Name),
|
1314
|
+
(r'[()\[\]{},.;]', Punctuation),
|
1315
|
+
(r'\'', Name, 'quoted_ident'),
|
1229
1316
|
],
|
1230
1317
|
'root': [
|
1231
1318
|
include('whitespace'),
|
1232
|
-
include('
|
1319
|
+
include('classes'),
|
1233
1320
|
include('functions'),
|
1321
|
+
include('keywords'),
|
1234
1322
|
include('operators'),
|
1235
|
-
include('classes'),
|
1236
1323
|
(r'("<html>|<html>)', Name.Tag, 'html-content'),
|
1237
1324
|
include('statements'),
|
1238
1325
|
],
|
1239
1326
|
'keywords': [
|
1240
1327
|
(r'(algorithm|annotation|break|connect|constant|constrainedby|'
|
1241
|
-
r'discrete|each|else|elseif|elsewhen|encapsulated|enumeration|'
|
1242
|
-
r'
|
1328
|
+
r'discrete|each|end|else|elseif|elsewhen|encapsulated|enumeration|'
|
1329
|
+
r'equation|exit|expandable|extends|'
|
1243
1330
|
r'external|false|final|flow|for|if|import|impure|in|initial\sequation|'
|
1244
1331
|
r'inner|input|loop|nondiscrete|outer|output|parameter|partial|'
|
1245
1332
|
r'protected|public|pure|redeclare|replaceable|stream|time|then|true|'
|
@@ -1247,31 +1334,39 @@ class ModelicaLexer(RegexLexer):
|
|
1247
1334
|
],
|
1248
1335
|
'functions': [
|
1249
1336
|
(r'(abs|acos|acosh|asin|asinh|atan|atan2|atan3|ceil|cos|cosh|'
|
1250
|
-
r'cross|div|exp|floor|getInstanceName|
|
1251
|
-
r'
|
1252
|
-
r'
|
1337
|
+
r'cross|diagonal|div|exp|fill|floor|getInstanceName|identity|'
|
1338
|
+
r'linspace|log|log10|matrix|mod|max|min|ndims|ones|outerProduct|'
|
1339
|
+
r'product|rem|scalar|semiLinear|skew|sign|sin|sinh|size|'
|
1340
|
+
r'spatialDistribution|sum|sqrt|symmetric|tan|tanh|transpose|'
|
1341
|
+
r'vector|zeros)\b', Name.Function),
|
1253
1342
|
],
|
1254
1343
|
'operators': [
|
1255
|
-
(r'(actualStream|and|assert|cardinality|change|Clock|
|
1256
|
-
r'hold|homotopy|initial|inStream|noEvent|
|
1257
|
-
r'return|sample|smooth|
|
1344
|
+
(r'(actualStream|and|assert|backSample|cardinality|change|Clock|'
|
1345
|
+
r'delay|der|edge|hold|homotopy|initial|inStream|noClock|noEvent|'
|
1346
|
+
r'not|or|pre|previous|reinit|return|sample|smooth|'
|
1347
|
+
r'spatialDistribution|shiftSample|subSample|superSample|terminal|'
|
1258
1348
|
r'terminate)\b', Name.Builtin),
|
1259
1349
|
],
|
1260
1350
|
'classes': [
|
1261
|
-
(r'(block|class|connector|function|model|
|
1262
|
-
r'record|type)(\s+)
|
1263
|
-
|
1351
|
+
(r'(operator)?(\s+)?(block|class|connector|end|function|model|'
|
1352
|
+
r'operator|package|record|type)(\s+)'
|
1353
|
+
r'((?!if|for|when|while)[a-z_]\w*|\'[^\']+\')([;]?)',
|
1354
|
+
bygroups(Keyword, Text, Keyword, Text, Name.Class, Text))
|
1355
|
+
],
|
1356
|
+
'quoted_ident': [
|
1357
|
+
(r'\'', Name, '#pop'),
|
1358
|
+
(r'[^\']+', Name), # all other characters
|
1264
1359
|
],
|
1265
1360
|
'string': [
|
1266
1361
|
(r'"', String, '#pop'),
|
1267
|
-
(r'\\([\\abfnrtv"\']|x[a-
|
1362
|
+
(r'\\([\\abfnrtv"\']|x[a-f0-9]{2,4}|[0-7]{1,3})',
|
1268
1363
|
String.Escape),
|
1269
1364
|
(r'[^\\"\n]+', String), # all other characters
|
1270
1365
|
(r'\\\n', String), # line continuation
|
1271
1366
|
(r'\\', String), # stray backslash
|
1272
1367
|
],
|
1273
1368
|
'html-content': [
|
1274
|
-
(r'<\s*/\s*html\s*>', Name.Tag, '#pop'),
|
1369
|
+
(r'<\s*/\s*html\s*>"', Name.Tag, '#pop'),
|
1275
1370
|
(r'.+?(?=<\s*/\s*html\s*>)', using(HtmlLexer)),
|
1276
1371
|
]
|
1277
1372
|
}
|
@@ -1281,18 +1376,18 @@ class RebolLexer(RegexLexer):
|
|
1281
1376
|
"""
|
1282
1377
|
A `REBOL <http://www.rebol.com/>`_ lexer.
|
1283
1378
|
|
1284
|
-
|
1379
|
+
.. versionadded:: 1.1
|
1285
1380
|
"""
|
1286
1381
|
name = 'REBOL'
|
1287
1382
|
aliases = ['rebol']
|
1288
|
-
filenames = ['*.r', '*.r3']
|
1383
|
+
filenames = ['*.r', '*.r3', '*.reb']
|
1289
1384
|
mimetypes = ['text/x-rebol']
|
1290
1385
|
|
1291
1386
|
flags = re.IGNORECASE | re.MULTILINE
|
1292
1387
|
|
1293
1388
|
re.IGNORECASE
|
1294
1389
|
|
1295
|
-
escape_re = r'(?:\^\([0-9a-
|
1390
|
+
escape_re = r'(?:\^\([0-9a-f]{1,4}\)*)'
|
1296
1391
|
|
1297
1392
|
def word_callback(lexer, match):
|
1298
1393
|
word = match.group()
|
@@ -1381,16 +1476,16 @@ class RebolLexer(RegexLexer):
|
|
1381
1476
|
|
1382
1477
|
tokens = {
|
1383
1478
|
'root': [
|
1384
|
-
(r'REBOL', Generic.Strong, 'script'),
|
1385
|
-
(r'R', Comment),
|
1386
1479
|
(r'[^R]+', Comment),
|
1480
|
+
(r'REBOL\s+\[', Generic.Strong, 'script'),
|
1481
|
+
(r'R', Comment)
|
1387
1482
|
],
|
1388
1483
|
'script': [
|
1389
1484
|
(r'\s+', Text),
|
1390
1485
|
(r'#"', String.Char, 'char'),
|
1391
|
-
(r'#{[0-9a-
|
1486
|
+
(r'#{[0-9a-f]*}', Number.Hex),
|
1392
1487
|
(r'2#{', Number.Hex, 'bin2'),
|
1393
|
-
(r'64#{[0-9a-
|
1488
|
+
(r'64#{[0-9a-z+/=\s]*}', Number.Hex),
|
1394
1489
|
(r'"', String, 'string'),
|
1395
1490
|
(r'{', String, 'string2'),
|
1396
1491
|
(r';#+.*\n', Comment.Special),
|
@@ -1398,23 +1493,26 @@ class RebolLexer(RegexLexer):
|
|
1398
1493
|
(r';.*\n', Comment),
|
1399
1494
|
(r'%"', Name.Decorator, 'stringFile'),
|
1400
1495
|
(r'%[^(\^{^")\s\[\]]+', Name.Decorator),
|
1401
|
-
(r'[+-]?([a-
|
1496
|
+
(r'[+-]?([a-z]{1,3})?\$\d+(\.\d+)?', Number.Float), # money
|
1402
1497
|
(r'[+-]?\d+\:\d+(\:\d+)?(\.\d+)?', String.Other), # time
|
1403
|
-
(r'\d
|
1404
|
-
r'([\.\d+]?([+-]?\d+:\d+)?)?)?', String.Other), # date
|
1498
|
+
(r'\d+[\-\/][0-9a-z]+[\-\/]\d+(\/\d+\:\d+((\:\d+)?'
|
1499
|
+
r'([\.\d+]?([+-]?\d+:\d+)?)?)?)?', String.Other), # date
|
1405
1500
|
(r'\d+(\.\d+)+\.\d+', Keyword.Constant), # tuple
|
1406
1501
|
(r'\d+[xX]\d+', Keyword.Constant), # pair
|
1407
1502
|
(r'[+-]?\d+(\'\d+)?([\.,]\d*)?[eE][+-]?\d+', Number.Float),
|
1408
1503
|
(r'[+-]?\d+(\'\d+)?[\.,]\d*', Number.Float),
|
1409
1504
|
(r'[+-]?\d+(\'\d+)?', Number),
|
1410
1505
|
(r'[\[\]\(\)]', Generic.Strong),
|
1411
|
-
(r'[a-
|
1506
|
+
(r'[a-z]+[^(\^{"\s:)]*://[^(\^{"\s)]*', Name.Decorator), # url
|
1412
1507
|
(r'mailto:[^(\^{"@\s)]+@[^(\^{"@\s)]+', Name.Decorator), # url
|
1413
1508
|
(r'[^(\^{"@\s)]+@[^(\^{"@\s)]+', Name.Decorator), # email
|
1414
|
-
(r'comment\s', Comment, '
|
1509
|
+
(r'comment\s"', Comment, 'commentString1'),
|
1510
|
+
(r'comment\s{', Comment, 'commentString2'),
|
1511
|
+
(r'comment\s\[', Comment, 'commentBlock'),
|
1512
|
+
(r'comment\s[^(\s{\"\[]+', Comment),
|
1415
1513
|
(r'/[^(\^{^")\s/[\]]*', Name.Attribute),
|
1416
1514
|
(r'([^(\^{^")\s/[\]]+)(?=[:({"\s/\[\]])', word_callback),
|
1417
|
-
(r'<[
|
1515
|
+
(r'<[\w:.-]*>', Name.Tag),
|
1418
1516
|
(r'<[^(<>\s")]+', Name.Tag, 'tag'),
|
1419
1517
|
(r'([^(\^{^")\s]+)', Text),
|
1420
1518
|
],
|
@@ -1466,12 +1564,6 @@ class RebolLexer(RegexLexer):
|
|
1466
1564
|
(r'([0-1]\s*){8}', Number.Hex),
|
1467
1565
|
(r'}', Number.Hex, '#pop'),
|
1468
1566
|
],
|
1469
|
-
'comment': [
|
1470
|
-
(r'"', Comment, 'commentString1'),
|
1471
|
-
(r'{', Comment, 'commentString2'),
|
1472
|
-
(r'\[', Comment, 'commentBlock'),
|
1473
|
-
(r'[^(\s{\"\[]+', Comment, '#pop'),
|
1474
|
-
],
|
1475
1567
|
'commentString1': [
|
1476
1568
|
(r'[^(\^")]+', Comment),
|
1477
1569
|
(escape_re, Comment),
|
@@ -1490,16 +1582,28 @@ class RebolLexer(RegexLexer):
|
|
1490
1582
|
'commentBlock': [
|
1491
1583
|
(r'\[', Comment, '#push'),
|
1492
1584
|
(r'\]', Comment, '#pop'),
|
1493
|
-
(r'
|
1585
|
+
(r'"', Comment, "commentString1"),
|
1586
|
+
(r'{', Comment, "commentString2"),
|
1587
|
+
(r'[^(\[\]\"{)]+', Comment),
|
1494
1588
|
],
|
1495
1589
|
}
|
1590
|
+
def analyse_text(text):
|
1591
|
+
"""
|
1592
|
+
Check if code contains REBOL header and so it probably not R code
|
1593
|
+
"""
|
1594
|
+
if re.match(r'^\s*REBOL\s*\[', text, re.IGNORECASE):
|
1595
|
+
# The code starts with REBOL header
|
1596
|
+
return 1.0
|
1597
|
+
elif re.search(r'\s*REBOL\s*[', text, re.IGNORECASE):
|
1598
|
+
# The code contains REBOL header but also some text before it
|
1599
|
+
return 0.5
|
1496
1600
|
|
1497
1601
|
|
1498
1602
|
class ABAPLexer(RegexLexer):
|
1499
1603
|
"""
|
1500
1604
|
Lexer for ABAP, SAP's integrated language.
|
1501
1605
|
|
1502
|
-
|
1606
|
+
.. versionadded:: 1.1
|
1503
1607
|
"""
|
1504
1608
|
name = 'ABAP'
|
1505
1609
|
aliases = ['abap']
|
@@ -1515,7 +1619,7 @@ class ABAPLexer(RegexLexer):
|
|
1515
1619
|
(r'\".*?\n', Comment.Single),
|
1516
1620
|
],
|
1517
1621
|
'variable-names': [
|
1518
|
-
(r'
|
1622
|
+
(r'<\S+>', Name.Variable),
|
1519
1623
|
(r'\w[\w~]*(?:(\[\])|->\*)?', Name.Variable),
|
1520
1624
|
],
|
1521
1625
|
'root': [
|
@@ -1680,6 +1784,7 @@ class ABAPLexer(RegexLexer):
|
|
1680
1784
|
# because < and > are part of field symbols.
|
1681
1785
|
(r'[?*<>=\-+]', Operator),
|
1682
1786
|
(r"'(''|[^'])*'", String.Single),
|
1787
|
+
(r"`([^`])*`", String.Single),
|
1683
1788
|
(r'[/;:()\[\],\.]', Punctuation)
|
1684
1789
|
],
|
1685
1790
|
}
|
@@ -1698,15 +1803,15 @@ class NewspeakLexer(RegexLexer):
|
|
1698
1803
|
'root' : [
|
1699
1804
|
(r'\b(Newsqueak2)\b',Keyword.Declaration),
|
1700
1805
|
(r"'[^']*'",String),
|
1701
|
-
(r'\b(class)(\s+)(
|
1806
|
+
(r'\b(class)(\s+)(\w+)(\s*)',
|
1702
1807
|
bygroups(Keyword.Declaration,Text,Name.Class,Text)),
|
1703
1808
|
(r'\b(mixin|self|super|private|public|protected|nil|true|false)\b',
|
1704
1809
|
Keyword),
|
1705
|
-
(r'(
|
1810
|
+
(r'(\w+\:)(\s*)([a-zA-Z_]\w+)',
|
1706
1811
|
bygroups(Name.Function,Text,Name.Variable)),
|
1707
|
-
(r'(
|
1812
|
+
(r'(\w+)(\s*)(=)',
|
1708
1813
|
bygroups(Name.Attribute,Text,Operator)),
|
1709
|
-
(r'
|
1814
|
+
(r'<\w+>', Comment.Special),
|
1710
1815
|
include('expressionstat'),
|
1711
1816
|
include('whitespace')
|
1712
1817
|
],
|
@@ -1746,21 +1851,21 @@ class GherkinLexer(RegexLexer):
|
|
1746
1851
|
"""
|
1747
1852
|
For `Gherkin <http://github.com/aslakhellesoy/gherkin/>` syntax.
|
1748
1853
|
|
1749
|
-
|
1854
|
+
.. versionadded:: 1.2
|
1750
1855
|
"""
|
1751
1856
|
name = 'Gherkin'
|
1752
|
-
aliases = ['
|
1857
|
+
aliases = ['cucumber', 'gherkin']
|
1753
1858
|
filenames = ['*.feature']
|
1754
1859
|
mimetypes = ['text/x-gherkin']
|
1755
1860
|
|
1756
|
-
feature_keywords =
|
1757
|
-
feature_element_keywords =
|
1758
|
-
examples_keywords =
|
1759
|
-
step_keywords =
|
1861
|
+
feature_keywords = u'^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Фича|Особина|Могућност|Özellik|Właściwość|Tính năng|Trajto|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$'
|
1862
|
+
feature_element_keywords = u'^(\\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарій|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Передумова|Основа|Концепт|Контекст|Założenia|Wharrimean is|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenaro|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Konturo de la scenaro|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Fono|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l\'escenari|Escenario|Escenari|Dis is what went down|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y\'all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$'
|
1863
|
+
examples_keywords = u'^(\\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Приклади|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$'
|
1864
|
+
step_keywords = u'^(\\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y\'all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y\'all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )'
|
1760
1865
|
|
1761
1866
|
tokens = {
|
1762
1867
|
'comments': [
|
1763
|
-
(r'
|
1868
|
+
(r'^\s*#.*$', Comment),
|
1764
1869
|
],
|
1765
1870
|
'feature_elements' : [
|
1766
1871
|
(step_keywords, Keyword, "step_content_stack"),
|
@@ -1780,14 +1885,18 @@ class GherkinLexer(RegexLexer):
|
|
1780
1885
|
'examples_table_header': [
|
1781
1886
|
(r"\s+\|\s*$", Keyword, "#pop:2"),
|
1782
1887
|
include('comments'),
|
1888
|
+
(r"\\\|", Name.Variable),
|
1783
1889
|
(r"\s*\|", Keyword),
|
1784
1890
|
(r"[^\|]", Name.Variable),
|
1785
1891
|
],
|
1786
1892
|
'scenario_sections_on_stack': [
|
1787
|
-
(feature_element_keywords,
|
1893
|
+
(feature_element_keywords,
|
1894
|
+
bygroups(Name.Function, Keyword, Keyword, Name.Function),
|
1895
|
+
"feature_elements_on_stack"),
|
1788
1896
|
],
|
1789
1897
|
'narrative': [
|
1790
1898
|
include('scenario_sections_on_stack'),
|
1899
|
+
include('comments'),
|
1791
1900
|
(r"(\s|.)", Name.Function),
|
1792
1901
|
],
|
1793
1902
|
'table_vars': [
|
@@ -1822,6 +1931,7 @@ class GherkinLexer(RegexLexer):
|
|
1822
1931
|
'table_content': [
|
1823
1932
|
(r"\s+\|\s*$", Keyword, "#pop"),
|
1824
1933
|
include('comments'),
|
1934
|
+
(r"\\\|", String),
|
1825
1935
|
(r"\s*\|", Keyword),
|
1826
1936
|
include('string'),
|
1827
1937
|
],
|
@@ -1856,7 +1966,7 @@ class AsymptoteLexer(RegexLexer):
|
|
1856
1966
|
"""
|
1857
1967
|
For `Asymptote <http://asymptote.sf.net/>`_ source code.
|
1858
1968
|
|
1859
|
-
|
1969
|
+
.. versionadded:: 1.2
|
1860
1970
|
"""
|
1861
1971
|
name = 'Asymptote'
|
1862
1972
|
aliases = ['asy', 'asymptote']
|
@@ -1912,23 +2022,23 @@ class AsymptoteLexer(RegexLexer):
|
|
1912
2022
|
r'bounds|coord|frame|guide|horner|int|linefit|marginT|pair|pen|'
|
1913
2023
|
r'picture|position|real|revolution|slice|splitface|ticksgridT|'
|
1914
2024
|
r'tickvalues|tree|triple|vertex|void)\b', Keyword.Type),
|
1915
|
-
('[a-zA-Z_]
|
1916
|
-
('[a-zA-Z_]
|
2025
|
+
('[a-zA-Z_]\w*:(?!:)', Name.Label),
|
2026
|
+
('[a-zA-Z_]\w*', Name),
|
1917
2027
|
],
|
1918
2028
|
'root': [
|
1919
2029
|
include('whitespace'),
|
1920
2030
|
# functions
|
1921
|
-
(r'((?:[
|
1922
|
-
r'([a-zA-Z_]
|
1923
|
-
r'(\s*\([^;]*?\))'
|
2031
|
+
(r'((?:[\w*\s])+?(?:\s|\*))' # return arguments
|
2032
|
+
r'([a-zA-Z_]\w*)' # method name
|
2033
|
+
r'(\s*\([^;]*?\))' # signature
|
1924
2034
|
r'(' + _ws + r')({)',
|
1925
2035
|
bygroups(using(this), Name.Function, using(this), using(this),
|
1926
2036
|
Punctuation),
|
1927
2037
|
'function'),
|
1928
2038
|
# function declarations
|
1929
|
-
(r'((?:[
|
1930
|
-
r'([a-zA-Z_]
|
1931
|
-
r'(\s*\([^;]*?\))'
|
2039
|
+
(r'((?:[\w*\s])+?(?:\s|\*))' # return arguments
|
2040
|
+
r'([a-zA-Z_]\w*)' # method name
|
2041
|
+
r'(\s*\([^;]*?\))' # signature
|
1932
2042
|
r'(' + _ws + r')(;)',
|
1933
2043
|
bygroups(using(this), Name.Function, using(this), using(this),
|
1934
2044
|
Punctuation)),
|
@@ -1977,7 +2087,7 @@ class PostScriptLexer(RegexLexer):
|
|
1977
2087
|
<http://partners.adobe.com/public/developer/en/ps/PLRM.pdf>
|
1978
2088
|
is the authority for this.
|
1979
2089
|
|
1980
|
-
|
2090
|
+
.. versionadded:: 1.4
|
1981
2091
|
"""
|
1982
2092
|
name = 'PostScript'
|
1983
2093
|
aliases = ['postscript', 'postscr']
|
@@ -2065,7 +2175,7 @@ class AutohotkeyLexer(RegexLexer):
|
|
2065
2175
|
"""
|
2066
2176
|
For `autohotkey <http://www.autohotkey.com/>`_ source code.
|
2067
2177
|
|
2068
|
-
|
2178
|
+
.. versionadded:: 1.4
|
2069
2179
|
"""
|
2070
2180
|
name = 'autohotkey'
|
2071
2181
|
aliases = ['ahk', 'autohotkey']
|
@@ -2081,7 +2191,7 @@ class AutohotkeyLexer(RegexLexer):
|
|
2081
2191
|
(r'^;.*?$', Comment.Singleline),
|
2082
2192
|
(r'[]{}(),;[]', Punctuation),
|
2083
2193
|
(r'(in|is|and|or|not)\b', Operator.Word),
|
2084
|
-
(r'\%[a-zA-Z_#@$][
|
2194
|
+
(r'\%[a-zA-Z_#@$][\w#@$]*\%', Name.Variable),
|
2085
2195
|
(r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator),
|
2086
2196
|
include('commands'),
|
2087
2197
|
include('labels'),
|
@@ -2089,7 +2199,7 @@ class AutohotkeyLexer(RegexLexer):
|
|
2089
2199
|
include('builtInVariables'),
|
2090
2200
|
(r'"', String, combined('stringescape', 'dqs')),
|
2091
2201
|
include('numbers'),
|
2092
|
-
(r'[a-zA-Z_#@$][
|
2202
|
+
(r'[a-zA-Z_#@$][\w#@$]*', Name),
|
2093
2203
|
(r'\\|\'', Text),
|
2094
2204
|
(r'\`([\,\%\`abfnrtv\-\+;])', String.Escape),
|
2095
2205
|
include('garbage'),
|
@@ -2245,7 +2355,7 @@ class MaqlLexer(RegexLexer):
|
|
2245
2355
|
<https://secure.gooddata.com/docs/html/advanced.metric.tutorial.html>`_
|
2246
2356
|
scripts.
|
2247
2357
|
|
2248
|
-
|
2358
|
+
.. versionadded:: 1.4
|
2249
2359
|
"""
|
2250
2360
|
|
2251
2361
|
name = 'MAQL'
|
@@ -2283,7 +2393,7 @@ class MaqlLexer(RegexLexer):
|
|
2283
2393
|
r'SYNCHRONIZE|TYPE|DEFAULT|ORDER|ASC|DESC|HYPERLINK|'
|
2284
2394
|
r'INCLUDE|TEMPLATE|MODIFY)\b', Keyword),
|
2285
2395
|
# FUNCNAME
|
2286
|
-
(r'[a-
|
2396
|
+
(r'[a-z]\w*\b', Name.Function),
|
2287
2397
|
# Comments
|
2288
2398
|
(r'#.*', Comment.Single),
|
2289
2399
|
# Punctuation
|
@@ -2304,7 +2414,7 @@ class GoodDataCLLexer(RegexLexer):
|
|
2304
2414
|
Lexer for `GoodData-CL <http://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/com/gooddata/processor/COMMANDS.txt>`_
|
2305
2415
|
script files.
|
2306
2416
|
|
2307
|
-
|
2417
|
+
.. versionadded:: 1.4
|
2308
2418
|
"""
|
2309
2419
|
|
2310
2420
|
name = 'GoodData-CL'
|
@@ -2318,7 +2428,7 @@ class GoodDataCLLexer(RegexLexer):
|
|
2318
2428
|
# Comments
|
2319
2429
|
(r'#.*', Comment.Single),
|
2320
2430
|
# Function call
|
2321
|
-
(r'[a-
|
2431
|
+
(r'[a-z]\w*', Name.Function),
|
2322
2432
|
# Argument list
|
2323
2433
|
(r'\(', Token.Punctuation, 'args-list'),
|
2324
2434
|
# Punctuation
|
@@ -2329,7 +2439,7 @@ class GoodDataCLLexer(RegexLexer):
|
|
2329
2439
|
'args-list': [
|
2330
2440
|
(r'\)', Token.Punctuation, '#pop'),
|
2331
2441
|
(r',', Token.Punctuation),
|
2332
|
-
(r'[a-
|
2442
|
+
(r'[a-z]\w*', Name.Variable),
|
2333
2443
|
(r'=', Operator),
|
2334
2444
|
(r'"', Literal.String, 'string-literal'),
|
2335
2445
|
(r'[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]{1,3})?', Literal.Number),
|
@@ -2349,7 +2459,7 @@ class ProtoBufLexer(RegexLexer):
|
|
2349
2459
|
Lexer for `Protocol Buffer <http://code.google.com/p/protobuf/>`_
|
2350
2460
|
definition files.
|
2351
2461
|
|
2352
|
-
|
2462
|
+
.. versionadded:: 1.4
|
2353
2463
|
"""
|
2354
2464
|
|
2355
2465
|
name = 'Protocol Buffer'
|
@@ -2381,18 +2491,18 @@ class ProtoBufLexer(RegexLexer):
|
|
2381
2491
|
(r'0[0-7]+[LlUu]*', Number.Oct),
|
2382
2492
|
(r'\d+[LlUu]*', Number.Integer),
|
2383
2493
|
(r'[+-=]', Operator),
|
2384
|
-
(r'([a-zA-Z_][
|
2494
|
+
(r'([a-zA-Z_][\w\.]*)([ \t]*)(=)',
|
2385
2495
|
bygroups(Name.Attribute, Text, Operator)),
|
2386
|
-
('[a-zA-Z_][
|
2496
|
+
('[a-zA-Z_][\w\.]*', Name),
|
2387
2497
|
],
|
2388
2498
|
'package': [
|
2389
|
-
(r'[a-zA-Z_]
|
2499
|
+
(r'[a-zA-Z_]\w*', Name.Namespace, '#pop')
|
2390
2500
|
],
|
2391
2501
|
'message': [
|
2392
|
-
(r'[a-zA-Z_]
|
2502
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop')
|
2393
2503
|
],
|
2394
2504
|
'type': [
|
2395
|
-
(r'[a-zA-Z_]
|
2505
|
+
(r'[a-zA-Z_]\w*', Name, '#pop')
|
2396
2506
|
],
|
2397
2507
|
}
|
2398
2508
|
|
@@ -2401,7 +2511,7 @@ class HybrisLexer(RegexLexer):
|
|
2401
2511
|
"""
|
2402
2512
|
For `Hybris <http://www.hybris-lang.org>`_ source code.
|
2403
2513
|
|
2404
|
-
|
2514
|
+
.. versionadded:: 1.4
|
2405
2515
|
"""
|
2406
2516
|
|
2407
2517
|
name = 'Hybris'
|
@@ -2415,12 +2525,12 @@ class HybrisLexer(RegexLexer):
|
|
2415
2525
|
'root': [
|
2416
2526
|
# method names
|
2417
2527
|
(r'^(\s*(?:function|method|operator\s+)+?)'
|
2418
|
-
r'([a-zA-Z_]
|
2528
|
+
r'([a-zA-Z_]\w*)'
|
2419
2529
|
r'(\s*)(\()', bygroups(Keyword, Name.Function, Text, Operator)),
|
2420
2530
|
(r'[^\S\n]+', Text),
|
2421
2531
|
(r'//.*?\n', Comment.Single),
|
2422
2532
|
(r'/\*.*?\*/', Comment.Multiline),
|
2423
|
-
(r'@[a-zA-Z_][
|
2533
|
+
(r'@[a-zA-Z_][\w\.]*', Name.Decorator),
|
2424
2534
|
(r'(break|case|catch|next|default|do|else|finally|for|foreach|of|'
|
2425
2535
|
r'unless|if|new|return|switch|me|throw|try|while)\b', Keyword),
|
2426
2536
|
(r'(extends|private|protected|public|static|throws|function|method|'
|
@@ -2456,10 +2566,10 @@ class HybrisLexer(RegexLexer):
|
|
2456
2566
|
r'Exception)\b', Keyword.Type),
|
2457
2567
|
(r'"(\\\\|\\"|[^"])*"', String),
|
2458
2568
|
(r"'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'", String.Char),
|
2459
|
-
(r'(\.)([a-zA-Z_]
|
2569
|
+
(r'(\.)([a-zA-Z_]\w*)',
|
2460
2570
|
bygroups(Operator, Name.Attribute)),
|
2461
|
-
(r'[a-zA-Z_]
|
2462
|
-
(r'[a-zA-Z_\$]
|
2571
|
+
(r'[a-zA-Z_]\w*:', Name.Label),
|
2572
|
+
(r'[a-zA-Z_\$]\w*', Name),
|
2463
2573
|
(r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?\-@]+', Operator),
|
2464
2574
|
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
2465
2575
|
(r'0x[0-9a-f]+', Number.Hex),
|
@@ -2467,10 +2577,10 @@ class HybrisLexer(RegexLexer):
|
|
2467
2577
|
(r'\n', Text),
|
2468
2578
|
],
|
2469
2579
|
'class': [
|
2470
|
-
(r'[a-zA-Z_]
|
2580
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop')
|
2471
2581
|
],
|
2472
2582
|
'import': [
|
2473
|
-
(r'[
|
2583
|
+
(r'[\w.]+\*?', Name.Namespace, '#pop')
|
2474
2584
|
],
|
2475
2585
|
}
|
2476
2586
|
|
@@ -2479,7 +2589,7 @@ class AwkLexer(RegexLexer):
|
|
2479
2589
|
"""
|
2480
2590
|
For Awk scripts.
|
2481
2591
|
|
2482
|
-
|
2592
|
+
.. versionadded:: 1.5
|
2483
2593
|
"""
|
2484
2594
|
|
2485
2595
|
name = 'Awk'
|
@@ -2497,7 +2607,7 @@ class AwkLexer(RegexLexer):
|
|
2497
2607
|
(r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
|
2498
2608
|
r'\B', String.Regex, '#pop'),
|
2499
2609
|
(r'(?=/)', Text, ('#pop', 'badregex')),
|
2500
|
-
(
|
2610
|
+
default('#pop')
|
2501
2611
|
],
|
2502
2612
|
'badregex': [
|
2503
2613
|
(r'\n', Text, '#pop')
|
@@ -2505,11 +2615,11 @@ class AwkLexer(RegexLexer):
|
|
2505
2615
|
'root': [
|
2506
2616
|
(r'^(?=\s|/)', Text, 'slashstartsregex'),
|
2507
2617
|
include('commentsandwhitespace'),
|
2508
|
-
(r'\+\+|--|\|\||&&|in|\$|!?~|'
|
2618
|
+
(r'\+\+|--|\|\||&&|in\b|\$|!?~|'
|
2509
2619
|
r'(\*\*|[-<>+*%\^/!=])=?', Operator, 'slashstartsregex'),
|
2510
2620
|
(r'[{(\[;,]', Punctuation, 'slashstartsregex'),
|
2511
2621
|
(r'[})\].]', Punctuation),
|
2512
|
-
(r'(break|continue|do|while|exit|for|if|'
|
2622
|
+
(r'(break|continue|do|while|exit|for|if|else|'
|
2513
2623
|
r'return)\b', Keyword, 'slashstartsregex'),
|
2514
2624
|
(r'function\b', Keyword.Declaration, 'slashstartsregex'),
|
2515
2625
|
(r'(atan2|cos|exp|int|log|rand|sin|sqrt|srand|gensub|gsub|index|'
|
@@ -2519,7 +2629,7 @@ class AwkLexer(RegexLexer):
|
|
2519
2629
|
(r'(ARGC|ARGIND|ARGV|CONVFMT|ENVIRON|ERRNO|FIELDWIDTHS|FILENAME|FNR|FS|'
|
2520
2630
|
r'IGNORECASE|NF|NR|OFMT|OFS|ORFS|RLENGTH|RS|RSTART|RT|'
|
2521
2631
|
r'SUBSEP)\b', Name.Builtin),
|
2522
|
-
(r'[$a-zA-Z_]
|
2632
|
+
(r'[$a-zA-Z_]\w*', Name.Other),
|
2523
2633
|
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
2524
2634
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
2525
2635
|
(r'[0-9]+', Number.Integer),
|
@@ -2533,7 +2643,7 @@ class Cfengine3Lexer(RegexLexer):
|
|
2533
2643
|
"""
|
2534
2644
|
Lexer for `CFEngine3 <http://cfengine.org>`_ policy files.
|
2535
2645
|
|
2536
|
-
|
2646
|
+
.. versionadded:: 1.5
|
2537
2647
|
"""
|
2538
2648
|
|
2539
2649
|
name = 'CFEngine3'
|
@@ -2597,7 +2707,7 @@ class SnobolLexer(RegexLexer):
|
|
2597
2707
|
Recognizes the common ASCII equivalents of the original SNOBOL4 operators.
|
2598
2708
|
Does not require spaces around binary operators.
|
2599
2709
|
|
2600
|
-
|
2710
|
+
.. versionadded:: 1.5
|
2601
2711
|
"""
|
2602
2712
|
|
2603
2713
|
name = "Snobol"
|
@@ -2661,7 +2771,7 @@ class UrbiscriptLexer(ExtendedRegexLexer):
|
|
2661
2771
|
"""
|
2662
2772
|
For UrbiScript source code.
|
2663
2773
|
|
2664
|
-
|
2774
|
+
.. versionadded:: 1.5
|
2665
2775
|
"""
|
2666
2776
|
|
2667
2777
|
name = 'UrbiScript'
|
@@ -2736,7 +2846,7 @@ class UrbiscriptLexer(ExtendedRegexLexer):
|
|
2736
2846
|
Operator.Word),
|
2737
2847
|
(r'[{}\[\]()]+', Punctuation),
|
2738
2848
|
(r'(?:;|\||,|&|\?|!)+', Punctuation),
|
2739
|
-
(r'[$a-zA-Z_]
|
2849
|
+
(r'[$a-zA-Z_]\w*', Name.Other),
|
2740
2850
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
2741
2851
|
# Float, Integer, Angle and Duration
|
2742
2852
|
(r'(?:[0-9]+(?:(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?)?'
|
@@ -2768,7 +2878,7 @@ class OpenEdgeLexer(RegexLexer):
|
|
2768
2878
|
Lexer for `OpenEdge ABL (formerly Progress)
|
2769
2879
|
<http://web.progress.com/en/openedge/abl.html>`_ source code.
|
2770
2880
|
|
2771
|
-
|
2881
|
+
.. versionadded:: 1.5
|
2772
2882
|
"""
|
2773
2883
|
name = 'OpenEdge ABL'
|
2774
2884
|
aliases = ['openedge', 'abl', 'progress']
|
@@ -2820,7 +2930,7 @@ class BroLexer(RegexLexer):
|
|
2820
2930
|
"""
|
2821
2931
|
For `Bro <http://bro-ids.org/>`_ scripts.
|
2822
2932
|
|
2823
|
-
|
2933
|
+
.. versionadded:: 1.5
|
2824
2934
|
"""
|
2825
2935
|
name = 'Bro'
|
2826
2936
|
aliases = ['bro']
|
@@ -2898,7 +3008,7 @@ class CbmBasicV2Lexer(RegexLexer):
|
|
2898
3008
|
"""
|
2899
3009
|
For CBM BASIC V2 sources.
|
2900
3010
|
|
2901
|
-
|
3011
|
+
.. versionadded:: 1.6
|
2902
3012
|
"""
|
2903
3013
|
name = 'CBM BASIC V2'
|
2904
3014
|
aliases = ['cbmbas']
|
@@ -2936,13 +3046,13 @@ class MscgenLexer(RegexLexer):
|
|
2936
3046
|
"""
|
2937
3047
|
For `Mscgen <http://www.mcternan.me.uk/mscgen/>`_ files.
|
2938
3048
|
|
2939
|
-
|
3049
|
+
.. versionadded:: 1.6
|
2940
3050
|
"""
|
2941
3051
|
name = 'Mscgen'
|
2942
3052
|
aliases = ['mscgen', 'msc']
|
2943
3053
|
filenames = ['*.msc']
|
2944
3054
|
|
2945
|
-
_var = r'(
|
3055
|
+
_var = r'(\w+|"(?:\\"|[^"])*")'
|
2946
3056
|
|
2947
3057
|
tokens = {
|
2948
3058
|
'root': [
|
@@ -2997,7 +3107,7 @@ class KconfigLexer(RegexLexer):
|
|
2997
3107
|
"""
|
2998
3108
|
For Linux-style Kconfig files.
|
2999
3109
|
|
3000
|
-
|
3110
|
+
.. versionadded:: 1.6
|
3001
3111
|
"""
|
3002
3112
|
|
3003
3113
|
name = 'Kconfig'
|
@@ -3019,7 +3129,7 @@ class KconfigLexer(RegexLexer):
|
|
3019
3129
|
return [
|
3020
3130
|
(_rx_indent(level), String.Doc),
|
3021
3131
|
(r'\s*\n', Text),
|
3022
|
-
(
|
3132
|
+
default('#pop:2')
|
3023
3133
|
]
|
3024
3134
|
|
3025
3135
|
tokens = {
|
@@ -3072,7 +3182,7 @@ class VGLLexer(RegexLexer):
|
|
3072
3182
|
For `SampleManager VGL <http://www.thermoscientific.com/samplemanager>`_
|
3073
3183
|
source code.
|
3074
3184
|
|
3075
|
-
|
3185
|
+
.. versionadded:: 1.6
|
3076
3186
|
"""
|
3077
3187
|
name = 'VGL'
|
3078
3188
|
aliases = ['vgl']
|
@@ -3092,9 +3202,9 @@ class VGLLexer(RegexLexer):
|
|
3092
3202
|
(r'(true|false|null|empty|error|locked)', Keyword.Constant),
|
3093
3203
|
(r'[~\^\*\#!%&\[\]\(\)<>\|+=:;,./?-]', Operator),
|
3094
3204
|
(r'"[^"]*"', String),
|
3095
|
-
(r'(\.)([a-z_\$][
|
3205
|
+
(r'(\.)([a-z_\$][\w\$]*)', bygroups(Operator, Name.Attribute)),
|
3096
3206
|
(r'[0-9][0-9]*(\.[0-9]+(e[+\-]?[0-9]+)?)?', Number),
|
3097
|
-
(r'[a-z_\$][
|
3207
|
+
(r'[a-z_\$][\w\$]*', Name),
|
3098
3208
|
(r'[\r\n]+', Text),
|
3099
3209
|
(r'\s+', Text)
|
3100
3210
|
]
|
@@ -3105,7 +3215,7 @@ class SourcePawnLexer(RegexLexer):
|
|
3105
3215
|
"""
|
3106
3216
|
For SourcePawn source code with preprocessor directives.
|
3107
3217
|
|
3108
|
-
|
3218
|
+
.. versionadded:: 1.6
|
3109
3219
|
"""
|
3110
3220
|
name = 'SourcePawn'
|
3111
3221
|
aliases = ['sp']
|
@@ -3144,7 +3254,7 @@ class SourcePawnLexer(RegexLexer):
|
|
3144
3254
|
r'public|return|sizeof|static|decl|struct|switch)\b', Keyword),
|
3145
3255
|
(r'(bool|Float)\b', Keyword.Type),
|
3146
3256
|
(r'(true|false)\b', Keyword.Constant),
|
3147
|
-
('[a-zA-Z_]
|
3257
|
+
('[a-zA-Z_]\w*', Name),
|
3148
3258
|
],
|
3149
3259
|
'string': [
|
3150
3260
|
(r'"', String, '#pop'),
|
@@ -3168,7 +3278,7 @@ class SourcePawnLexer(RegexLexer):
|
|
3168
3278
|
]
|
3169
3279
|
}
|
3170
3280
|
|
3171
|
-
SM_TYPES = ['Action', 'bool', 'Float', 'Plugin', 'String', 'any',
|
3281
|
+
SM_TYPES = set(['Action', 'bool', 'Float', 'Plugin', 'String', 'any',
|
3172
3282
|
'AdminFlag', 'OverrideType', 'OverrideRule', 'ImmunityType',
|
3173
3283
|
'GroupId', 'AdminId', 'AdmAccessMode', 'AdminCachePart',
|
3174
3284
|
'CookieAccess', 'CookieMenu', 'CookieMenuAction', 'NetFlow',
|
@@ -3186,16 +3296,16 @@ class SourcePawnLexer(RegexLexer):
|
|
3186
3296
|
'SortFunc2D', 'APLRes', 'FeatureType', 'FeatureStatus',
|
3187
3297
|
'SMCResult', 'SMCError', 'TFClassType', 'TFTeam', 'TFCond',
|
3188
3298
|
'TFResourceType', 'Timer', 'TopMenuAction', 'TopMenuObjectType',
|
3189
|
-
'TopMenuPosition', 'TopMenuObject', 'UserMsg']
|
3299
|
+
'TopMenuPosition', 'TopMenuObject', 'UserMsg'])
|
3190
3300
|
|
3191
3301
|
def __init__(self, **options):
|
3192
3302
|
self.smhighlighting = get_bool_opt(options,
|
3193
3303
|
'sourcemod', True)
|
3194
3304
|
|
3195
|
-
self._functions =
|
3305
|
+
self._functions = set()
|
3196
3306
|
if self.smhighlighting:
|
3197
3307
|
from pygments.lexers._sourcemodbuiltins import FUNCTIONS
|
3198
|
-
self._functions.
|
3308
|
+
self._functions.update(FUNCTIONS)
|
3199
3309
|
RegexLexer.__init__(self, **options)
|
3200
3310
|
|
3201
3311
|
def get_tokens_unprocessed(self, text):
|
@@ -3214,7 +3324,7 @@ class PuppetLexer(RegexLexer):
|
|
3214
3324
|
"""
|
3215
3325
|
For `Puppet <http://puppetlabs.com/>`__ configuration DSL.
|
3216
3326
|
|
3217
|
-
|
3327
|
+
.. versionadded:: 1.6
|
3218
3328
|
"""
|
3219
3329
|
name = 'Puppet'
|
3220
3330
|
aliases = ['puppet']
|
@@ -3244,7 +3354,7 @@ class PuppetLexer(RegexLexer):
|
|
3244
3354
|
],
|
3245
3355
|
|
3246
3356
|
'names': [
|
3247
|
-
('[a-zA-Z_]
|
3357
|
+
('[a-zA-Z_]\w*', Name.Attribute),
|
3248
3358
|
(r'(\$\S+)(\[)(\S+)(\])', bygroups(Name.Variable, Punctuation,
|
3249
3359
|
String, Punctuation)),
|
3250
3360
|
(r'\$\S+', Name.Variable),
|
@@ -3285,7 +3395,7 @@ class PuppetLexer(RegexLexer):
|
|
3285
3395
|
|
3286
3396
|
'strings': [
|
3287
3397
|
(r'"([^"])*"', String),
|
3288
|
-
(r'
|
3398
|
+
(r"'(\\'|[^'])*'", String),
|
3289
3399
|
],
|
3290
3400
|
|
3291
3401
|
}
|
@@ -3295,7 +3405,7 @@ class NSISLexer(RegexLexer):
|
|
3295
3405
|
"""
|
3296
3406
|
For `NSIS <http://nsis.sourceforge.net/>`_ scripts.
|
3297
3407
|
|
3298
|
-
|
3408
|
+
.. versionadded:: 1.6
|
3299
3409
|
"""
|
3300
3410
|
name = 'NSIS'
|
3301
3411
|
aliases = ['nsis', 'nsi', 'nsh']
|
@@ -3417,9 +3527,9 @@ class NSISLexer(RegexLexer):
|
|
3417
3527
|
|
3418
3528
|
class RPMSpecLexer(RegexLexer):
|
3419
3529
|
"""
|
3420
|
-
For RPM
|
3530
|
+
For RPM ``.spec`` files.
|
3421
3531
|
|
3422
|
-
|
3532
|
+
.. versionadded:: 1.6
|
3423
3533
|
"""
|
3424
3534
|
|
3425
3535
|
name = 'RPMSpec'
|
@@ -3481,9 +3591,9 @@ class RPMSpecLexer(RegexLexer):
|
|
3481
3591
|
'interpol': [
|
3482
3592
|
(r'%\{?__[a-z_]+\}?', Name.Function),
|
3483
3593
|
(r'%\{?_([a-z_]+dir|[a-z_]+path|prefix)\}?', Keyword.Pseudo),
|
3484
|
-
(r'%\{
|
3594
|
+
(r'%\{\?\w+\}', Name.Variable),
|
3485
3595
|
(r'\$\{?RPM_[A-Z0-9_]+\}?', Name.Variable.Global),
|
3486
|
-
(r'%\{[a-zA-Z]
|
3596
|
+
(r'%\{[a-zA-Z]\w+\}', Keyword.Constant),
|
3487
3597
|
]
|
3488
3598
|
}
|
3489
3599
|
|
@@ -3495,10 +3605,10 @@ class AutoItLexer(RegexLexer):
|
|
3495
3605
|
AutoIt is a freeware BASIC-like scripting language
|
3496
3606
|
designed for automating the Windows GUI and general scripting
|
3497
3607
|
|
3498
|
-
|
3608
|
+
.. versionadded:: 1.6
|
3499
3609
|
"""
|
3500
3610
|
name = 'AutoIt'
|
3501
|
-
aliases = ['autoit'
|
3611
|
+
aliases = ['autoit']
|
3502
3612
|
filenames = ['*.au3']
|
3503
3613
|
mimetypes = ['text/x-autoit']
|
3504
3614
|
|
@@ -3614,7 +3724,7 @@ class AutoItLexer(RegexLexer):
|
|
3614
3724
|
(r'(#comments-start|#cs).*?(#comments-end|#ce)', Comment.Multiline),
|
3615
3725
|
(r'[\[\]{}(),;]', Punctuation),
|
3616
3726
|
(r'(and|or|not)\b', Operator.Word),
|
3617
|
-
(r'[\$|@][a-zA-Z_]
|
3727
|
+
(r'[\$|@][a-zA-Z_]\w*', Name.Variable),
|
3618
3728
|
(r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator),
|
3619
3729
|
include('commands'),
|
3620
3730
|
include('labels'),
|
@@ -3622,7 +3732,7 @@ class AutoItLexer(RegexLexer):
|
|
3622
3732
|
include('builtInMarcros'),
|
3623
3733
|
(r'"', String, combined('stringescape', 'dqs')),
|
3624
3734
|
include('numbers'),
|
3625
|
-
(r'[a-zA-Z_#@$][
|
3735
|
+
(r'[a-zA-Z_#@$][\w#@$]*', Name),
|
3626
3736
|
(r'\\|\'', Text),
|
3627
3737
|
(r'\`([\,\%\`abfnrtv\-\+;])', String.Escape),
|
3628
3738
|
(r'_\n', Text), # Line continuation
|
@@ -3675,10 +3785,10 @@ class RexxLexer(RegexLexer):
|
|
3675
3785
|
systems. It is popular for I/O- and data based tasks and can act as glue
|
3676
3786
|
language to bind different applications together.
|
3677
3787
|
|
3678
|
-
|
3788
|
+
.. versionadded:: 2.0
|
3679
3789
|
"""
|
3680
3790
|
name = 'Rexx'
|
3681
|
-
aliases = ['rexx', '
|
3791
|
+
aliases = ['rexx', 'arexx']
|
3682
3792
|
filenames = ['*.rexx', '*.rex', '*.rx', '*.arexx']
|
3683
3793
|
mimetypes = ['text/x-rexx']
|
3684
3794
|
flags = re.IGNORECASE
|
@@ -3690,15 +3800,15 @@ class RexxLexer(RegexLexer):
|
|
3690
3800
|
(r'"', String, 'string_double'),
|
3691
3801
|
(r"'", String, 'string_single'),
|
3692
3802
|
(r'[0-9]+(\.[0-9]+)?(e[+-]?[0-9])?', Number),
|
3693
|
-
(r'([a-z_]
|
3803
|
+
(r'([a-z_]\w*)(\s*)(:)(\s*)(procedure)\b',
|
3694
3804
|
bygroups(Name.Function, Whitespace, Operator, Whitespace,
|
3695
3805
|
Keyword.Declaration)),
|
3696
|
-
(r'([a-z_]
|
3806
|
+
(r'([a-z_]\w*)(\s*)(:)',
|
3697
3807
|
bygroups(Name.Label, Whitespace, Operator)),
|
3698
3808
|
include('function'),
|
3699
3809
|
include('keyword'),
|
3700
3810
|
include('operator'),
|
3701
|
-
(r'[a-z_]
|
3811
|
+
(r'[a-z_]\w*', Text),
|
3702
3812
|
],
|
3703
3813
|
'function': [
|
3704
3814
|
(r'(abbrev|abs|address|arg|b2x|bitand|bitor|bitxor|c2d|c2x|'
|
@@ -3718,9 +3828,9 @@ class RexxLexer(RegexLexer):
|
|
3718
3828
|
r'while)\b', Keyword.Reserved),
|
3719
3829
|
],
|
3720
3830
|
'operator': [
|
3721
|
-
(
|
3722
|
-
|
3723
|
-
|
3831
|
+
(r'(-|//|/|\(|\)|\*\*|\*|\\<<|\\<|\\==|\\=|\\>>|\\>|\\|\|\||\||'
|
3832
|
+
r'&&|&|%|\+|<<=|<<|<=|<>|<|==|=|><|>=|>>=|>>|>|¬<<|¬<|¬==|¬=|'
|
3833
|
+
r'¬>>|¬>|¬|\.|,)', Operator),
|
3724
3834
|
],
|
3725
3835
|
'string_double': [
|
3726
3836
|
(r'[^"\n]+', String),
|
@@ -3746,7 +3856,7 @@ class RexxLexer(RegexLexer):
|
|
3746
3856
|
_ADDRESS_PATTERN = _c(r'^\s*address\s+')
|
3747
3857
|
_DO_WHILE_PATTERN = _c(r'^\s*do\s+while\b')
|
3748
3858
|
_IF_THEN_DO_PATTERN = _c(r'^\s*if\b.+\bthen\s+do\s*$')
|
3749
|
-
_PROCEDURE_PATTERN = _c(r'^\s*([a-z_]
|
3859
|
+
_PROCEDURE_PATTERN = _c(r'^\s*([a-z_]\w*)(\s*)(:)(\s*)(procedure)\b')
|
3750
3860
|
_ELSE_DO_PATTERN = _c(r'\belse\s+do\s*$')
|
3751
3861
|
_PARSE_ARG_PATTERN = _c(r'^\s*parse\s+(upper\s+)?(arg|value)\b')
|
3752
3862
|
PATTERNS_AND_WEIGHTS = (
|
@@ -3776,3 +3886,607 @@ class RexxLexer(RegexLexer):
|
|
3776
3886
|
for (pattern, weight) in RexxLexer.PATTERNS_AND_WEIGHTS
|
3777
3887
|
if pattern.search(lowerText)) + 0.01
|
3778
3888
|
return min(result, 1.0)
|
3889
|
+
|
3890
|
+
|
3891
|
+
class APLLexer(RegexLexer):
|
3892
|
+
"""
|
3893
|
+
A simple APL lexer.
|
3894
|
+
|
3895
|
+
.. versionadded:: 2.0
|
3896
|
+
"""
|
3897
|
+
name = 'APL'
|
3898
|
+
aliases = ['apl']
|
3899
|
+
filenames = ['*.apl']
|
3900
|
+
|
3901
|
+
tokens = {
|
3902
|
+
'root': [
|
3903
|
+
# Whitespace
|
3904
|
+
# ==========
|
3905
|
+
(r'\s+', Text),
|
3906
|
+
#
|
3907
|
+
# Comment
|
3908
|
+
# =======
|
3909
|
+
# '⍝' is traditional; '#' is supported by GNU APL and NGN (but not Dyalog)
|
3910
|
+
(u'[⍝#].*$', Comment.Single),
|
3911
|
+
#
|
3912
|
+
# Strings
|
3913
|
+
# =======
|
3914
|
+
(r'\'((\'\')|[^\'])*\'', String.Single),
|
3915
|
+
(r'"(("")|[^"])*"', String.Double), # supported by NGN APL
|
3916
|
+
#
|
3917
|
+
# Punctuation
|
3918
|
+
# ===========
|
3919
|
+
# This token type is used for diamond and parenthesis
|
3920
|
+
# but not for bracket and ; (see below)
|
3921
|
+
(u'[⋄◇()]', Punctuation),
|
3922
|
+
#
|
3923
|
+
# Array indexing
|
3924
|
+
# ==============
|
3925
|
+
# Since this token type is very important in APL, it is not included in
|
3926
|
+
# the punctuation token type but rather in the following one
|
3927
|
+
(r'[\[\];]', String.Regex),
|
3928
|
+
#
|
3929
|
+
# Distinguished names
|
3930
|
+
# ===================
|
3931
|
+
# following IBM APL2 standard
|
3932
|
+
(u'⎕[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*', Name.Function),
|
3933
|
+
#
|
3934
|
+
# Labels
|
3935
|
+
# ======
|
3936
|
+
# following IBM APL2 standard
|
3937
|
+
# (u'[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*:', Name.Label),
|
3938
|
+
#
|
3939
|
+
# Variables
|
3940
|
+
# =========
|
3941
|
+
# following IBM APL2 standard
|
3942
|
+
(u'[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*', Name.Variable),
|
3943
|
+
#
|
3944
|
+
# Numbers
|
3945
|
+
# =======
|
3946
|
+
(u'¯?(0[Xx][0-9A-Fa-f]+|[0-9]*\.?[0-9]+([Ee][+¯]?[0-9]+)?|¯|∞)'
|
3947
|
+
u'([Jj]¯?(0[Xx][0-9A-Fa-f]+|[0-9]*\.?[0-9]+([Ee][+¯]?[0-9]+)?|¯|∞))?',
|
3948
|
+
Number),
|
3949
|
+
#
|
3950
|
+
# Operators
|
3951
|
+
# ==========
|
3952
|
+
(u'[\.\\\/⌿⍀¨⍣⍨⍠⍤∘]', Name.Attribute), # closest token type
|
3953
|
+
(u'[+\-×÷⌈⌊∣|⍳?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⌸⍯↗]',
|
3954
|
+
Operator),
|
3955
|
+
#
|
3956
|
+
# Constant
|
3957
|
+
# ========
|
3958
|
+
(u'⍬', Name.Constant),
|
3959
|
+
#
|
3960
|
+
# Quad symbol
|
3961
|
+
# ===========
|
3962
|
+
(u'[⎕⍞]', Name.Variable.Global),
|
3963
|
+
#
|
3964
|
+
# Arrows left/right
|
3965
|
+
# =================
|
3966
|
+
(u'[←→]', Keyword.Declaration),
|
3967
|
+
#
|
3968
|
+
# D-Fn
|
3969
|
+
# ====
|
3970
|
+
(u'[⍺⍵⍶⍹∇:]', Name.Builtin.Pseudo),
|
3971
|
+
(r'[{}]', Keyword.Type),
|
3972
|
+
],
|
3973
|
+
}
|
3974
|
+
|
3975
|
+
class AmbientTalkLexer(RegexLexer):
|
3976
|
+
"""
|
3977
|
+
Lexer for `AmbientTalk <https://code.google.com/p/ambienttalk>`_ source code.
|
3978
|
+
|
3979
|
+
.. versionadded:: 2.0
|
3980
|
+
"""
|
3981
|
+
name = 'AmbientTalk'
|
3982
|
+
filenames = ['*.at']
|
3983
|
+
aliases = ['at', 'ambienttalk', 'ambienttalk/2']
|
3984
|
+
mimetypes = ['text/x-ambienttalk']
|
3985
|
+
|
3986
|
+
flags = re.MULTILINE | re.DOTALL
|
3987
|
+
|
3988
|
+
builtin = ['if:', 'then:', 'else:', 'when:', 'whenever:', 'discovered:',
|
3989
|
+
'disconnected:', 'reconnected:', 'takenOffline:', 'becomes:',
|
3990
|
+
'export:', 'as:', 'object:', 'actor:', 'mirror:', 'taggedAs:',
|
3991
|
+
'mirroredBy:', 'is:']
|
3992
|
+
tokens = {
|
3993
|
+
'root' : [
|
3994
|
+
(r'\s+', Text),
|
3995
|
+
(r'//.*?\n', Comment.Single),
|
3996
|
+
(r'/\*.*?\*/', Comment.Multiline),
|
3997
|
+
(r'(def|deftype|import|alias|exclude)\b', Keyword),
|
3998
|
+
(r"(%s)" % "|".join(builtin), Name.Builtin),
|
3999
|
+
(r'(true|false|nil)\b', Keyword.Constant),
|
4000
|
+
(r'(~|lobby|jlobby|/)\.', Keyword.Constant, 'namespace'),
|
4001
|
+
(r'"(\\\\|\\"|[^"])*"', String),
|
4002
|
+
(r'\|', Punctuation, 'arglist'),
|
4003
|
+
(r'<:|[\^\*!%&<>+=,./?-]|:=', Operator),
|
4004
|
+
(r"`[a-zA-Z_]\w*", String.Symbol),
|
4005
|
+
(r"[a-zA-Z_]\w*:", Name.Function),
|
4006
|
+
(r"[\{\}()\[\];`]", Punctuation),
|
4007
|
+
(r'(self|super)\b', Name.Variable.Instance),
|
4008
|
+
(r"[a-zA-Z_]\w*", Name.Variable),
|
4009
|
+
(r"@[a-zA-Z_]\w*", Name.Class),
|
4010
|
+
(r"@\[", Name.Class, 'annotations'),
|
4011
|
+
include('numbers'),
|
4012
|
+
],
|
4013
|
+
'numbers' : [
|
4014
|
+
(r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
|
4015
|
+
(r'\d+', Number.Integer)
|
4016
|
+
],
|
4017
|
+
'namespace': [
|
4018
|
+
(r'[a-zA-Z_]\w*\.', Name.Namespace),
|
4019
|
+
(r'[a-zA-Z_]\w*:', Name.Function , '#pop'),
|
4020
|
+
(r'[a-zA-Z_]\w*(?!\.)', Name.Function , '#pop')
|
4021
|
+
],
|
4022
|
+
'annotations' : [
|
4023
|
+
(r"(.*?)\]", Name.Class, '#pop')
|
4024
|
+
],
|
4025
|
+
'arglist' : [
|
4026
|
+
(r'\|', Punctuation, '#pop'),
|
4027
|
+
(r'\s*(,)\s*', Punctuation),
|
4028
|
+
(r'[a-zA-Z_]\w*', Name.Variable),
|
4029
|
+
],
|
4030
|
+
}
|
4031
|
+
|
4032
|
+
|
4033
|
+
class PawnLexer(RegexLexer):
|
4034
|
+
"""
|
4035
|
+
For Pawn source code
|
4036
|
+
"""
|
4037
|
+
|
4038
|
+
name = 'Pawn'
|
4039
|
+
aliases = ['pawn']
|
4040
|
+
filenames = ['*.p', '*.pwn', '*.inc']
|
4041
|
+
mimetypes = ['text/x-pawn']
|
4042
|
+
|
4043
|
+
#: optional Comment or Whitespace
|
4044
|
+
_ws = r'(?:\s|//.*?\n|/[*][\w\W]*?[*]/)+'
|
4045
|
+
|
4046
|
+
tokens = {
|
4047
|
+
'root': [
|
4048
|
+
# preprocessor directives: without whitespace
|
4049
|
+
('^#if\s+0', Comment.Preproc, 'if0'),
|
4050
|
+
('^#', Comment.Preproc, 'macro'),
|
4051
|
+
# or with whitespace
|
4052
|
+
('^' + _ws + r'#if\s+0', Comment.Preproc, 'if0'),
|
4053
|
+
('^' + _ws + '#', Comment.Preproc, 'macro'),
|
4054
|
+
(r'\n', Text),
|
4055
|
+
(r'\s+', Text),
|
4056
|
+
(r'\\\n', Text), # line continuation
|
4057
|
+
(r'/(\\\n)?/(\n|(.|\n)*?[^\\]\n)', Comment.Single),
|
4058
|
+
(r'/(\\\n)?\*[\w\W]*?\*(\\\n)?/', Comment.Multiline),
|
4059
|
+
(r'[{}]', Punctuation),
|
4060
|
+
(r'L?"', String, 'string'),
|
4061
|
+
(r"L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'", String.Char),
|
4062
|
+
(r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*', Number.Float),
|
4063
|
+
(r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
|
4064
|
+
(r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
|
4065
|
+
(r'0[0-7]+[LlUu]*', Number.Oct),
|
4066
|
+
(r'\d+[LlUu]*', Number.Integer),
|
4067
|
+
(r'\*/', Error),
|
4068
|
+
(r'[~!%^&*+=|?:<>/-]', Operator),
|
4069
|
+
(r'[()\[\],.;]', Punctuation),
|
4070
|
+
(r'(switch|case|default|const|new|static|char|continue|break|'
|
4071
|
+
r'if|else|for|while|do|operator|enum|'
|
4072
|
+
r'public|return|sizeof|tagof|state|goto)\b', Keyword),
|
4073
|
+
(r'(bool|Float)\b', Keyword.Type),
|
4074
|
+
(r'(true|false)\b', Keyword.Constant),
|
4075
|
+
('[a-zA-Z_]\w*', Name),
|
4076
|
+
],
|
4077
|
+
'string': [
|
4078
|
+
(r'"', String, '#pop'),
|
4079
|
+
(r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
|
4080
|
+
(r'[^\\"\n]+', String), # all other characters
|
4081
|
+
(r'\\\n', String), # line continuation
|
4082
|
+
(r'\\', String), # stray backslash
|
4083
|
+
],
|
4084
|
+
'macro': [
|
4085
|
+
(r'[^/\n]+', Comment.Preproc),
|
4086
|
+
(r'/\*(.|\n)*?\*/', Comment.Multiline),
|
4087
|
+
(r'//.*?\n', Comment.Single, '#pop'),
|
4088
|
+
(r'/', Comment.Preproc),
|
4089
|
+
(r'(?<=\\)\n', Comment.Preproc),
|
4090
|
+
(r'\n', Comment.Preproc, '#pop'),
|
4091
|
+
],
|
4092
|
+
'if0': [
|
4093
|
+
(r'^\s*#if.*?(?<!\\)\n', Comment.Preproc, '#push'),
|
4094
|
+
(r'^\s*#endif.*?(?<!\\)\n', Comment.Preproc, '#pop'),
|
4095
|
+
(r'.*?\n', Comment),
|
4096
|
+
]
|
4097
|
+
}
|
4098
|
+
|
4099
|
+
|
4100
|
+
class VCTreeStatusLexer(RegexLexer):
|
4101
|
+
"""
|
4102
|
+
For colorizing output of version control status commans, like "hg
|
4103
|
+
status" or "svn status".
|
4104
|
+
|
4105
|
+
.. versionadded:: 2.0
|
4106
|
+
"""
|
4107
|
+
name = 'VCTreeStatus'
|
4108
|
+
aliases = ['vctreestatus']
|
4109
|
+
filenames = []
|
4110
|
+
mimetypes = []
|
4111
|
+
|
4112
|
+
tokens = {
|
4113
|
+
'root' : [
|
4114
|
+
(r'^A \+ C\s+', Generic.Error),
|
4115
|
+
(r'^A\s+\+?\s+', String),
|
4116
|
+
(r'^M\s+', Generic.Inserted),
|
4117
|
+
(r'^C\s+', Generic.Error),
|
4118
|
+
(r'^D\s+', Generic.Deleted),
|
4119
|
+
(r'^[\?!]\s+', Comment.Preproc),
|
4120
|
+
(r' >\s+.*\n', Comment.Preproc),
|
4121
|
+
(r'.*\n', Text)
|
4122
|
+
]
|
4123
|
+
}
|
4124
|
+
|
4125
|
+
|
4126
|
+
class RslLexer(RegexLexer):
|
4127
|
+
"""
|
4128
|
+
`RSL <http://en.wikipedia.org/wiki/RAISE>`_ is the formal specification
|
4129
|
+
language used in RAISE (Rigorous Approach to Industrial Software Engineering)
|
4130
|
+
method.
|
4131
|
+
|
4132
|
+
.. versionadded:: 2.0
|
4133
|
+
"""
|
4134
|
+
name = 'RSL'
|
4135
|
+
aliases = ['rsl']
|
4136
|
+
filenames = ['*.rsl']
|
4137
|
+
mimetypes = ['text/rsl']
|
4138
|
+
|
4139
|
+
flags = re.MULTILINE | re.DOTALL
|
4140
|
+
|
4141
|
+
tokens = {
|
4142
|
+
'root':[
|
4143
|
+
(r'\b(Bool|Char|Int|Nat|Real|Text|Unit|abs|all|always|any|as|'
|
4144
|
+
r'axiom|card|case|channel|chaos|class|devt_relation|dom|elems|'
|
4145
|
+
r'else|elif|end|exists|extend|false|for|hd|hide|if|in|is|inds|'
|
4146
|
+
r'initialise|int|inter|isin|len|let|local|ltl_assertion|object|'
|
4147
|
+
r'of|out|post|pre|read|real|rng|scheme|skip|stop|swap|then|'
|
4148
|
+
r'thoery|test_case|tl|transition_system|true|type|union|until|'
|
4149
|
+
r'use|value|variable|while|with|write|~isin|-inflist|-infset|'
|
4150
|
+
r'-list|-set)\b', Keyword),
|
4151
|
+
(r'(variable|value)\b', Keyword.Declaration),
|
4152
|
+
(r'--.*?\n', Comment),
|
4153
|
+
(r'<:.*?:>', Comment),
|
4154
|
+
(r'\{!.*?!\}', Comment),
|
4155
|
+
(r'/\*.*?\*/', Comment),
|
4156
|
+
(r'^[ \t]*([\w]+)[ \t]*:[^:]', Name.Function),
|
4157
|
+
(r'(^[ \t]*)([\w]+)([ \t]*\([\w\s,]*\)[ \t]*)(is|as)',
|
4158
|
+
bygroups(Text, Name.Function, Text, Keyword)),
|
4159
|
+
(r'\b[A-Z]\w*\b',Keyword.Type),
|
4160
|
+
(r'(true|false)\b', Keyword.Constant),
|
4161
|
+
(r'".*"',String),
|
4162
|
+
(r'\'.\'',String.Char),
|
4163
|
+
(r'(><|->|-m->|/\\|<=|<<=|<\.|\|\||\|\^\||-~->|-~m->|\\/|>=|>>|'
|
4164
|
+
r'\.>|\+\+|-\\|<->|=>|:-|~=|\*\*|<<|>>=|\+>|!!|\|=\||#)',
|
4165
|
+
Operator),
|
4166
|
+
(r'[0-9]+\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
4167
|
+
(r'0x[0-9a-f]+', Number.Hex),
|
4168
|
+
(r'[0-9]+', Number.Integer),
|
4169
|
+
(r'.', Text),
|
4170
|
+
],
|
4171
|
+
}
|
4172
|
+
|
4173
|
+
def analyse_text(text):
|
4174
|
+
"""
|
4175
|
+
Check for the most common text in the beginning of a RSL file.
|
4176
|
+
"""
|
4177
|
+
if re.search(r'scheme\s*.*?=\s*class\s*type', text, re.I) is not None:
|
4178
|
+
return 1.0
|
4179
|
+
else:
|
4180
|
+
return 0.01
|
4181
|
+
|
4182
|
+
|
4183
|
+
class PanLexer(RegexLexer):
|
4184
|
+
"""
|
4185
|
+
Lexer for `pan <http://github.com/quattor/pan/>`_ source files.
|
4186
|
+
|
4187
|
+
Based on tcsh lexer.
|
4188
|
+
|
4189
|
+
.. versionadded:: 2.0
|
4190
|
+
"""
|
4191
|
+
|
4192
|
+
name = 'Pan'
|
4193
|
+
aliases = ['pan']
|
4194
|
+
filenames = ['*.pan']
|
4195
|
+
|
4196
|
+
tokens = {
|
4197
|
+
'root': [
|
4198
|
+
include('basic'),
|
4199
|
+
(r'\(', Keyword, 'paren'),
|
4200
|
+
(r'{', Keyword, 'curly'),
|
4201
|
+
include('data'),
|
4202
|
+
],
|
4203
|
+
'basic': [
|
4204
|
+
(r'\b(if|for|with|else|type|bind|while|valid|final|prefix|unique|'
|
4205
|
+
r'object|foreach|include|template|function|variable|structure|'
|
4206
|
+
r'extensible|declaration)\s*\b',
|
4207
|
+
Keyword),
|
4208
|
+
(r'\b(file_contents|format|index|length|match|matches|replace|'
|
4209
|
+
r'splice|split|substr|to_lowercase|to_uppercase|debug|error|'
|
4210
|
+
r'traceback|deprecated|base64_decode|base64_encode|digest|escape|'
|
4211
|
+
r'unescape|append|create|first|nlist|key|length|list|merge|next|'
|
4212
|
+
r'prepend|splice|is_boolean|is_defined|is_double|is_list|is_long|'
|
4213
|
+
r'is_nlist|is_null|is_number|is_property|is_resource|is_string|'
|
4214
|
+
r'to_boolean|to_double|to_long|to_string|clone|delete|exists|'
|
4215
|
+
r'path_exists|if_exists|return|value)\s*\b',
|
4216
|
+
Name.Builtin),
|
4217
|
+
(r'#.*', Comment),
|
4218
|
+
(r'\\[\w\W]', String.Escape),
|
4219
|
+
(r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)),
|
4220
|
+
(r'[\[\]{}()=]+', Operator),
|
4221
|
+
(r'<<\s*(\'?)\\?(\w+)[\w\W]+?\2', String),
|
4222
|
+
(r';', Punctuation),
|
4223
|
+
],
|
4224
|
+
'data': [
|
4225
|
+
(r'(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
|
4226
|
+
(r"(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
|
4227
|
+
(r'\s+', Text),
|
4228
|
+
(r'[^=\s\[\]{}()$"\'`\\;#]+', Text),
|
4229
|
+
(r'\d+(?= |\Z)', Number),
|
4230
|
+
],
|
4231
|
+
'curly': [
|
4232
|
+
(r'}', Keyword, '#pop'),
|
4233
|
+
(r':-', Keyword),
|
4234
|
+
(r'\w+', Name.Variable),
|
4235
|
+
(r'[^}:"\'`$]+', Punctuation),
|
4236
|
+
(r':', Punctuation),
|
4237
|
+
include('root'),
|
4238
|
+
],
|
4239
|
+
'paren': [
|
4240
|
+
(r'\)', Keyword, '#pop'),
|
4241
|
+
include('root'),
|
4242
|
+
],
|
4243
|
+
}
|
4244
|
+
|
4245
|
+
class RedLexer(RegexLexer):
|
4246
|
+
"""
|
4247
|
+
A `Red-language <http://www.red-lang.org/>`_ lexer.
|
4248
|
+
|
4249
|
+
.. versionadded:: 2.0
|
4250
|
+
"""
|
4251
|
+
name = 'Red'
|
4252
|
+
aliases = ['red', 'red/system']
|
4253
|
+
filenames = ['*.red', '*.reds']
|
4254
|
+
mimetypes = ['text/x-red', 'text/x-red-system']
|
4255
|
+
|
4256
|
+
flags = re.IGNORECASE | re.MULTILINE
|
4257
|
+
|
4258
|
+
escape_re = r'(?:\^\([0-9a-f]{1,4}\)*)'
|
4259
|
+
|
4260
|
+
def word_callback(lexer, match):
|
4261
|
+
word = match.group()
|
4262
|
+
|
4263
|
+
if re.match(".*:$", word):
|
4264
|
+
yield match.start(), Generic.Subheading, word
|
4265
|
+
elif re.match(
|
4266
|
+
r'(if|unless|either|any|all|while|until|loop|repeat|'
|
4267
|
+
r'foreach|forall|func|function|does|has|switch|'
|
4268
|
+
r'case|reduce|compose|get|set|print|prin|equal\?|'
|
4269
|
+
r'not-equal\?|strict-equal\?|lesser\?|greater\?|lesser-or-equal\?|'
|
4270
|
+
r'greater-or-equal\?|same\?|not|type\?|stats|'
|
4271
|
+
r'bind|union|replace|charset|routine)$', word):
|
4272
|
+
yield match.start(), Name.Builtin, word
|
4273
|
+
elif re.match(
|
4274
|
+
r'(make|random|reflect|to|form|mold|absolute|add|divide|multiply|negate|'
|
4275
|
+
r'power|remainder|round|subtract|even\?|odd\?|and~|complement|or~|xor~|'
|
4276
|
+
r'append|at|back|change|clear|copy|find|head|head\?|index\?|insert|'
|
4277
|
+
r'length\?|next|pick|poke|remove|reverse|select|sort|skip|swap|tail|tail\?|'
|
4278
|
+
r'take|trim|create|close|delete|modify|open|open\?|query|read|rename|'
|
4279
|
+
r'update|write)$', word):
|
4280
|
+
yield match.start(), Name.Function, word
|
4281
|
+
elif re.match(
|
4282
|
+
r'(yes|on|no|off|true|false|tab|cr|lf|newline|escape|slash|sp|space|null|'
|
4283
|
+
r'none|crlf|dot|null-byte)$', word):
|
4284
|
+
yield match.start(), Name.Builtin.Pseudo, word
|
4285
|
+
elif re.match(
|
4286
|
+
r'(#system-global|#include|#enum|#define|#either|#if|#import|#export|'
|
4287
|
+
r'#switch|#default|#get-definition)$', word):
|
4288
|
+
yield match.start(), Keyword.Namespace, word
|
4289
|
+
elif re.match(
|
4290
|
+
r'(system|halt|quit|quit-return|do|load|q|recycle|call|run|ask|parse|'
|
4291
|
+
r'raise-error|return|exit|break|alias|push|pop|probe|\?\?|spec-of|body-of|'
|
4292
|
+
r'quote|forever)$', word):
|
4293
|
+
yield match.start(), Name.Exception, word
|
4294
|
+
elif re.match(
|
4295
|
+
r'(action\?|block\?|char\?|datatype\?|file\?|function\?|get-path\?|zero\?|'
|
4296
|
+
r'get-word\?|integer\?|issue\?|lit-path\?|lit-word\?|logic\?|native\?|'
|
4297
|
+
r'op\?|paren\?|path\?|refinement\?|set-path\?|set-word\?|string\?|unset\?|'
|
4298
|
+
r'any-struct\?|none\?|word\?|any-series\?)$', word):
|
4299
|
+
yield match.start(), Keyword, word
|
4300
|
+
elif re.match(r'(JNICALL|stdcall|cdecl|infix)$', word):
|
4301
|
+
yield match.start(), Keyword.Namespace, word
|
4302
|
+
elif re.match("to-.*", word):
|
4303
|
+
yield match.start(), Keyword, word
|
4304
|
+
elif re.match('(\+|-|\*|/|//|\*\*|and|or|xor|=\?|=|==|===|<>|<|>|<=|>=|<<|>>|<<<|>>>|%|-\*\*)$', word):
|
4305
|
+
yield match.start(), Operator, word
|
4306
|
+
elif re.match(".*\!$", word):
|
4307
|
+
yield match.start(), Keyword.Type, word
|
4308
|
+
elif re.match("'.*", word):
|
4309
|
+
yield match.start(), Name.Variable.Instance, word # lit-word
|
4310
|
+
elif re.match("#.*", word):
|
4311
|
+
yield match.start(), Name.Label, word # issue
|
4312
|
+
elif re.match("%.*", word):
|
4313
|
+
yield match.start(), Name.Decorator, word # file
|
4314
|
+
elif re.match(":.*", word):
|
4315
|
+
yield match.start(), Generic.Subheading, word # get-word
|
4316
|
+
else:
|
4317
|
+
yield match.start(), Name.Variable, word
|
4318
|
+
|
4319
|
+
tokens = {
|
4320
|
+
'root': [
|
4321
|
+
(r'[^R]+', Comment),
|
4322
|
+
(r'Red/System\s+\[', Generic.Strong, 'script'),
|
4323
|
+
(r'Red\s+\[', Generic.Strong, 'script'),
|
4324
|
+
(r'R', Comment)
|
4325
|
+
],
|
4326
|
+
'script': [
|
4327
|
+
(r'\s+', Text),
|
4328
|
+
(r'#"', String.Char, 'char'),
|
4329
|
+
(r'#{[0-9a-f\s]*}', Number.Hex),
|
4330
|
+
(r'2#{', Number.Hex, 'bin2'),
|
4331
|
+
(r'64#{[0-9a-z+/=\s]*}', Number.Hex),
|
4332
|
+
(r'([0-9a-f]+)(h)((\s)|(?=[\[\]{}""\(\)]))',
|
4333
|
+
bygroups(Number.Hex, Name.Variable, Whitespace)),
|
4334
|
+
(r'"', String, 'string'),
|
4335
|
+
(r'{', String, 'string2'),
|
4336
|
+
(r';#+.*\n', Comment.Special),
|
4337
|
+
(r';\*+.*\n', Comment.Preproc),
|
4338
|
+
(r';.*\n', Comment),
|
4339
|
+
(r'%"', Name.Decorator, 'stringFile'),
|
4340
|
+
(r'%[^(\^{^")\s\[\]]+', Name.Decorator),
|
4341
|
+
(r'[+-]?([a-z]{1,3})?\$\d+(\.\d+)?', Number.Float), # money
|
4342
|
+
(r'[+-]?\d+\:\d+(\:\d+)?(\.\d+)?', String.Other), # time
|
4343
|
+
(r'\d+[\-\/][0-9a-z]+[\-\/]\d+(\/\d+\:\d+((\:\d+)?'
|
4344
|
+
r'([\.\d+]?([+-]?\d+:\d+)?)?)?)?', String.Other), # date
|
4345
|
+
(r'\d+(\.\d+)+\.\d+', Keyword.Constant), # tuple
|
4346
|
+
(r'\d+[xX]\d+', Keyword.Constant), # pair
|
4347
|
+
(r'[+-]?\d+(\'\d+)?([\.,]\d*)?[eE][+-]?\d+', Number.Float),
|
4348
|
+
(r'[+-]?\d+(\'\d+)?[\.,]\d*', Number.Float),
|
4349
|
+
(r'[+-]?\d+(\'\d+)?', Number),
|
4350
|
+
(r'[\[\]\(\)]', Generic.Strong),
|
4351
|
+
(r'[a-z]+[^(\^{"\s:)]*://[^(\^{"\s)]*', Name.Decorator), # url
|
4352
|
+
(r'mailto:[^(\^{"@\s)]+@[^(\^{"@\s)]+', Name.Decorator), # url
|
4353
|
+
(r'[^(\^{"@\s)]+@[^(\^{"@\s)]+', Name.Decorator), # email
|
4354
|
+
(r'comment\s"', Comment, 'commentString1'),
|
4355
|
+
(r'comment\s{', Comment, 'commentString2'),
|
4356
|
+
(r'comment\s\[', Comment, 'commentBlock'),
|
4357
|
+
(r'comment\s[^(\s{\"\[]+', Comment),
|
4358
|
+
(r'/[^(\^{^")\s/[\]]*', Name.Attribute),
|
4359
|
+
(r'([^(\^{^")\s/[\]]+)(?=[:({"\s/\[\]])', word_callback),
|
4360
|
+
(r'<[\w:.-]*>', Name.Tag),
|
4361
|
+
(r'<[^(<>\s")]+', Name.Tag, 'tag'),
|
4362
|
+
(r'([^(\^{^")\s]+)', Text),
|
4363
|
+
],
|
4364
|
+
'string': [
|
4365
|
+
(r'[^(\^")]+', String),
|
4366
|
+
(escape_re, String.Escape),
|
4367
|
+
(r'[\(|\)]+', String),
|
4368
|
+
(r'\^.', String.Escape),
|
4369
|
+
(r'"', String, '#pop'),
|
4370
|
+
],
|
4371
|
+
'string2': [
|
4372
|
+
(r'[^(\^{^})]+', String),
|
4373
|
+
(escape_re, String.Escape),
|
4374
|
+
(r'[\(|\)]+', String),
|
4375
|
+
(r'\^.', String.Escape),
|
4376
|
+
(r'{', String, '#push'),
|
4377
|
+
(r'}', String, '#pop'),
|
4378
|
+
],
|
4379
|
+
'stringFile': [
|
4380
|
+
(r'[^(\^")]+', Name.Decorator),
|
4381
|
+
(escape_re, Name.Decorator),
|
4382
|
+
(r'\^.', Name.Decorator),
|
4383
|
+
(r'"', Name.Decorator, '#pop'),
|
4384
|
+
],
|
4385
|
+
'char': [
|
4386
|
+
(escape_re + '"', String.Char, '#pop'),
|
4387
|
+
(r'\^."', String.Char, '#pop'),
|
4388
|
+
(r'."', String.Char, '#pop'),
|
4389
|
+
],
|
4390
|
+
'tag': [
|
4391
|
+
(escape_re, Name.Tag),
|
4392
|
+
(r'"', Name.Tag, 'tagString'),
|
4393
|
+
(r'[^(<>\r\n")]+', Name.Tag),
|
4394
|
+
(r'>', Name.Tag, '#pop'),
|
4395
|
+
],
|
4396
|
+
'tagString': [
|
4397
|
+
(r'[^(\^")]+', Name.Tag),
|
4398
|
+
(escape_re, Name.Tag),
|
4399
|
+
(r'[\(|\)]+', Name.Tag),
|
4400
|
+
(r'\^.', Name.Tag),
|
4401
|
+
(r'"', Name.Tag, '#pop'),
|
4402
|
+
],
|
4403
|
+
'tuple': [
|
4404
|
+
(r'(\d+\.)+', Keyword.Constant),
|
4405
|
+
(r'\d+', Keyword.Constant, '#pop'),
|
4406
|
+
],
|
4407
|
+
'bin2': [
|
4408
|
+
(r'\s+', Number.Hex),
|
4409
|
+
(r'([0-1]\s*){8}', Number.Hex),
|
4410
|
+
(r'}', Number.Hex, '#pop'),
|
4411
|
+
],
|
4412
|
+
'commentString1': [
|
4413
|
+
(r'[^(\^")]+', Comment),
|
4414
|
+
(escape_re, Comment),
|
4415
|
+
(r'[\(|\)]+', Comment),
|
4416
|
+
(r'\^.', Comment),
|
4417
|
+
(r'"', Comment, '#pop'),
|
4418
|
+
],
|
4419
|
+
'commentString2': [
|
4420
|
+
(r'[^(\^{^})]+', Comment),
|
4421
|
+
(escape_re, Comment),
|
4422
|
+
(r'[\(|\)]+', Comment),
|
4423
|
+
(r'\^.', Comment),
|
4424
|
+
(r'{', Comment, '#push'),
|
4425
|
+
(r'}', Comment, '#pop'),
|
4426
|
+
],
|
4427
|
+
'commentBlock': [
|
4428
|
+
(r'\[', Comment, '#push'),
|
4429
|
+
(r'\]', Comment, '#pop'),
|
4430
|
+
(r'"', Comment, "commentString1"),
|
4431
|
+
(r'{', Comment, "commentString2"),
|
4432
|
+
(r'[^(\[\]\"{)]+', Comment),
|
4433
|
+
],
|
4434
|
+
}
|
4435
|
+
|
4436
|
+
|
4437
|
+
class AlloyLexer(RegexLexer):
|
4438
|
+
"""
|
4439
|
+
For `Alloy <http://alloy.mit.edu>`_ source code.
|
4440
|
+
"""
|
4441
|
+
|
4442
|
+
name = 'Alloy'
|
4443
|
+
aliases = ['alloy']
|
4444
|
+
filenames = ['*.als']
|
4445
|
+
mimetypes = ['text/x-alloy']
|
4446
|
+
|
4447
|
+
flags = re.MULTILINE | re.DOTALL
|
4448
|
+
|
4449
|
+
iden_rex = r'[a-zA-Z_][a-zA-Z0-9_\']*'
|
4450
|
+
text_tuple = (r'[^\S\n]+', Text)
|
4451
|
+
|
4452
|
+
tokens = {
|
4453
|
+
'sig': [
|
4454
|
+
(r'(extends)\b', Keyword, '#pop'),
|
4455
|
+
(iden_rex, Name),
|
4456
|
+
text_tuple,
|
4457
|
+
(r',', Punctuation),
|
4458
|
+
(r'\{', Operator, '#pop'),
|
4459
|
+
],
|
4460
|
+
'module': [
|
4461
|
+
text_tuple,
|
4462
|
+
(iden_rex, Name, '#pop'),
|
4463
|
+
],
|
4464
|
+
'fun': [
|
4465
|
+
text_tuple,
|
4466
|
+
(r'\{', Operator, '#pop'),
|
4467
|
+
(iden_rex, Name, '#pop'),
|
4468
|
+
],
|
4469
|
+
'root': [
|
4470
|
+
(r'--.*?$', Comment.Single),
|
4471
|
+
(r'//.*?$', Comment.Single),
|
4472
|
+
(r'/\*.*?\*/', Comment.Multiline),
|
4473
|
+
text_tuple,
|
4474
|
+
(r'(module|open)(\s+)', bygroups(Keyword.Namespace, Text),
|
4475
|
+
'module'),
|
4476
|
+
(r'(sig|enum)(\s+)', bygroups(Keyword.Declaration, Text), 'sig'),
|
4477
|
+
(r'(iden|univ|none)\b', Keyword.Constant),
|
4478
|
+
(r'(int|Int)\b', Keyword.Type),
|
4479
|
+
(r'(this|abstract|extends|set|seq|one|lone|let)\b', Keyword),
|
4480
|
+
(r'(all|some|no|sum|disj|when|else)\b', Keyword),
|
4481
|
+
(r'(run|check|for|but|exactly|expect|as)\b', Keyword),
|
4482
|
+
(r'(and|or|implies|iff|in)\b', Operator.Word),
|
4483
|
+
(r'(fun|pred|fact|assert)(\s+)', bygroups(Keyword, Text), 'fun'),
|
4484
|
+
(r'!|#|&&|\+\+|<<|>>|>=|<=>|<=|\.|->', Operator),
|
4485
|
+
(r'[-+/*%=<>&!^|~\{\}\[\]\(\)\.]', Operator),
|
4486
|
+
(iden_rex, Name),
|
4487
|
+
(r'[:,]', Punctuation),
|
4488
|
+
(r'[0-9]+', Number.Integer),
|
4489
|
+
(r'"(\\\\|\\"|[^"])*"', String),
|
4490
|
+
(r'\n', Text),
|
4491
|
+
]
|
4492
|
+
}
|