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,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Lexers for assembly 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
|
|
@@ -17,7 +17,7 @@ from pygments.token import Text, Name, Number, String, Comment, Punctuation, \
|
|
17
17
|
Other, Keyword, Operator
|
18
18
|
|
19
19
|
__all__ = ['GasLexer', 'ObjdumpLexer','DObjdumpLexer', 'CppObjdumpLexer',
|
20
|
-
'CObjdumpLexer', 'LlvmLexer', 'NasmLexer', 'Ca65Lexer']
|
20
|
+
'CObjdumpLexer', 'LlvmLexer', 'NasmLexer', 'NasmObjdumpLexer', 'Ca65Lexer']
|
21
21
|
|
22
22
|
|
23
23
|
class GasLexer(RegexLexer):
|
@@ -96,18 +96,12 @@ class GasLexer(RegexLexer):
|
|
96
96
|
return 0.1
|
97
97
|
|
98
98
|
|
99
|
-
|
99
|
+
def _objdump_lexer_tokens(asm_lexer):
|
100
100
|
"""
|
101
|
-
|
101
|
+
Common objdump lexer tokens to wrap an ASM lexer.
|
102
102
|
"""
|
103
|
-
|
104
|
-
|
105
|
-
filenames = ['*.objdump']
|
106
|
-
mimetypes = ['text/x-objdump']
|
107
|
-
|
108
|
-
hex = r'[0-9A-Za-z]'
|
109
|
-
|
110
|
-
tokens = {
|
103
|
+
hex_re = r'[0-9A-Za-z]'
|
104
|
+
return {
|
111
105
|
'root': [
|
112
106
|
# File name & format:
|
113
107
|
('(.*?)(:)( +file format )(.*?)$',
|
@@ -117,33 +111,33 @@ class ObjdumpLexer(RegexLexer):
|
|
117
111
|
bygroups(Text, Name.Label, Punctuation)),
|
118
112
|
# Function labels
|
119
113
|
# (With offset)
|
120
|
-
('('+
|
114
|
+
('('+hex_re+'+)( )(<)(.*?)([-+])(0[xX][A-Za-z0-9]+)(>:)$',
|
121
115
|
bygroups(Number.Hex, Text, Punctuation, Name.Function,
|
122
116
|
Punctuation, Number.Hex, Punctuation)),
|
123
117
|
# (Without offset)
|
124
|
-
('('+
|
118
|
+
('('+hex_re+'+)( )(<)(.*?)(>:)$',
|
125
119
|
bygroups(Number.Hex, Text, Punctuation, Name.Function,
|
126
120
|
Punctuation)),
|
127
121
|
# Code line with disassembled instructions
|
128
|
-
('( *)('+
|
122
|
+
('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)( *\t)([a-zA-Z].*?)$',
|
129
123
|
bygroups(Text, Name.Label, Text, Number.Hex, Text,
|
130
|
-
using(
|
124
|
+
using(asm_lexer))),
|
131
125
|
# Code line with ascii
|
132
|
-
('( *)('+
|
126
|
+
('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)( *)(.*?)$',
|
133
127
|
bygroups(Text, Name.Label, Text, Number.Hex, Text, String)),
|
134
128
|
# Continued code line, only raw opcodes without disassembled
|
135
129
|
# instruction
|
136
|
-
('( *)('+
|
130
|
+
('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)$',
|
137
131
|
bygroups(Text, Name.Label, Text, Number.Hex)),
|
138
132
|
# Skipped a few bytes
|
139
133
|
(r'\t\.\.\.$', Text),
|
140
134
|
# Relocation line
|
141
135
|
# (With offset)
|
142
|
-
(r'(\t\t\t)('+
|
136
|
+
(r'(\t\t\t)('+hex_re+r'+:)( )([^\t]+)(\t)(.*?)([-+])(0x'+hex_re+'+)$',
|
143
137
|
bygroups(Text, Name.Label, Text, Name.Property, Text,
|
144
138
|
Name.Constant, Punctuation, Number.Hex)),
|
145
139
|
# (Without offset)
|
146
|
-
(r'(\t\t\t)('+
|
140
|
+
(r'(\t\t\t)('+hex_re+r'+:)( )([^\t]+)(\t)(.*?)$',
|
147
141
|
bygroups(Text, Name.Label, Text, Name.Property, Text,
|
148
142
|
Name.Constant)),
|
149
143
|
(r'[^\n]+\n', Other)
|
@@ -151,6 +145,20 @@ class ObjdumpLexer(RegexLexer):
|
|
151
145
|
}
|
152
146
|
|
153
147
|
|
148
|
+
class ObjdumpLexer(RegexLexer):
|
149
|
+
"""
|
150
|
+
For the output of 'objdump -dr'
|
151
|
+
"""
|
152
|
+
name = 'objdump'
|
153
|
+
aliases = ['objdump']
|
154
|
+
filenames = ['*.objdump']
|
155
|
+
mimetypes = ['text/x-objdump']
|
156
|
+
|
157
|
+
|
158
|
+
tokens = _objdump_lexer_tokens(GasLexer)
|
159
|
+
|
160
|
+
|
161
|
+
|
154
162
|
class DObjdumpLexer(DelegatingLexer):
|
155
163
|
"""
|
156
164
|
For the output of 'objdump -Sr on compiled D files'
|
@@ -216,6 +224,7 @@ class LlvmLexer(RegexLexer):
|
|
216
224
|
(r'@' + identifier, Name.Variable.Global),#Name.Identifier.Global),
|
217
225
|
(r'%\d+', Name.Variable.Anonymous),#Name.Identifier.Anonymous),
|
218
226
|
(r'@\d+', Name.Variable.Global),#Name.Identifier.Anonymous),
|
227
|
+
(r'#\d+', Name.Variable.Global),#Name.Identifier.Global),
|
219
228
|
(r'!' + identifier, Name.Variable),
|
220
229
|
(r'!\d+', Name.Variable.Anonymous),
|
221
230
|
(r'c?' + string, String),
|
@@ -242,17 +251,24 @@ class LlvmLexer(RegexLexer):
|
|
242
251
|
r'|thread_local|zeroinitializer|undef|null|to|tail|target|triple'
|
243
252
|
r'|datalayout|volatile|nuw|nsw|nnan|ninf|nsz|arcp|fast|exact|inbounds'
|
244
253
|
r'|align|addrspace|section|alias|module|asm|sideeffect|gc|dbg'
|
254
|
+
r'|linker_private_weak'
|
255
|
+
r'|attributes|blockaddress|initialexec|localdynamic|localexec'
|
256
|
+
r'|prefix|unnamed_addr'
|
245
257
|
|
246
258
|
r'|ccc|fastcc|coldcc|x86_stdcallcc|x86_fastcallcc|arm_apcscc'
|
247
259
|
r'|arm_aapcscc|arm_aapcs_vfpcc|ptx_device|ptx_kernel'
|
260
|
+
r'|intel_ocl_bicc|msp430_intrcc|spir_func|spir_kernel'
|
261
|
+
r'|x86_64_sysvcc|x86_64_win64cc|x86_thiscallcc'
|
248
262
|
|
249
263
|
r'|cc|c'
|
250
264
|
|
251
265
|
r'|signext|zeroext|inreg|sret|nounwind|noreturn|noalias|nocapture'
|
252
266
|
r'|byval|nest|readnone|readonly'
|
253
|
-
|
254
267
|
r'|inlinehint|noinline|alwaysinline|optsize|ssp|sspreq|noredzone'
|
255
268
|
r'|noimplicitfloat|naked'
|
269
|
+
r'|builtin|cold|nobuiltin|noduplicate|nonlazybind|optnone'
|
270
|
+
r'|returns_twice|sanitize_address|sanitize_memory|sanitize_thread'
|
271
|
+
r'|sspstrong|uwtable|returned'
|
256
272
|
|
257
273
|
r'|type|opaque'
|
258
274
|
|
@@ -261,24 +277,30 @@ class LlvmLexer(RegexLexer):
|
|
261
277
|
r'|oeq|one|olt|ogt|ole'
|
262
278
|
r'|oge|ord|uno|ueq|une'
|
263
279
|
r'|x'
|
280
|
+
r'|acq_rel|acquire|alignstack|atomic|catch|cleanup|filter'
|
281
|
+
r'|inteldialect|max|min|monotonic|nand|personality|release'
|
282
|
+
r'|seq_cst|singlethread|umax|umin|unordered|xchg'
|
264
283
|
|
265
284
|
# instructions
|
266
285
|
r'|add|fadd|sub|fsub|mul|fmul|udiv|sdiv|fdiv|urem|srem|frem|shl'
|
267
286
|
r'|lshr|ashr|and|or|xor|icmp|fcmp'
|
268
287
|
|
269
288
|
r'|phi|call|trunc|zext|sext|fptrunc|fpext|uitofp|sitofp|fptoui'
|
270
|
-
r'fptosi|inttoptr|ptrtoint|bitcast|select|va_arg|ret|br|switch'
|
289
|
+
r'|fptosi|inttoptr|ptrtoint|bitcast|select|va_arg|ret|br|switch'
|
271
290
|
r'|invoke|unwind|unreachable'
|
291
|
+
r'|indirectbr|landingpad|resume'
|
272
292
|
|
273
293
|
r'|malloc|alloca|free|load|store|getelementptr'
|
274
294
|
|
275
295
|
r'|extractelement|insertelement|shufflevector|getresult'
|
276
296
|
r'|extractvalue|insertvalue'
|
277
297
|
|
298
|
+
r'|atomicrmw|cmpxchg|fence'
|
299
|
+
|
278
300
|
r')\b', Keyword),
|
279
301
|
|
280
302
|
# Types
|
281
|
-
(r'void|float|double|x86_fp80|fp128|ppc_fp128|label|metadata',
|
303
|
+
(r'void|half|float|double|x86_fp80|fp128|ppc_fp128|label|metadata',
|
282
304
|
Keyword.Type),
|
283
305
|
|
284
306
|
# Integer types
|
@@ -296,8 +318,8 @@ class NasmLexer(RegexLexer):
|
|
296
318
|
filenames = ['*.asm', '*.ASM']
|
297
319
|
mimetypes = ['text/x-nasm']
|
298
320
|
|
299
|
-
identifier = r'[a-
|
300
|
-
hexn = r'(?:0[xX][0-9a-
|
321
|
+
identifier = r'[a-z$._?][\w$.?#@~]*'
|
322
|
+
hexn = r'(?:0[xX][0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)'
|
301
323
|
octn = r'[0-7]+q'
|
302
324
|
binn = r'[01]+b'
|
303
325
|
decn = r'[0-9]+'
|
@@ -331,7 +353,7 @@ class NasmLexer(RegexLexer):
|
|
331
353
|
(string, String),
|
332
354
|
(hexn, Number.Hex),
|
333
355
|
(octn, Number.Oct),
|
334
|
-
(binn, Number),
|
356
|
+
(binn, Number.Bin),
|
335
357
|
(floatn, Number.Float),
|
336
358
|
(decn, Number.Integer),
|
337
359
|
include('punctuation'),
|
@@ -360,11 +382,25 @@ class NasmLexer(RegexLexer):
|
|
360
382
|
}
|
361
383
|
|
362
384
|
|
385
|
+
class NasmObjdumpLexer(ObjdumpLexer):
|
386
|
+
"""
|
387
|
+
For the output of 'objdump -d -M intel'.
|
388
|
+
|
389
|
+
.. versionadded:: 2.0
|
390
|
+
"""
|
391
|
+
name = 'objdump-nasm'
|
392
|
+
aliases = ['objdump-nasm']
|
393
|
+
filenames = ['*.objdump-intel']
|
394
|
+
mimetypes = ['text/x-nasm-objdump']
|
395
|
+
|
396
|
+
tokens = _objdump_lexer_tokens(NasmLexer)
|
397
|
+
|
398
|
+
|
363
399
|
class Ca65Lexer(RegexLexer):
|
364
400
|
"""
|
365
401
|
For ca65 assembler sources.
|
366
402
|
|
367
|
-
|
403
|
+
.. versionadded:: 1.6
|
368
404
|
"""
|
369
405
|
name = 'ca65'
|
370
406
|
aliases = ['ca65']
|
@@ -381,12 +417,13 @@ class Ca65Lexer(RegexLexer):
|
|
381
417
|
r'|cl[cvdi]|se[cdi]|jmp|jsr|bne|beq|bpl|bmi|bvc|bvs|bcc|bcs'
|
382
418
|
r'|p[lh][ap]|rt[is]|brk|nop|ta[xy]|t[xy]a|txs|tsx|and|ora|eor'
|
383
419
|
r'|bit)\b', Keyword),
|
384
|
-
(r'
|
420
|
+
(r'\.\w+', Keyword.Pseudo),
|
385
421
|
(r'[-+~*/^&|!<>=]', Operator),
|
386
422
|
(r'"[^"\n]*.', String),
|
387
423
|
(r"'[^'\n]*.", String.Char),
|
388
424
|
(r'\$[0-9a-f]+|[0-9a-f]+h\b', Number.Hex),
|
389
|
-
(r'\d
|
425
|
+
(r'\d+', Number.Integer),
|
426
|
+
(r'%[01]+', Number.Bin),
|
390
427
|
(r'[#,.:()=]', Punctuation),
|
391
428
|
(r'[a-z_.@$][\w.@$]*', Name),
|
392
429
|
]
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Lexers for compiled 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
|
|
@@ -13,7 +13,7 @@ import re
|
|
13
13
|
from string import Template
|
14
14
|
|
15
15
|
from pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \
|
16
|
-
this, combined, inherit, do_insertions
|
16
|
+
this, combined, inherit, do_insertions, default
|
17
17
|
from pygments.util import get_bool_opt, get_list_opt
|
18
18
|
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
19
19
|
Number, Punctuation, Error, Literal, Generic
|
@@ -30,7 +30,9 @@ __all__ = ['CLexer', 'CppLexer', 'DLexer', 'DelphiLexer', 'ECLexer',
|
|
30
30
|
'Modula2Lexer', 'BlitzMaxLexer', 'BlitzBasicLexer', 'NimrodLexer',
|
31
31
|
'FantomLexer', 'RustLexer', 'CudaLexer', 'MonkeyLexer', 'SwigLexer',
|
32
32
|
'DylanLidLexer', 'DylanConsoleLexer', 'CobolLexer',
|
33
|
-
'CobolFreeformatLexer', 'LogosLexer', 'ClayLexer'
|
33
|
+
'CobolFreeformatLexer', 'LogosLexer', 'ClayLexer', 'PikeLexer',
|
34
|
+
'ChapelLexer', 'EiffelLexer', 'Inform6Lexer', 'Inform7Lexer',
|
35
|
+
'Inform6TemplateLexer', 'MqlLexer', 'SwiftLexer']
|
34
36
|
|
35
37
|
|
36
38
|
class CFamilyLexer(RegexLexer):
|
@@ -42,7 +44,7 @@ class CFamilyLexer(RegexLexer):
|
|
42
44
|
#: optional Comment or Whitespace
|
43
45
|
_ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
|
44
46
|
#: only one /* */ style comment
|
45
|
-
_ws1 = r'
|
47
|
+
_ws1 = r'\s*(?:/[*].*?[*]/\s*)*'
|
46
48
|
|
47
49
|
tokens = {
|
48
50
|
'whitespace': [
|
@@ -54,8 +56,6 @@ class CFamilyLexer(RegexLexer):
|
|
54
56
|
bygroups(using(this), Comment.Preproc), 'if0'),
|
55
57
|
('^(' + _ws1 + ')(#)',
|
56
58
|
bygroups(using(this), Comment.Preproc), 'macro'),
|
57
|
-
(r'^(\s*)([a-zA-Z_][a-zA-Z0-9_]*:(?!:))',
|
58
|
-
bygroups(Text, Name.Label)),
|
59
59
|
(r'\n', Text),
|
60
60
|
(r'\s+', Text),
|
61
61
|
(r'\\\n', Text), # line continuation
|
@@ -73,7 +73,6 @@ class CFamilyLexer(RegexLexer):
|
|
73
73
|
(r'\*/', Error),
|
74
74
|
(r'[~!%^&*+=|?:<>/-]', Operator),
|
75
75
|
(r'[()\[\],.]', Punctuation),
|
76
|
-
(r'\b(case)(.+?)(:)', bygroups(Keyword, using(this), Text)),
|
77
76
|
(r'(auto|break|case|const|continue|default|do|else|enum|extern|'
|
78
77
|
r'for|goto|if|register|restricted|return|sizeof|static|struct|'
|
79
78
|
r'switch|typedef|union|volatile|while)\b', Keyword),
|
@@ -88,26 +87,27 @@ class CFamilyLexer(RegexLexer):
|
|
88
87
|
r'declspec|finally|int64|try|leave|wchar_t|w64|unaligned|'
|
89
88
|
r'raise|noop|identifier|forceinline|assume)\b', Keyword.Reserved),
|
90
89
|
(r'(true|false|NULL)\b', Name.Builtin),
|
91
|
-
('[a-zA-Z_]
|
90
|
+
(r'([a-zA-Z_]\w*)(\s*)(:)(?!:)', bygroups(Name.Label, Text, Punctuation)),
|
91
|
+
('[a-zA-Z_]\w*', Name),
|
92
92
|
],
|
93
93
|
'root': [
|
94
94
|
include('whitespace'),
|
95
95
|
# functions
|
96
|
-
(r'((?:[
|
97
|
-
r'([a-zA-Z_]
|
98
|
-
r'(\s*\([^;]*?\))'
|
96
|
+
(r'((?:[\w*\s])+?(?:\s|[*]))' # return arguments
|
97
|
+
r'([a-zA-Z_]\w*)' # method name
|
98
|
+
r'(\s*\([^;]*?\))' # signature
|
99
99
|
r'(' + _ws + r')?({)',
|
100
100
|
bygroups(using(this), Name.Function, using(this), using(this),
|
101
101
|
Punctuation),
|
102
102
|
'function'),
|
103
103
|
# function declarations
|
104
|
-
(r'((?:[
|
105
|
-
r'([a-zA-Z_]
|
106
|
-
r'(\s*\([^;]*?\))'
|
104
|
+
(r'((?:[\w*\s])+?(?:\s|[*]))' # return arguments
|
105
|
+
r'([a-zA-Z_]\w*)' # method name
|
106
|
+
r'(\s*\([^;]*?\))' # signature
|
107
107
|
r'(' + _ws + r')?(;)',
|
108
108
|
bygroups(using(this), Name.Function, using(this), using(this),
|
109
109
|
Punctuation)),
|
110
|
-
('
|
110
|
+
default('statement'),
|
111
111
|
],
|
112
112
|
'statement' : [
|
113
113
|
include('whitespace'),
|
@@ -188,7 +188,8 @@ class CLexer(CFamilyLexer):
|
|
188
188
|
priority = 0.1
|
189
189
|
|
190
190
|
def analyse_text(text):
|
191
|
-
|
191
|
+
if re.search('#include [<"]', text):
|
192
|
+
return 0.1
|
192
193
|
|
193
194
|
|
194
195
|
class CppLexer(CFamilyLexer):
|
@@ -209,7 +210,10 @@ class CppLexer(CFamilyLexer):
|
|
209
210
|
r'export|friend|mutable|namespace|new|operator|'
|
210
211
|
r'private|protected|public|reinterpret_cast|'
|
211
212
|
r'restrict|static_cast|template|this|throw|throws|'
|
212
|
-
r'typeid|typename|using|virtual
|
213
|
+
r'typeid|typename|using|virtual|'
|
214
|
+
r'constexpr|nullptr|decltype|thread_local|'
|
215
|
+
r'alignas|alignof|static_assert|noexcept|override|final)\b', Keyword),
|
216
|
+
(r'(char16_t|char32_t)\b', Keyword.Type),
|
213
217
|
(r'(class)(\s+)', bygroups(Keyword, Text), 'classname'),
|
214
218
|
inherit,
|
215
219
|
],
|
@@ -222,33 +226,78 @@ class CppLexer(CFamilyLexer):
|
|
222
226
|
(r'(__offload|__blockingoffload|__outer)\b', Keyword.Pseudo),
|
223
227
|
],
|
224
228
|
'classname': [
|
225
|
-
(r'[a-zA-Z_]
|
229
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop'),
|
226
230
|
# template specification
|
227
231
|
(r'\s*(?=>)', Text, '#pop'),
|
228
232
|
],
|
229
233
|
}
|
230
234
|
|
231
235
|
def analyse_text(text):
|
232
|
-
|
236
|
+
if re.search('#include <[a-z]+>', text):
|
237
|
+
return 0.2
|
238
|
+
if re.search('using namespace ', text):
|
239
|
+
return 0.4
|
240
|
+
|
241
|
+
|
242
|
+
class PikeLexer(CppLexer):
|
243
|
+
"""
|
244
|
+
For `Pike <http://pike.lysator.liu.se/>`_ source code.
|
245
|
+
|
246
|
+
.. versionadded:: 2.0
|
247
|
+
"""
|
248
|
+
name = 'Pike'
|
249
|
+
aliases = ['pike']
|
250
|
+
filenames = ['*.pike', '*.pmod']
|
251
|
+
mimetypes = ['text/x-pike']
|
252
|
+
|
253
|
+
tokens = {
|
254
|
+
'statements': [
|
255
|
+
(r'(catch|new|private|protected|public|gauge|'
|
256
|
+
r'throw|throws|class|interface|implement|abstract|extends|from|'
|
257
|
+
r'this|super|new|constant|final|static|import|use|extern|'
|
258
|
+
r'inline|proto|break|continue|if|else|for|'
|
259
|
+
r'while|do|switch|case|as|in|version|return|true|false|null|'
|
260
|
+
r'__VERSION__|__MAJOR__|__MINOR__|__BUILD__|__REAL_VERSION__|'
|
261
|
+
r'__REAL_MAJOR__|__REAL_MINOR__|__REAL_BUILD__|__DATE__|__TIME__|'
|
262
|
+
r'__FILE__|__DIR__|__LINE__|__AUTO_BIGNUM__|__NT__|__PIKE__|'
|
263
|
+
r'__amigaos__|_Pragma|static_assert|defined|sscanf)\b',
|
264
|
+
Keyword),
|
265
|
+
(r'(bool|int|long|float|short|double|char|string|object|void|mapping|'
|
266
|
+
r'array|multiset|program|function|lambda|mixed|'
|
267
|
+
r'[a-z_][a-z0-9_]*_t)\b',
|
268
|
+
Keyword.Type),
|
269
|
+
(r'(class)(\s+)', bygroups(Keyword, Text), 'classname'),
|
270
|
+
(r'[~!%^&*+=|?:<>/-@]', Operator),
|
271
|
+
inherit,
|
272
|
+
],
|
273
|
+
'classname': [
|
274
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop'),
|
275
|
+
# template specification
|
276
|
+
(r'\s*(?=>)', Text, '#pop'),
|
277
|
+
],
|
278
|
+
}
|
233
279
|
|
234
280
|
|
235
281
|
class SwigLexer(CppLexer):
|
236
282
|
"""
|
237
283
|
For `SWIG <http://www.swig.org/>`_ source code.
|
238
284
|
|
239
|
-
|
285
|
+
.. versionadded:: 2.0
|
240
286
|
"""
|
241
287
|
name = 'SWIG'
|
242
|
-
aliases = ['
|
288
|
+
aliases = ['swig']
|
243
289
|
filenames = ['*.swg', '*.i']
|
244
290
|
mimetypes = ['text/swig']
|
245
291
|
priority = 0.04 # Lower than C/C++ and Objective C/C++
|
246
292
|
|
247
293
|
tokens = {
|
248
294
|
'statements': [
|
249
|
-
|
250
|
-
('
|
251
|
-
|
295
|
+
# SWIG directives
|
296
|
+
(r'(%[a-z_][a-z0-9_]*)', Name.Function),
|
297
|
+
# Special variables
|
298
|
+
('\$\**\&?\w+', Name),
|
299
|
+
# Stringification / additional preprocessor directives
|
300
|
+
(r'##*[a-zA-Z_]\w*', Comment.Preproc),
|
252
301
|
inherit,
|
253
302
|
],
|
254
303
|
}
|
@@ -275,7 +324,7 @@ class SwigLexer(CppLexer):
|
|
275
324
|
'%trackobjects', '%types', '%unrefobject', '%varargs', '%warn', '%warnfilter')
|
276
325
|
|
277
326
|
def analyse_text(text):
|
278
|
-
rv = 0
|
327
|
+
rv = 0
|
279
328
|
# Search for SWIG directives, which are conventionally at the beginning of
|
280
329
|
# a line. The probability of them being within a line is low, so let another
|
281
330
|
# lexer win in this case.
|
@@ -293,7 +342,7 @@ class ECLexer(CLexer):
|
|
293
342
|
"""
|
294
343
|
For eC source code with preprocessor directives.
|
295
344
|
|
296
|
-
|
345
|
+
.. versionadded:: 1.5
|
297
346
|
"""
|
298
347
|
name = 'eC'
|
299
348
|
aliases = ['ec']
|
@@ -317,7 +366,7 @@ class ECLexer(CLexer):
|
|
317
366
|
inherit,
|
318
367
|
],
|
319
368
|
'classname': [
|
320
|
-
(r'[a-zA-Z_]
|
369
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop'),
|
321
370
|
# template specification
|
322
371
|
(r'\s*(?=>)', Text, '#pop'),
|
323
372
|
],
|
@@ -329,7 +378,7 @@ class NesCLexer(CLexer):
|
|
329
378
|
For `nesC <https://github.com/tinyos/nesc>`_ source code with preprocessor
|
330
379
|
directives.
|
331
380
|
|
332
|
-
|
381
|
+
.. versionadded:: 2.0
|
333
382
|
"""
|
334
383
|
name = 'nesC'
|
335
384
|
aliases = ['nesc']
|
@@ -354,7 +403,7 @@ class ClayLexer(RegexLexer):
|
|
354
403
|
"""
|
355
404
|
For `Clay <http://claylabs.com/clay/>`_ source.
|
356
405
|
|
357
|
-
|
406
|
+
.. versionadded:: 2.0
|
358
407
|
"""
|
359
408
|
name = 'Clay'
|
360
409
|
filenames = ['*.clay']
|
@@ -405,7 +454,7 @@ class DLexer(RegexLexer):
|
|
405
454
|
"""
|
406
455
|
For D source.
|
407
456
|
|
408
|
-
|
457
|
+
.. versionadded:: 1.2
|
409
458
|
"""
|
410
459
|
name = 'D'
|
411
460
|
filenames = ['*.d', '*.di']
|
@@ -425,20 +474,23 @@ class DLexer(RegexLexer):
|
|
425
474
|
(r'(abstract|alias|align|asm|assert|auto|body|break|case|cast'
|
426
475
|
r'|catch|class|const|continue|debug|default|delegate|delete'
|
427
476
|
r'|deprecated|do|else|enum|export|extern|finally|final'
|
428
|
-
r'|foreach_reverse|foreach|for|function|goto|if|import
|
429
|
-
r'|interface|invariant|in|is|lazy|mixin|module|new|nothrow|out'
|
477
|
+
r'|foreach_reverse|foreach|for|function|goto|if|immutable|import'
|
478
|
+
r'|interface|invariant|inout|in|is|lazy|mixin|module|new|nothrow|out'
|
430
479
|
r'|override|package|pragma|private|protected|public|pure|ref|return'
|
431
|
-
r'|scope|static|struct|super|switch|synchronized|template|this'
|
480
|
+
r'|scope|shared|static|struct|super|switch|synchronized|template|this'
|
432
481
|
r'|throw|try|typedef|typeid|typeof|union|unittest|version|volatile'
|
433
|
-
r'|while|with|__traits)\b', Keyword
|
482
|
+
r'|while|with|__gshared|__traits|__vector|__parameters)\b', Keyword
|
434
483
|
),
|
435
484
|
(r'(bool|byte|cdouble|cent|cfloat|char|creal|dchar|double|float'
|
436
485
|
r'|idouble|ifloat|int|ireal|long|real|short|ubyte|ucent|uint|ulong'
|
437
486
|
r'|ushort|void|wchar)\b', Keyword.Type
|
438
487
|
),
|
439
488
|
(r'(false|true|null)\b', Keyword.Constant),
|
489
|
+
(r'(__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__'
|
490
|
+
r'|__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\b',
|
491
|
+
Keyword.Pseudo),
|
440
492
|
(r'macro\b', Keyword.Reserved),
|
441
|
-
(r'(string|wstring|dstring)\b', Name.Builtin),
|
493
|
+
(r'(string|wstring|dstring|size_t|ptrdiff_t)\b', Name.Builtin),
|
442
494
|
# FloatLiteral
|
443
495
|
# -- HexFloat
|
444
496
|
(r'0[xX]([0-9a-fA-F_]*\.[0-9a-fA-F_]+|[0-9a-fA-F_]+)'
|
@@ -449,7 +501,7 @@ class DLexer(RegexLexer):
|
|
449
501
|
(r'\.(0|[1-9][0-9_]*)([eE][+\-]?[0-9_]+)?[fFL]?[i]?', Number.Float),
|
450
502
|
# IntegerLiteral
|
451
503
|
# -- Binary
|
452
|
-
(r'0[Bb][01_]+', Number),
|
504
|
+
(r'0[Bb][01_]+', Number.Bin),
|
453
505
|
# -- Octal
|
454
506
|
(r'0[0-7_]+', Number.Oct),
|
455
507
|
# -- Hexadecimal
|
@@ -484,6 +536,8 @@ class DLexer(RegexLexer):
|
|
484
536
|
(r'q"(.).*?\1"', String),
|
485
537
|
# -- TokenString
|
486
538
|
(r'q{', String, 'token_string'),
|
539
|
+
# Attributes
|
540
|
+
(r'@([a-zA-Z_]\w*)?', Name.Decorator),
|
487
541
|
# Tokens
|
488
542
|
(r'(~=|\^=|%=|\*=|==|!>=|!<=|!<>=|!<>|!<|!>|!=|>>>=|>>>|>>=|>>|>='
|
489
543
|
r'|<>=|<>|<<=|<<|<=|\+\+|\+=|--|-=|\|\||\|=|&&|&=|\.\.\.|\.\.|/=)'
|
@@ -491,6 +545,8 @@ class DLexer(RegexLexer):
|
|
491
545
|
),
|
492
546
|
# Identifier
|
493
547
|
(r'[a-zA-Z_]\w*', Name),
|
548
|
+
# Line
|
549
|
+
(r'#line\s.*\n', Comment.Special),
|
494
550
|
],
|
495
551
|
'nested_comment': [
|
496
552
|
(r'[^+/]+', Comment.Multiline),
|
@@ -835,7 +891,7 @@ class DelphiLexer(Lexer):
|
|
835
891
|
if get_bool_opt(options, 'freepascal', True):
|
836
892
|
self.keywords.update(self.FREE_PASCAL_KEYWORDS)
|
837
893
|
self.builtins = set()
|
838
|
-
for unit in get_list_opt(options, 'units', self.BUILTIN_UNITS
|
894
|
+
for unit in get_list_opt(options, 'units', list(self.BUILTIN_UNITS)):
|
839
895
|
self.builtins.update(self.BUILTIN_UNITS[unit])
|
840
896
|
|
841
897
|
def get_tokens_unprocessed(self, text):
|
@@ -1039,7 +1095,7 @@ class DylanLexer(RegexLexer):
|
|
1039
1095
|
"""
|
1040
1096
|
For the `Dylan <http://www.opendylan.org/>`_ language.
|
1041
1097
|
|
1042
|
-
|
1098
|
+
.. versionadded:: 0.7
|
1043
1099
|
"""
|
1044
1100
|
|
1045
1101
|
name = 'Dylan'
|
@@ -1105,7 +1161,7 @@ class DylanLexer(RegexLexer):
|
|
1105
1161
|
'type-error-value', 'type-for-copy', 'type-union', 'union', 'values',
|
1106
1162
|
'vector', 'zero?'])
|
1107
1163
|
|
1108
|
-
valid_name = '\\\\?[a-
|
1164
|
+
valid_name = '\\\\?[a-z0-9' + re.escape('!&*<>|^$%@_-+~?/=') + ']+'
|
1109
1165
|
|
1110
1166
|
def get_tokens_unprocessed(self, text):
|
1111
1167
|
for index, token, value in RegexLexer.get_tokens_unprocessed(self, text):
|
@@ -1134,7 +1190,7 @@ class DylanLexer(RegexLexer):
|
|
1134
1190
|
(r'//.*?\n', Comment.Single),
|
1135
1191
|
|
1136
1192
|
# lid header
|
1137
|
-
(r'([
|
1193
|
+
(r'([a-z0-9-]+)(:)([ \t]*)(.*(?:\n[ \t].+)*)',
|
1138
1194
|
bygroups(Name.Attribute, Operator, Text, String)),
|
1139
1195
|
|
1140
1196
|
('', Text, 'code') # no header match, switch to code
|
@@ -1151,10 +1207,10 @@ class DylanLexer(RegexLexer):
|
|
1151
1207
|
|
1152
1208
|
# strings and characters
|
1153
1209
|
(r'"', String, 'string'),
|
1154
|
-
(r"'(\\.|\\[0-7]{1,3}|\\x[a-
|
1210
|
+
(r"'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\\'\n])'", String.Char),
|
1155
1211
|
|
1156
1212
|
# binary integer
|
1157
|
-
(r'#[bB][01]+', Number),
|
1213
|
+
(r'#[bB][01]+', Number.Bin),
|
1158
1214
|
|
1159
1215
|
# octal integer
|
1160
1216
|
(r'#[oO][0-7]+', Number.Oct),
|
@@ -1166,7 +1222,7 @@ class DylanLexer(RegexLexer):
|
|
1166
1222
|
(r'[-+]?\d+', Number.Integer),
|
1167
1223
|
|
1168
1224
|
# hex integer
|
1169
|
-
(r'#[xX][0-9a-
|
1225
|
+
(r'#[xX][0-9a-f]+', Number.Hex),
|
1170
1226
|
|
1171
1227
|
# Macro parameters
|
1172
1228
|
(r'(\?' + valid_name + ')(:)'
|
@@ -1190,7 +1246,7 @@ class DylanLexer(RegexLexer):
|
|
1190
1246
|
(r'#"', String.Symbol, 'keyword'),
|
1191
1247
|
|
1192
1248
|
# #rest, #key, #all-keys, etc.
|
1193
|
-
(r'#[a-
|
1249
|
+
(r'#[a-z0-9-]+', Keyword),
|
1194
1250
|
|
1195
1251
|
# required-init-keyword: style keywords.
|
1196
1252
|
(valid_name + ':', Keyword),
|
@@ -1219,7 +1275,7 @@ class DylanLexer(RegexLexer):
|
|
1219
1275
|
],
|
1220
1276
|
'string': [
|
1221
1277
|
(r'"', String, '#pop'),
|
1222
|
-
(r'\\([\\abfnrtv"\']|x[a-
|
1278
|
+
(r'\\([\\abfnrtv"\']|x[a-f0-9]{2,4}|[0-7]{1,3})', String.Escape),
|
1223
1279
|
(r'[^\\"\n]+', String), # all other characters
|
1224
1280
|
(r'\\\n', String), # line continuation
|
1225
1281
|
(r'\\', String), # stray backslash
|
@@ -1231,7 +1287,7 @@ class DylanLidLexer(RegexLexer):
|
|
1231
1287
|
"""
|
1232
1288
|
For Dylan LID (Library Interchange Definition) files.
|
1233
1289
|
|
1234
|
-
|
1290
|
+
.. versionadded:: 1.6
|
1235
1291
|
"""
|
1236
1292
|
|
1237
1293
|
name = 'DylanLID'
|
@@ -1269,7 +1325,7 @@ class DylanConsoleLexer(Lexer):
|
|
1269
1325
|
|
1270
1326
|
This is based on a copy of the RubyConsoleLexer.
|
1271
1327
|
|
1272
|
-
|
1328
|
+
.. versionadded:: 1.6
|
1273
1329
|
"""
|
1274
1330
|
name = 'Dylan session'
|
1275
1331
|
aliases = ['dylan-console', 'dylan-repl']
|
@@ -1321,9 +1377,9 @@ def objective(baselexer):
|
|
1321
1377
|
|
1322
1378
|
# Matches [ <ws>? identifier <ws> ( identifier <ws>? ] | identifier? : )
|
1323
1379
|
# (note the identifier is *optional* when there is a ':'!)
|
1324
|
-
_oc_message = re.compile(r'\[\s*[a-zA-Z_]
|
1325
|
-
r'(?:[a-zA-Z_]
|
1326
|
-
r'(?:[a-zA-Z_]
|
1380
|
+
_oc_message = re.compile(r'\[\s*[a-zA-Z_]\w*\s+'
|
1381
|
+
r'(?:[a-zA-Z_]\w*\s*\]|'
|
1382
|
+
r'(?:[a-zA-Z_]\w*)?:)')
|
1327
1383
|
|
1328
1384
|
class GeneratedObjectiveCVariant(baselexer):
|
1329
1385
|
"""
|
@@ -1333,20 +1389,30 @@ def objective(baselexer):
|
|
1333
1389
|
tokens = {
|
1334
1390
|
'statements': [
|
1335
1391
|
(r'@"', String, 'string'),
|
1336
|
-
(r
|
1337
|
-
|
1392
|
+
(r'@(YES|NO)', Number),
|
1393
|
+
(r"@'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'", String.Char),
|
1338
1394
|
(r'@(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
|
1339
1395
|
(r'@(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
|
1340
1396
|
(r'@0x[0-9a-fA-F]+[Ll]?', Number.Hex),
|
1341
1397
|
(r'@0[0-7]+[Ll]?', Number.Oct),
|
1342
1398
|
(r'@\d+[Ll]?', Number.Integer),
|
1343
|
-
(r'(
|
1344
|
-
|
1345
|
-
|
1346
|
-
(r'(
|
1399
|
+
(r'@\(', Literal, 'literal_number'),
|
1400
|
+
(r'@\[', Literal, 'literal_array'),
|
1401
|
+
(r'@\{', Literal, 'literal_dictionary'),
|
1402
|
+
(r'(@selector|@private|@protected|@public|@encode|'
|
1403
|
+
r'@synchronized|@try|@throw|@catch|@finally|@end|@property|@synthesize|'
|
1404
|
+
r'__bridge|__bridge_transfer|__autoreleasing|__block|__weak|__strong|'
|
1405
|
+
r'weak|strong|copy|retain|assign|unsafe_unretained|atomic|nonatomic|'
|
1406
|
+
r'readonly|readwrite|setter|getter|typeof|in|out|inout|release|class|'
|
1407
|
+
r'@dynamic|@optional|@required|@autoreleasepool)\b', Keyword),
|
1408
|
+
(r'(id|instancetype|Class|IMP|SEL|BOOL|IBOutlet|IBAction|unichar)\b',
|
1347
1409
|
Keyword.Type),
|
1348
1410
|
(r'@(true|false|YES|NO)\n', Name.Builtin),
|
1349
|
-
(r'(YES|NO|nil)\b', Name.Builtin),
|
1411
|
+
(r'(YES|NO|nil|self|super)\b', Name.Builtin),
|
1412
|
+
# Carbon types
|
1413
|
+
(r'(Boolean|UInt8|SInt8|UInt16|SInt16|UInt32|SInt32)\b', Keyword.Type),
|
1414
|
+
# Carbon built-ins
|
1415
|
+
(r'(TRUE|FALSE)\b', Name.Builtin),
|
1350
1416
|
(r'(@interface|@implementation)(\s+)', bygroups(Keyword, Text),
|
1351
1417
|
('#pop', 'oc_classname')),
|
1352
1418
|
(r'(@class|@protocol)(\s+)', bygroups(Keyword, Text),
|
@@ -1357,26 +1423,41 @@ def objective(baselexer):
|
|
1357
1423
|
],
|
1358
1424
|
'oc_classname' : [
|
1359
1425
|
# interface definition that inherits
|
1360
|
-
('([a-zA-Z$_][
|
1426
|
+
('([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?(\s*)({)',
|
1427
|
+
bygroups(Name.Class, Text, Name.Class, Text, Punctuation),
|
1428
|
+
('#pop', 'oc_ivars')),
|
1429
|
+
('([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?',
|
1361
1430
|
bygroups(Name.Class, Text, Name.Class), '#pop'),
|
1362
1431
|
# interface definition for a category
|
1363
|
-
('([a-zA-Z$_][
|
1432
|
+
('([a-zA-Z$_][\w$]*)(\s*)(\([a-zA-Z$_][\w$]*\))(\s*)({)',
|
1433
|
+
bygroups(Name.Class, Text, Name.Label, Text, Punctuation),
|
1434
|
+
('#pop', 'oc_ivars')),
|
1435
|
+
('([a-zA-Z$_][\w$]*)(\s*)(\([a-zA-Z$_][\w$]*\))',
|
1364
1436
|
bygroups(Name.Class, Text, Name.Label), '#pop'),
|
1365
1437
|
# simple interface / implementation
|
1366
|
-
('([a-zA-Z$_][
|
1438
|
+
('([a-zA-Z$_][\w$]*)(\s*)({)',
|
1439
|
+
bygroups(Name.Class, Text, Punctuation), ('#pop', 'oc_ivars')),
|
1440
|
+
('([a-zA-Z$_][\w$]*)', Name.Class, '#pop')
|
1367
1441
|
],
|
1368
1442
|
'oc_forward_classname' : [
|
1369
|
-
('([a-zA-Z$_][
|
1443
|
+
('([a-zA-Z$_][\w$]*)(\s*,\s*)',
|
1370
1444
|
bygroups(Name.Class, Text), 'oc_forward_classname'),
|
1371
|
-
('([a-zA-Z$_][
|
1445
|
+
('([a-zA-Z$_][\w$]*)(\s*;?)',
|
1372
1446
|
bygroups(Name.Class, Text), '#pop')
|
1373
1447
|
],
|
1448
|
+
'oc_ivars' : [
|
1449
|
+
include('whitespace'),
|
1450
|
+
include('statements'),
|
1451
|
+
(';', Punctuation),
|
1452
|
+
('{', Punctuation, '#push'),
|
1453
|
+
('}', Punctuation, '#pop'),
|
1454
|
+
],
|
1374
1455
|
'root': [
|
1375
1456
|
# methods
|
1376
1457
|
(r'^([-+])(\s*)' # method marker
|
1377
1458
|
r'(\(.*?\))?(\s*)' # return type
|
1378
|
-
r'([a-zA-Z$_][
|
1379
|
-
bygroups(
|
1459
|
+
r'([a-zA-Z$_][\w$]*:?)', # begin of method name
|
1460
|
+
bygroups(Punctuation, Text, using(this),
|
1380
1461
|
Text, Name.Function),
|
1381
1462
|
'method'),
|
1382
1463
|
inherit,
|
@@ -1387,13 +1468,37 @@ def objective(baselexer):
|
|
1387
1468
|
# discussion in Issue 789
|
1388
1469
|
(r',', Punctuation),
|
1389
1470
|
(r'\.\.\.', Punctuation),
|
1390
|
-
(r'(\(.*?\))([a-zA-Z$_][
|
1391
|
-
|
1392
|
-
(r'[a-zA-Z$_][
|
1471
|
+
(r'(\(.*?\))(\s*)([a-zA-Z$_][\w$]*)',
|
1472
|
+
bygroups(using(this), Text, Name.Variable)),
|
1473
|
+
(r'[a-zA-Z$_][\w$]*:', Name.Function),
|
1393
1474
|
(';', Punctuation, '#pop'),
|
1394
1475
|
('{', Punctuation, 'function'),
|
1395
1476
|
('', Text, '#pop'),
|
1396
1477
|
],
|
1478
|
+
'literal_number': [
|
1479
|
+
(r'\(', Punctuation, 'literal_number_inner'),
|
1480
|
+
(r'\)', Literal, '#pop'),
|
1481
|
+
include('statement'),
|
1482
|
+
],
|
1483
|
+
'literal_number_inner': [
|
1484
|
+
(r'\(', Punctuation, '#push'),
|
1485
|
+
(r'\)', Punctuation, '#pop'),
|
1486
|
+
include('statement'),
|
1487
|
+
],
|
1488
|
+
'literal_array': [
|
1489
|
+
(r'\[', Punctuation, 'literal_array_inner'),
|
1490
|
+
(r'\]', Literal, '#pop'),
|
1491
|
+
include('statement'),
|
1492
|
+
],
|
1493
|
+
'literal_array_inner': [
|
1494
|
+
(r'\[', Punctuation, '#push'),
|
1495
|
+
(r'\]', Punctuation, '#pop'),
|
1496
|
+
include('statement'),
|
1497
|
+
],
|
1498
|
+
'literal_dictionary': [
|
1499
|
+
(r'\}', Literal, '#pop'),
|
1500
|
+
include('statement'),
|
1501
|
+
],
|
1397
1502
|
}
|
1398
1503
|
|
1399
1504
|
def analyse_text(text):
|
@@ -1401,10 +1506,25 @@ def objective(baselexer):
|
|
1401
1506
|
return 1.0
|
1402
1507
|
elif '@"' in text: # strings
|
1403
1508
|
return 0.8
|
1509
|
+
elif re.search('@[0-9]+', text):
|
1510
|
+
return 0.7
|
1404
1511
|
elif _oc_message.search(text):
|
1405
1512
|
return 0.8
|
1406
1513
|
return 0
|
1407
1514
|
|
1515
|
+
def get_tokens_unprocessed(self, text):
|
1516
|
+
from pygments.lexers._cocoabuiltins import COCOA_INTERFACES, \
|
1517
|
+
COCOA_PROTOCOLS, COCOA_PRIMITIVES
|
1518
|
+
|
1519
|
+
for index, token, value in \
|
1520
|
+
baselexer.get_tokens_unprocessed(self, text):
|
1521
|
+
if token is Name or token is Name.Class:
|
1522
|
+
if value in COCOA_INTERFACES or value in COCOA_PROTOCOLS \
|
1523
|
+
or value in COCOA_PRIMITIVES:
|
1524
|
+
token = Name.Builtin.Pseudo
|
1525
|
+
|
1526
|
+
yield index, token, value
|
1527
|
+
|
1408
1528
|
return GeneratedObjectiveCVariant
|
1409
1529
|
|
1410
1530
|
|
@@ -1436,7 +1556,7 @@ class FortranLexer(RegexLexer):
|
|
1436
1556
|
"""
|
1437
1557
|
Lexer for FORTRAN 90 code.
|
1438
1558
|
|
1439
|
-
|
1559
|
+
.. versionadded:: 0.10
|
1440
1560
|
"""
|
1441
1561
|
name = 'Fortran'
|
1442
1562
|
aliases = ['fortran']
|
@@ -1456,7 +1576,7 @@ class FortranLexer(RegexLexer):
|
|
1456
1576
|
(r'!.*\n', Comment),
|
1457
1577
|
include('strings'),
|
1458
1578
|
include('core'),
|
1459
|
-
(r'[a-z]
|
1579
|
+
(r'[a-z]\w*', Name.Variable),
|
1460
1580
|
include('nums'),
|
1461
1581
|
(r'[\s]+', Text),
|
1462
1582
|
],
|
@@ -1491,7 +1611,7 @@ class FortranLexer(RegexLexer):
|
|
1491
1611
|
|
1492
1612
|
(r'(::)', Keyword.Declaration),
|
1493
1613
|
|
1494
|
-
(r'[(),:&%;]', Punctuation),
|
1614
|
+
(r'[()\[\],:&%;]', Punctuation),
|
1495
1615
|
|
1496
1616
|
# Intrinsics
|
1497
1617
|
(r'\b(Abort|Abs|Access|AChar|ACos|AdjustL|AdjustR|AImag|AInt|Alarm|'
|
@@ -1540,9 +1660,9 @@ class FortranLexer(RegexLexer):
|
|
1540
1660
|
],
|
1541
1661
|
|
1542
1662
|
'nums': [
|
1543
|
-
(r'\d+(?![.
|
1544
|
-
(r'[+-]?\d*\.\d+([
|
1545
|
-
(r'[+-]?\d+\.\d*([
|
1663
|
+
(r'\d+(?![.e])(_[a-z]\w+)?', Number.Integer),
|
1664
|
+
(r'[+-]?\d*\.\d+(e[-+]?\d+)?(_[a-z]\w+)?', Number.Float),
|
1665
|
+
(r'[+-]?\d+\.\d*(e[-+]?\d+)?(_[a-z]\w+)?', Number.Float),
|
1546
1666
|
],
|
1547
1667
|
}
|
1548
1668
|
|
@@ -1551,7 +1671,7 @@ class GLShaderLexer(RegexLexer):
|
|
1551
1671
|
"""
|
1552
1672
|
GLSL (OpenGL Shader) lexer.
|
1553
1673
|
|
1554
|
-
|
1674
|
+
.. versionadded:: 1.1
|
1555
1675
|
"""
|
1556
1676
|
name = 'GLSL'
|
1557
1677
|
aliases = ['glsl']
|
@@ -1620,7 +1740,7 @@ class PrologLexer(RegexLexer):
|
|
1620
1740
|
(r'[\[\](){}|.,;!]', Punctuation),
|
1621
1741
|
(r':-|-->', Punctuation),
|
1622
1742
|
(r'"(?:\\x[0-9a-fA-F]+\\|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|'
|
1623
|
-
r'\\[0-7]+\\|\\[\
|
1743
|
+
r'\\[0-7]+\\|\\["\nabcefnrstv]|[^\\"])*"', String.Double),
|
1624
1744
|
(r"'(?:''|[^'])*'", String.Atom), # quoted atom
|
1625
1745
|
# Needs to not be followed by an atom.
|
1626
1746
|
#(r'=(?=\s|[a-zA-Z\[])', Operator),
|
@@ -1631,20 +1751,20 @@ class PrologLexer(RegexLexer):
|
|
1631
1751
|
(r'_', Keyword), # The don't-care variable
|
1632
1752
|
(r'([a-z]+)(:)', bygroups(Name.Namespace, Punctuation)),
|
1633
1753
|
(u'([a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
|
1634
|
-
u'[
|
1754
|
+
u'[\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*)'
|
1635
1755
|
u'(\\s*)(:-|-->)',
|
1636
1756
|
bygroups(Name.Function, Text, Operator)), # function defn
|
1637
1757
|
(u'([a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
|
1638
|
-
u'[
|
1758
|
+
u'[\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*)'
|
1639
1759
|
u'(\\s*)(\\()',
|
1640
1760
|
bygroups(Name.Function, Text, Punctuation)),
|
1641
1761
|
(u'[a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
|
1642
|
-
u'[
|
1762
|
+
u'[\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*',
|
1643
1763
|
String.Atom), # atom, characters
|
1644
1764
|
# This one includes !
|
1645
1765
|
(u'[#&*+\\-./:<=>?@\\\\^~\u00a1-\u00bf\u2010-\u303f]+',
|
1646
1766
|
String.Atom), # atom, graphics
|
1647
|
-
(r'[A-Z_]
|
1767
|
+
(r'[A-Z_]\w*', Name.Variable),
|
1648
1768
|
(u'\\s+|[\u2000-\u200f\ufff0-\ufffe\uffef]', Text),
|
1649
1769
|
],
|
1650
1770
|
'nested-comment': [
|
@@ -1663,7 +1783,7 @@ class CythonLexer(RegexLexer):
|
|
1663
1783
|
"""
|
1664
1784
|
For Pyrex and `Cython <http://cython.org>`_ source code.
|
1665
1785
|
|
1666
|
-
|
1786
|
+
.. versionadded:: 1.1
|
1667
1787
|
"""
|
1668
1788
|
|
1669
1789
|
name = 'Cython'
|
@@ -1750,40 +1870,40 @@ class CythonLexer(RegexLexer):
|
|
1750
1870
|
('`.*?`', String.Backtick),
|
1751
1871
|
],
|
1752
1872
|
'name': [
|
1753
|
-
(r'
|
1754
|
-
('[a-zA-Z_]
|
1873
|
+
(r'@\w+', Name.Decorator),
|
1874
|
+
('[a-zA-Z_]\w*', Name),
|
1755
1875
|
],
|
1756
1876
|
'funcname': [
|
1757
|
-
('[a-zA-Z_]
|
1877
|
+
('[a-zA-Z_]\w*', Name.Function, '#pop')
|
1758
1878
|
],
|
1759
1879
|
'cdef': [
|
1760
1880
|
(r'(public|readonly|extern|api|inline)\b', Keyword.Reserved),
|
1761
1881
|
(r'(struct|enum|union|class)\b', Keyword),
|
1762
|
-
(r'([a-zA-Z_]
|
1882
|
+
(r'([a-zA-Z_]\w*)(\s*)(?=[(:#=]|$)',
|
1763
1883
|
bygroups(Name.Function, Text), '#pop'),
|
1764
|
-
(r'([a-zA-Z_]
|
1884
|
+
(r'([a-zA-Z_]\w*)(\s*)(,)',
|
1765
1885
|
bygroups(Name.Function, Text, Punctuation)),
|
1766
1886
|
(r'from\b', Keyword, '#pop'),
|
1767
1887
|
(r'as\b', Keyword),
|
1768
1888
|
(r':', Punctuation, '#pop'),
|
1769
1889
|
(r'(?=["\'])', Text, '#pop'),
|
1770
|
-
(r'[a-zA-Z_]
|
1890
|
+
(r'[a-zA-Z_]\w*', Keyword.Type),
|
1771
1891
|
(r'.', Text),
|
1772
1892
|
],
|
1773
1893
|
'classname': [
|
1774
|
-
('[a-zA-Z_]
|
1894
|
+
('[a-zA-Z_]\w*', Name.Class, '#pop')
|
1775
1895
|
],
|
1776
1896
|
'import': [
|
1777
1897
|
(r'(\s+)(as)(\s+)', bygroups(Text, Keyword, Text)),
|
1778
|
-
(r'[a-zA-Z_][
|
1898
|
+
(r'[a-zA-Z_][\w.]*', Name.Namespace),
|
1779
1899
|
(r'(\s*)(,)(\s*)', bygroups(Text, Operator, Text)),
|
1780
|
-
(
|
1900
|
+
default('#pop') # all else: go back
|
1781
1901
|
],
|
1782
1902
|
'fromimport': [
|
1783
1903
|
(r'(\s+)(c?import)\b', bygroups(Text, Keyword), '#pop'),
|
1784
|
-
(r'[a-zA-Z_.][
|
1904
|
+
(r'[a-zA-Z_.][\w.]*', Name.Namespace),
|
1785
1905
|
# ``cdef foo from "header"``, or ``for foo from 0 < i < 10``
|
1786
|
-
(
|
1906
|
+
default('#pop'),
|
1787
1907
|
],
|
1788
1908
|
'stringescape': [
|
1789
1909
|
(r'\\([\\abfnrtv"\']|\n|N{.*?}|u[a-fA-F0-9]{4}|'
|
@@ -1829,7 +1949,7 @@ class ValaLexer(RegexLexer):
|
|
1829
1949
|
"""
|
1830
1950
|
For Vala source code with preprocessor directives.
|
1831
1951
|
|
1832
|
-
|
1952
|
+
.. versionadded:: 1.1
|
1833
1953
|
"""
|
1834
1954
|
name = 'Vala'
|
1835
1955
|
aliases = ['vala', 'vapi']
|
@@ -1873,14 +1993,14 @@ class ValaLexer(RegexLexer):
|
|
1873
1993
|
'namespace'),
|
1874
1994
|
(r'(class|errordomain|interface|struct)(\s+)',
|
1875
1995
|
bygroups(Keyword.Declaration, Text), 'class'),
|
1876
|
-
(r'(\.)([a-zA-Z_]
|
1996
|
+
(r'(\.)([a-zA-Z_]\w*)',
|
1877
1997
|
bygroups(Operator, Name.Attribute)),
|
1878
1998
|
# void is an actual keyword, others are in glib-2.0.vapi
|
1879
1999
|
(r'(void|bool|char|double|float|int|int8|int16|int32|int64|long|'
|
1880
2000
|
r'short|size_t|ssize_t|string|time_t|uchar|uint|uint8|uint16|'
|
1881
2001
|
r'uint32|uint64|ulong|unichar|ushort)\b', Keyword.Type),
|
1882
2002
|
(r'(true|false|null)\b', Name.Builtin),
|
1883
|
-
('[a-zA-Z_]
|
2003
|
+
('[a-zA-Z_]\w*', Name),
|
1884
2004
|
],
|
1885
2005
|
'root': [
|
1886
2006
|
include('whitespace'),
|
@@ -1906,10 +2026,10 @@ class ValaLexer(RegexLexer):
|
|
1906
2026
|
(r'.*?\n', Comment),
|
1907
2027
|
],
|
1908
2028
|
'class': [
|
1909
|
-
(r'[a-zA-Z_]
|
2029
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop')
|
1910
2030
|
],
|
1911
2031
|
'namespace': [
|
1912
|
-
(r'[a-zA-Z_][
|
2032
|
+
(r'[a-zA-Z_][\w.]*', Name.Namespace, '#pop')
|
1913
2033
|
],
|
1914
2034
|
}
|
1915
2035
|
|
@@ -1918,7 +2038,7 @@ class OocLexer(RegexLexer):
|
|
1918
2038
|
"""
|
1919
2039
|
For `Ooc <http://ooc-lang.org/>`_ source code
|
1920
2040
|
|
1921
|
-
|
2041
|
+
.. versionadded:: 1.2
|
1922
2042
|
"""
|
1923
2043
|
name = 'Ooc'
|
1924
2044
|
aliases = ['ooc']
|
@@ -1933,9 +2053,9 @@ class OocLexer(RegexLexer):
|
|
1933
2053
|
r'while|do|switch|case|as|in|version|return|true|false|null)\b',
|
1934
2054
|
Keyword),
|
1935
2055
|
(r'include\b', Keyword, 'include'),
|
1936
|
-
(r'(cover)([ \t]+)(from)([ \t]+)(
|
2056
|
+
(r'(cover)([ \t]+)(from)([ \t]+)(\w+[*@]?)',
|
1937
2057
|
bygroups(Keyword, Text, Keyword, Text, Name.Class)),
|
1938
|
-
(r'(func)((?:[ \t]|\\\n)+)(~[a-z_]
|
2058
|
+
(r'(func)((?:[ \t]|\\\n)+)(~[a-z_]\w*)',
|
1939
2059
|
bygroups(Keyword, Text, Name.Function)),
|
1940
2060
|
(r'\bfunc\b', Keyword),
|
1941
2061
|
# Note: %= and ^= not listed on http://ooc-lang.org/syntax
|
@@ -1946,18 +2066,18 @@ class OocLexer(RegexLexer):
|
|
1946
2066
|
(r'(\.)([ \t]*)([a-z]\w*)', bygroups(Operator, Text,
|
1947
2067
|
Name.Function)),
|
1948
2068
|
(r'[A-Z][A-Z0-9_]+', Name.Constant),
|
1949
|
-
(r'[A-Z]
|
2069
|
+
(r'[A-Z]\w*([@*]|\[[ \t]*\])?', Name.Class),
|
1950
2070
|
|
1951
|
-
(r'([a-z]
|
2071
|
+
(r'([a-z]\w*(?:~[a-z]\w*)?)((?:[ \t]|\\\n)*)(?=\()',
|
1952
2072
|
bygroups(Name.Function, Text)),
|
1953
|
-
(r'[a-z]
|
2073
|
+
(r'[a-z]\w*', Name.Variable),
|
1954
2074
|
|
1955
2075
|
# : introduces types
|
1956
2076
|
(r'[:(){}\[\];,]', Punctuation),
|
1957
2077
|
|
1958
2078
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
1959
2079
|
(r'0c[0-9]+', Number.Oct),
|
1960
|
-
(r'0b[01]+', Number.
|
2080
|
+
(r'0b[01]+', Number.Bin),
|
1961
2081
|
(r'[0-9_]\.[0-9_]*(?!\.)', Number.Float),
|
1962
2082
|
(r'[0-9_]+', Number.Decimal),
|
1963
2083
|
|
@@ -1989,6 +2109,8 @@ class GoLexer(RegexLexer):
|
|
1989
2109
|
aliases = ['go']
|
1990
2110
|
mimetypes = ['text/x-gosrc']
|
1991
2111
|
|
2112
|
+
flags = re.MULTILINE | re.UNICODE
|
2113
|
+
|
1992
2114
|
tokens = {
|
1993
2115
|
'root': [
|
1994
2116
|
(r'\n', Text),
|
@@ -2048,7 +2170,7 @@ class GoLexer(RegexLexer):
|
|
2048
2170
|
r'|<-|\+\+|--|==|!=|:=|\.\.\.|[+\-*/%&])', Operator),
|
2049
2171
|
(r'[|^<>=!()\[\]{}.,;:]', Punctuation),
|
2050
2172
|
# identifier
|
2051
|
-
(r'[
|
2173
|
+
(r'[^\W\d]\w*', Name.Other),
|
2052
2174
|
]
|
2053
2175
|
}
|
2054
2176
|
|
@@ -2057,7 +2179,7 @@ class FelixLexer(RegexLexer):
|
|
2057
2179
|
"""
|
2058
2180
|
For `Felix <http://www.felix-lang.org>`_ source code.
|
2059
2181
|
|
2060
|
-
|
2182
|
+
.. versionadded:: 1.2
|
2061
2183
|
"""
|
2062
2184
|
|
2063
2185
|
name = 'Felix'
|
@@ -2162,7 +2284,7 @@ class FelixLexer(RegexLexer):
|
|
2162
2284
|
|
2163
2285
|
# IntegerLiteral
|
2164
2286
|
# -- Binary
|
2165
|
-
(r'0[Bb][01_]+%s' % decimal_suffixes, Number),
|
2287
|
+
(r'0[Bb][01_]+%s' % decimal_suffixes, Number.Bin),
|
2166
2288
|
# -- Octal
|
2167
2289
|
(r'0[0-7_]+%s' % decimal_suffixes, Number.Oct),
|
2168
2290
|
# -- Hexadecimal
|
@@ -2250,7 +2372,7 @@ class FelixLexer(RegexLexer):
|
|
2250
2372
|
'modulename': [
|
2251
2373
|
include('whitespace'),
|
2252
2374
|
(r'\[', Punctuation, ('modulename2', 'tvarlist')),
|
2253
|
-
(
|
2375
|
+
default('modulename2'),
|
2254
2376
|
],
|
2255
2377
|
'modulename2': [
|
2256
2378
|
include('whitespace'),
|
@@ -2311,7 +2433,7 @@ class AdaLexer(RegexLexer):
|
|
2311
2433
|
"""
|
2312
2434
|
For Ada source code.
|
2313
2435
|
|
2314
|
-
|
2436
|
+
.. versionadded:: 1.3
|
2315
2437
|
"""
|
2316
2438
|
|
2317
2439
|
name = 'Ada'
|
@@ -2332,7 +2454,7 @@ class AdaLexer(RegexLexer):
|
|
2332
2454
|
(r'task|protected', Keyword.Declaration),
|
2333
2455
|
(r'(subtype)(\s+)', bygroups(Keyword.Declaration, Text)),
|
2334
2456
|
(r'(end)(\s+)', bygroups(Keyword.Reserved, Text), 'end'),
|
2335
|
-
(r'(pragma)(\s+)(
|
2457
|
+
(r'(pragma)(\s+)(\w+)', bygroups(Keyword.Reserved, Text,
|
2336
2458
|
Comment.Preproc)),
|
2337
2459
|
(r'(true|false|null)\b', Keyword.Constant),
|
2338
2460
|
(r'(Address|Byte|Boolean|Character|Controlled|Count|Cursor|'
|
@@ -2375,7 +2497,7 @@ class AdaLexer(RegexLexer):
|
|
2375
2497
|
(r'[0-9_]+', Number.Integer),
|
2376
2498
|
],
|
2377
2499
|
'attribute' : [
|
2378
|
-
(r"(')(
|
2500
|
+
(r"(')(\w+)", bygroups(Punctuation, Name.Attribute)),
|
2379
2501
|
],
|
2380
2502
|
'subprogram' : [
|
2381
2503
|
(r'\(', Punctuation, ('#pop', 'formal_part')),
|
@@ -2386,7 +2508,7 @@ class AdaLexer(RegexLexer):
|
|
2386
2508
|
],
|
2387
2509
|
'end' : [
|
2388
2510
|
('(if|case|record|loop|select)', Keyword.Reserved),
|
2389
|
-
('"[^"]+"|[
|
2511
|
+
('"[^"]+"|[\w.]+', Name.Function),
|
2390
2512
|
('\s+', Text),
|
2391
2513
|
(';', Punctuation, '#pop'),
|
2392
2514
|
],
|
@@ -2411,7 +2533,7 @@ class AdaLexer(RegexLexer):
|
|
2411
2533
|
],
|
2412
2534
|
'import': [
|
2413
2535
|
(r'[a-z0-9_.]+', Name.Namespace, '#pop'),
|
2414
|
-
(
|
2536
|
+
default('#pop'),
|
2415
2537
|
],
|
2416
2538
|
'formal_part' : [
|
2417
2539
|
(r'\)', Punctuation, '#pop'),
|
@@ -2426,7 +2548,7 @@ class AdaLexer(RegexLexer):
|
|
2426
2548
|
('is', Keyword.Reserved, '#pop'),
|
2427
2549
|
(';', Punctuation, '#pop'),
|
2428
2550
|
('\(', Punctuation, 'package_instantiation'),
|
2429
|
-
('([
|
2551
|
+
('([\w.]+)', Name.Class),
|
2430
2552
|
include('root'),
|
2431
2553
|
],
|
2432
2554
|
'package_instantiation': [
|
@@ -2454,7 +2576,7 @@ class Modula2Lexer(RegexLexer):
|
|
2454
2576
|
`gm2ext`
|
2455
2577
|
Also highlight GNU extensions (default: False).
|
2456
2578
|
|
2457
|
-
|
2579
|
+
.. versionadded:: 1.3
|
2458
2580
|
"""
|
2459
2581
|
name = 'Modula-2'
|
2460
2582
|
aliases = ['modula2', 'm2']
|
@@ -2469,10 +2591,10 @@ class Modula2Lexer(RegexLexer):
|
|
2469
2591
|
(r'\s+', Text), # whitespace
|
2470
2592
|
],
|
2471
2593
|
'identifiers': [
|
2472
|
-
(r'([a-zA-Z_\$][
|
2594
|
+
(r'([a-zA-Z_\$][\w\$]*)', Name),
|
2473
2595
|
],
|
2474
2596
|
'numliterals': [
|
2475
|
-
(r'[01]+B', Number.
|
2597
|
+
(r'[01]+B', Number.Bin), # binary number (ObjM2)
|
2476
2598
|
(r'[0-7]+B', Number.Oct), # octal number (PIM + ISO)
|
2477
2599
|
(r'[0-7]+C', Number.Oct), # char code (PIM + ISO)
|
2478
2600
|
(r'[0-9A-F]+C', Number.Hex), # char code (ObjM2)
|
@@ -2636,7 +2758,7 @@ class BlitzMaxLexer(RegexLexer):
|
|
2636
2758
|
"""
|
2637
2759
|
For `BlitzMax <http://blitzbasic.com>`_ source code.
|
2638
2760
|
|
2639
|
-
|
2761
|
+
.. versionadded:: 1.4
|
2640
2762
|
"""
|
2641
2763
|
|
2642
2764
|
name = 'BlitzMax'
|
@@ -2647,9 +2769,9 @@ class BlitzMaxLexer(RegexLexer):
|
|
2647
2769
|
bmax_vopwords = r'\b(Shl|Shr|Sar|Mod)\b'
|
2648
2770
|
bmax_sktypes = r'@{1,2}|[!#$%]'
|
2649
2771
|
bmax_lktypes = r'\b(Int|Byte|Short|Float|Double|Long)\b'
|
2650
|
-
bmax_name = r'[a-z_]
|
2772
|
+
bmax_name = r'[a-z_]\w*'
|
2651
2773
|
bmax_var = (r'(%s)(?:(?:([ \t]*)(%s)|([ \t]*:[ \t]*\b(?:Shl|Shr|Sar|Mod)\b)'
|
2652
|
-
r'|([ \t]*)(
|
2774
|
+
r'|([ \t]*)(:)([ \t]*)(?:%s|(%s)))(?:([ \t]*)(Ptr))?)') % \
|
2653
2775
|
(bmax_name, bmax_sktypes, bmax_lktypes, bmax_name)
|
2654
2776
|
bmax_func = bmax_var + r'?((?:[ \t]|\.\.\n)*)([(])'
|
2655
2777
|
|
@@ -2669,7 +2791,7 @@ class BlitzMaxLexer(RegexLexer):
|
|
2669
2791
|
(r'\.[0-9]*(?!\.)', Number.Float),
|
2670
2792
|
(r'[0-9]+', Number.Integer),
|
2671
2793
|
(r'\$[0-9a-f]+', Number.Hex),
|
2672
|
-
(r'\%[10]+', Number),
|
2794
|
+
(r'\%[10]+', Number.Bin),
|
2673
2795
|
# Other
|
2674
2796
|
(r'(?:(?:(:)?([ \t]*)(:?%s|([+\-*/&|~]))|Or|And|Not|[=<>^]))' %
|
2675
2797
|
(bmax_vopwords), Operator),
|
@@ -2730,7 +2852,7 @@ class BlitzBasicLexer(RegexLexer):
|
|
2730
2852
|
"""
|
2731
2853
|
For `BlitzBasic <http://blitzbasic.com>`_ source code.
|
2732
2854
|
|
2733
|
-
|
2855
|
+
.. versionadded:: 2.0
|
2734
2856
|
"""
|
2735
2857
|
|
2736
2858
|
name = 'BlitzBasic'
|
@@ -2742,7 +2864,7 @@ class BlitzBasicLexer(RegexLexer):
|
|
2742
2864
|
r'Abs|Sgn|Handle|Int|Float|Str|'
|
2743
2865
|
r'First|Last|Before|After)\b')
|
2744
2866
|
bb_sktypes = r'@{1,2}|[#$%]'
|
2745
|
-
bb_name = r'[a-z]
|
2867
|
+
bb_name = r'[a-z]\w*'
|
2746
2868
|
bb_var = (r'(%s)(?:([ \t]*)(%s)|([ \t]*)([.])([ \t]*)(?:(%s)))?') % \
|
2747
2869
|
(bb_name, bb_sktypes, bb_name)
|
2748
2870
|
|
@@ -2760,7 +2882,7 @@ class BlitzBasicLexer(RegexLexer):
|
|
2760
2882
|
(r'\.[0-9]+(?!\.)', Number.Float),
|
2761
2883
|
(r'[0-9]+', Number.Integer),
|
2762
2884
|
(r'\$[0-9a-f]+', Number.Hex),
|
2763
|
-
(r'\%[10]+', Number),
|
2885
|
+
(r'\%[10]+', Number.Bin),
|
2764
2886
|
# Other
|
2765
2887
|
(r'(?:%s|([+\-*/~=<>^]))' % (bb_vopwords), Operator),
|
2766
2888
|
(r'[(),:\[\]\\]', Punctuation),
|
@@ -2812,7 +2934,7 @@ class NimrodLexer(RegexLexer):
|
|
2812
2934
|
"""
|
2813
2935
|
For `Nimrod <http://nimrod-code.org/>`_ source code.
|
2814
2936
|
|
2815
|
-
|
2937
|
+
.. versionadded:: 1.5
|
2816
2938
|
"""
|
2817
2939
|
|
2818
2940
|
name = 'Nimrod'
|
@@ -2887,8 +3009,8 @@ class NimrodLexer(RegexLexer):
|
|
2887
3009
|
# Numbers
|
2888
3010
|
(r'[0-9][0-9_]*(?=([eE.]|\'[fF](32|64)))',
|
2889
3011
|
Number.Float, ('float-suffix', 'float-number')),
|
2890
|
-
(r'0[xX][a-
|
2891
|
-
(r'0[bB][01][01_]*', Number, 'int-suffix'),
|
3012
|
+
(r'0[xX][a-f0-9][a-f0-9_]*', Number.Hex, 'int-suffix'),
|
3013
|
+
(r'0[bB][01][01_]*', Number.Bin, 'int-suffix'),
|
2892
3014
|
(r'0o[0-7][0-7_]*', Number.Oct, 'int-suffix'),
|
2893
3015
|
(r'[0-9][0-9_]*', Number.Integer, 'int-suffix'),
|
2894
3016
|
# Whitespace
|
@@ -2896,7 +3018,7 @@ class NimrodLexer(RegexLexer):
|
|
2896
3018
|
(r'.+$', Error),
|
2897
3019
|
],
|
2898
3020
|
'chars': [
|
2899
|
-
(r'\\([\\abcefnrtvl"\']|x[a-
|
3021
|
+
(r'\\([\\abcefnrtvl"\']|x[a-f0-9]{2}|[0-9]{1,3})', String.Escape),
|
2900
3022
|
(r"'", String.Char, '#pop'),
|
2901
3023
|
(r".", String.Char)
|
2902
3024
|
],
|
@@ -2910,7 +3032,7 @@ class NimrodLexer(RegexLexer):
|
|
2910
3032
|
# newlines are an error (use "nl" state)
|
2911
3033
|
],
|
2912
3034
|
'dqs': [
|
2913
|
-
(r'\\([\\abcefnrtvl"\']|\n|x[a-
|
3035
|
+
(r'\\([\\abcefnrtvl"\']|\n|x[a-f0-9]{2}|[0-9]{1,3})',
|
2914
3036
|
String.Escape),
|
2915
3037
|
(r'"', String, '#pop'),
|
2916
3038
|
include('strings')
|
@@ -2935,16 +3057,16 @@ class NimrodLexer(RegexLexer):
|
|
2935
3057
|
'float-number': [
|
2936
3058
|
(r'\.(?!\.)[0-9_]*', Number.Float),
|
2937
3059
|
(r'[eE][+-]?[0-9][0-9_]*', Number.Float),
|
2938
|
-
(
|
3060
|
+
default('#pop')
|
2939
3061
|
],
|
2940
3062
|
'float-suffix': [
|
2941
3063
|
(r'\'[fF](32|64)', Number.Float),
|
2942
|
-
(
|
3064
|
+
default('#pop')
|
2943
3065
|
],
|
2944
3066
|
'int-suffix': [
|
2945
3067
|
(r'\'[iI](32|64)', Number.Integer.Long),
|
2946
3068
|
(r'\'[iI](8|16)', Number.Integer),
|
2947
|
-
(
|
3069
|
+
default('#pop')
|
2948
3070
|
],
|
2949
3071
|
}
|
2950
3072
|
|
@@ -2953,7 +3075,7 @@ class FantomLexer(RegexLexer):
|
|
2953
3075
|
"""
|
2954
3076
|
For Fantom source code.
|
2955
3077
|
|
2956
|
-
|
3078
|
+
.. versionadded:: 1.5
|
2957
3079
|
"""
|
2958
3080
|
name = 'Fantom'
|
2959
3081
|
aliases = ['fan']
|
@@ -2966,7 +3088,7 @@ class FantomLexer(RegexLexer):
|
|
2966
3088
|
dict (
|
2967
3089
|
pod = r'[\"\w\.]+',
|
2968
3090
|
eos = r'\n|;',
|
2969
|
-
id = r'[a-zA-Z_]
|
3091
|
+
id = r'[a-zA-Z_]\w*',
|
2970
3092
|
# all chars which can be part of type definition. Starts with
|
2971
3093
|
# either letter, or [ (maps), or | (funcs)
|
2972
3094
|
type = r'(?:\[|[a-zA-Z_]|\|)[:\w\[\]\|\->\?]*?',
|
@@ -3050,7 +3172,7 @@ class FantomLexer(RegexLexer):
|
|
3050
3172
|
'inType': [
|
3051
3173
|
(r'[\[\]\|\->:\?]', Punctuation),
|
3052
3174
|
(s(r'$id'), Name.Class),
|
3053
|
-
(
|
3175
|
+
default('#pop'),
|
3054
3176
|
|
3055
3177
|
],
|
3056
3178
|
'root': [
|
@@ -3155,19 +3277,19 @@ class FantomLexer(RegexLexer):
|
|
3155
3277
|
(r'(\")?([\w\.]+)(\")?',
|
3156
3278
|
bygroups(Punctuation, Name.Namespace, Punctuation)), #podname
|
3157
3279
|
(r'::', Punctuation, 'usingClass'),
|
3158
|
-
(
|
3280
|
+
default('#pop')
|
3159
3281
|
],
|
3160
3282
|
'usingClass': [
|
3161
3283
|
(r'[ \t]+', Text), # consume whitespaces
|
3162
3284
|
(r'(as)(\s+)(\w+)',
|
3163
3285
|
bygroups(Keyword.Declaration, Text, Name.Class), '#pop:2'),
|
3164
3286
|
(r'[\w\$]+', Name.Class),
|
3165
|
-
(
|
3287
|
+
default('#pop:2') # jump out to root state
|
3166
3288
|
],
|
3167
3289
|
'facet': [
|
3168
3290
|
(r'\s+', Text),
|
3169
3291
|
(r'{', Punctuation, 'facetFields'),
|
3170
|
-
(
|
3292
|
+
default('#pop')
|
3171
3293
|
],
|
3172
3294
|
'facetFields': [
|
3173
3295
|
include('comments'),
|
@@ -3183,12 +3305,12 @@ class FantomLexer(RegexLexer):
|
|
3183
3305
|
|
3184
3306
|
class RustLexer(RegexLexer):
|
3185
3307
|
"""
|
3186
|
-
Lexer for
|
3308
|
+
Lexer for the Rust programming language (version 0.9).
|
3187
3309
|
|
3188
|
-
|
3310
|
+
.. versionadded:: 1.6
|
3189
3311
|
"""
|
3190
3312
|
name = 'Rust'
|
3191
|
-
filenames = ['*.rs'
|
3313
|
+
filenames = ['*.rs']
|
3192
3314
|
aliases = ['rust']
|
3193
3315
|
mimetypes = ['text/x-rustsrc']
|
3194
3316
|
|
@@ -3197,47 +3319,89 @@ class RustLexer(RegexLexer):
|
|
3197
3319
|
# Whitespace and Comments
|
3198
3320
|
(r'\n', Text),
|
3199
3321
|
(r'\s+', Text),
|
3322
|
+
(r'//[/!](.*?)\n', Comment.Doc),
|
3200
3323
|
(r'//(.*?)\n', Comment.Single),
|
3201
3324
|
(r'/[*](.|\n)*?[*]/', Comment.Multiline),
|
3202
3325
|
|
3203
3326
|
# Keywords
|
3204
|
-
(r'(as|
|
3205
|
-
r'|
|
3206
|
-
r'|
|
3207
|
-
r'|loop|match|
|
3208
|
-
r'|ref|return|static|struct|trait|true|type
|
3209
|
-
r'|
|
3210
|
-
|
3211
|
-
|
3327
|
+
(r'(as|box|break|continue'
|
3328
|
+
r'|do|else|enum|extern'
|
3329
|
+
r'|fn|for|if|impl|in'
|
3330
|
+
r'|loop|match|mut|priv|proc|pub'
|
3331
|
+
r'|ref|return|static|\'static|struct|trait|true|type'
|
3332
|
+
r'|unsafe|while)\b',
|
3333
|
+
Keyword),
|
3334
|
+
(r'(alignof|be|const|offsetof|pure|sizeof|typeof|once|unsized'
|
3335
|
+
r'|yield)\b', Keyword.Reserved),
|
3336
|
+
(r'(mod|use)\b', Keyword.Namespace),
|
3337
|
+
(r'(true|false)\b', Keyword.Constant),
|
3338
|
+
(r'let\b', Keyword.Declaration),
|
3339
|
+
(r'(u8|u16|u32|u64|i8|i16|i32|i64|uint|int|f32|f64'
|
3340
|
+
r'|str|bool)\b', Keyword.Type),
|
3341
|
+
(r'self\b', Name.Builtin.Pseudo),
|
3342
|
+
# Prelude
|
3343
|
+
(r'(Freeze|Pod|Send|Sized|Add|Sub|Mul|Div|Rem|Neg|Not|BitAnd'
|
3344
|
+
r'|BitOr|BitXor|Drop|Shl|Shr|Index|Option|Some|None|Result'
|
3345
|
+
r'|Ok|Err|from_str|range|print|println|Any|AnyOwnExt|AnyRefExt'
|
3346
|
+
r'|AnyMutRefExt|Ascii|AsciiCast|OnwedAsciiCast|AsciiStr'
|
3347
|
+
r'|IntoBytes|Bool|ToCStr|Char|Clone|DeepClone|Eq|ApproxEq'
|
3348
|
+
r'|Ord|TotalEq|Ordering|Less|Equal|Greater|Equiv|Container'
|
3349
|
+
r'|Mutable|Map|MutableMap|Set|MutableSet|Default|FromStr'
|
3350
|
+
r'|Hash|FromIterator|Extendable|Iterator|DoubleEndedIterator'
|
3351
|
+
r'|RandomAccessIterator|CloneableIterator|OrdIterator'
|
3352
|
+
r'|MutableDoubleEndedIterator|ExactSize|Times|Algebraic'
|
3353
|
+
r'|Trigonometric|Exponential|Hyperbolic|Bitwise|BitCount'
|
3354
|
+
r'|Bounded|Integer|Fractional|Real|RealExt|Num|NumCast'
|
3355
|
+
r'|CheckedAdd|CheckedSub|CheckedMul|Orderable|Signed'
|
3356
|
+
r'|Unsigned|Round|Primitive|Int|Float|ToStrRadix'
|
3357
|
+
r'|ToPrimitive|FromPrimitive|GenericPath|Path|PosixPath'
|
3358
|
+
r'|WindowsPath|RawPtr|Buffer|Writer|Reader|Seek'
|
3359
|
+
r'|SendStr|SendStrOwned|SendStrStatic|IntoSendStr|Str'
|
3360
|
+
r'|StrVector|StrSlice|OwnedStr|IterBytes|ToStr|IntoStr'
|
3361
|
+
r'|CopyableTuple|ImmutableTuple|ImmutableTuple\d+'
|
3362
|
+
r'|Tuple\d+|ImmutableEqVector|ImmutableTotalOrdVector'
|
3363
|
+
r'|ImmutableCopyableVector|OwnedVector|OwnedCopyableVector'
|
3364
|
+
r'|OwnedEqVector|MutableVector|MutableTotalOrdVector'
|
3365
|
+
r'|Vector|VectorVector|CopyableVector|ImmutableVector'
|
3366
|
+
r'|Port|Chan|SharedChan|spawn|drop)\b', Name.Builtin),
|
3367
|
+
# Borrowed pointer
|
3368
|
+
(r'(&)(\'[A-Za-z_]\w*)?', bygroups(Operator, Name)),
|
3369
|
+
# Labels
|
3370
|
+
(r'\'[A-Za-z_]\w*:', Name.Label),
|
3212
3371
|
# Character Literal
|
3213
3372
|
(r"""'(\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}"""
|
3214
3373
|
r"""|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|.)'""",
|
3215
3374
|
String.Char),
|
3375
|
+
# Lifetime
|
3376
|
+
(r"""'[a-zA-Z_]\w*""", Name.Label),
|
3216
3377
|
# Binary Literal
|
3217
|
-
(r'
|
3378
|
+
(r'0b[01_]+', Number.Bin, 'number_lit'),
|
3218
3379
|
# Octal Literal
|
3219
|
-
(r'
|
3380
|
+
(r'0o[0-7_]+', Number.Oct, 'number_lit'),
|
3220
3381
|
# Hexadecimal Literal
|
3221
3382
|
(r'0[xX][0-9a-fA-F_]+', Number.Hex, 'number_lit'),
|
3222
3383
|
# Decimal Literal
|
3223
|
-
(r'[0-9][0-9_]*(\.[0-9_]+[eE][+\-]?'
|
3224
|
-
r'[0-9_]
|
3384
|
+
(r'[0-9][0-9_]*(\.[0-9_]+[eE][+\-]?[0-9_]+|'
|
3385
|
+
r'\.[0-9_]*|[eE][+\-]?[0-9_]+)', Number.Float, 'number_lit'),
|
3386
|
+
(r'[0-9][0-9_]*', Number.Integer, 'number_lit'),
|
3225
3387
|
# String Literal
|
3226
3388
|
(r'"', String, 'string'),
|
3389
|
+
(r'r(#*)".*?"\1', String.Raw),
|
3227
3390
|
|
3228
3391
|
# Operators and Punctuation
|
3229
3392
|
(r'[{}()\[\],.;]', Punctuation),
|
3230
3393
|
(r'[+\-*/%&|<>^!~@=:?]', Operator),
|
3231
3394
|
|
3232
3395
|
# Identifier
|
3233
|
-
(r'[a-zA-Z_
|
3396
|
+
(r'[a-zA-Z_]\w*', Name),
|
3234
3397
|
|
3235
3398
|
# Attributes
|
3236
3399
|
(r'#\[', Comment.Preproc, 'attribute['),
|
3237
|
-
(r'#\(', Comment.Preproc, 'attribute('),
|
3238
3400
|
# Macros
|
3239
|
-
(r'[A-Za-z_][A-Za-
|
3240
|
-
|
3401
|
+
(r'([A-Za-z_]\w*)!\s*([A-Za-z_]\w*)?\s*\{',
|
3402
|
+
bygroups(Comment.Preproc, Name), 'macro{'),
|
3403
|
+
(r'([A-Za-z_]\w*)!\s*([A-Za-z_]\w*)?\(',
|
3404
|
+
bygroups(Comment.Preproc, Name), 'macro('),
|
3241
3405
|
],
|
3242
3406
|
'number_lit': [
|
3243
3407
|
(r'(([ui](8|16|32|64)?)|(f(32|64)?))?', Keyword, '#pop'),
|
@@ -3249,6 +3413,14 @@ class RustLexer(RegexLexer):
|
|
3249
3413
|
(r'[^\\"]+', String),
|
3250
3414
|
(r'\\', String),
|
3251
3415
|
],
|
3416
|
+
'macro{': [
|
3417
|
+
(r'\{', Operator, '#push'),
|
3418
|
+
(r'\}', Operator, '#pop'),
|
3419
|
+
],
|
3420
|
+
'macro(': [
|
3421
|
+
(r'\(', Operator, '#push'),
|
3422
|
+
(r'\)', Operator, '#pop'),
|
3423
|
+
],
|
3252
3424
|
'attribute_common': [
|
3253
3425
|
(r'"', String, 'string'),
|
3254
3426
|
(r'\[', Comment.Preproc, 'attribute['),
|
@@ -3272,7 +3444,7 @@ class CudaLexer(CLexer):
|
|
3272
3444
|
For NVIDIA `CUDA™ <http://developer.nvidia.com/category/zone/cuda-zone>`_
|
3273
3445
|
source.
|
3274
3446
|
|
3275
|
-
|
3447
|
+
.. versionadded:: 1.6
|
3276
3448
|
"""
|
3277
3449
|
name = 'CUDA'
|
3278
3450
|
filenames = ['*.cu', '*.cuh']
|
@@ -3322,7 +3494,7 @@ class MonkeyLexer(RegexLexer):
|
|
3322
3494
|
`Monkey <https://en.wikipedia.org/wiki/Monkey_(programming_language)>`_
|
3323
3495
|
source code.
|
3324
3496
|
|
3325
|
-
|
3497
|
+
.. versionadded:: 1.6
|
3326
3498
|
"""
|
3327
3499
|
|
3328
3500
|
name = 'Monkey'
|
@@ -3330,10 +3502,10 @@ class MonkeyLexer(RegexLexer):
|
|
3330
3502
|
filenames = ['*.monkey']
|
3331
3503
|
mimetypes = ['text/x-monkey']
|
3332
3504
|
|
3333
|
-
name_variable = r'[a-z_]
|
3334
|
-
name_function = r'[A-Z]
|
3505
|
+
name_variable = r'[a-z_]\w*'
|
3506
|
+
name_function = r'[A-Z]\w*'
|
3335
3507
|
name_constant = r'[A-Z_][A-Z0-9_]*'
|
3336
|
-
name_class = r'[A-Z]
|
3508
|
+
name_class = r'[A-Z]\w*'
|
3337
3509
|
name_module = r'[a-z0-9_]*'
|
3338
3510
|
|
3339
3511
|
keyword_type = r'(?:Int|Float|String|Bool|Object|Array|Void)'
|
@@ -3360,7 +3532,7 @@ class MonkeyLexer(RegexLexer):
|
|
3360
3532
|
(r'\.[0-9]+(?!\.)', Number.Float),
|
3361
3533
|
(r'[0-9]+', Number.Integer),
|
3362
3534
|
(r'\$[0-9a-fA-Z]+', Number.Hex),
|
3363
|
-
(r'\%[10]+', Number),
|
3535
|
+
(r'\%[10]+', Number.Bin),
|
3364
3536
|
# Native data types
|
3365
3537
|
(r'\b%s\b' % keyword_type, Keyword.Type),
|
3366
3538
|
# Exception handling
|
@@ -3421,7 +3593,7 @@ class MonkeyLexer(RegexLexer):
|
|
3421
3593
|
(r'<', Punctuation, '#push'),
|
3422
3594
|
(r'>', Punctuation, '#pop'),
|
3423
3595
|
(r'\n', Text, '#pop'),
|
3424
|
-
(
|
3596
|
+
default('#pop')
|
3425
3597
|
],
|
3426
3598
|
'variables': [
|
3427
3599
|
(r'%s\b' % name_constant, Name.Constant),
|
@@ -3430,7 +3602,7 @@ class MonkeyLexer(RegexLexer):
|
|
3430
3602
|
(r'\s+', Text),
|
3431
3603
|
(r':', Punctuation, 'classname'),
|
3432
3604
|
(r',', Punctuation, '#push'),
|
3433
|
-
(
|
3605
|
+
default('#pop')
|
3434
3606
|
],
|
3435
3607
|
'string': [
|
3436
3608
|
(r'[^"~]+', String.Double),
|
@@ -3450,7 +3622,7 @@ class CobolLexer(RegexLexer):
|
|
3450
3622
|
"""
|
3451
3623
|
Lexer for OpenCOBOL code.
|
3452
3624
|
|
3453
|
-
|
3625
|
+
.. versionadded:: 1.6
|
3454
3626
|
"""
|
3455
3627
|
name = 'COBOL'
|
3456
3628
|
aliases = ['cobol']
|
@@ -3644,7 +3816,7 @@ class CobolFreeformatLexer(CobolLexer):
|
|
3644
3816
|
"""
|
3645
3817
|
Lexer for Free format OpenCOBOL code.
|
3646
3818
|
|
3647
|
-
|
3819
|
+
.. versionadded:: 1.6
|
3648
3820
|
"""
|
3649
3821
|
name = 'COBOLFree'
|
3650
3822
|
aliases = ['cobolfree']
|
@@ -3663,7 +3835,7 @@ class LogosLexer(ObjectiveCppLexer):
|
|
3663
3835
|
"""
|
3664
3836
|
For Logos + Objective-C source code with preprocessor directives.
|
3665
3837
|
|
3666
|
-
|
3838
|
+
.. versionadded:: 1.6
|
3667
3839
|
"""
|
3668
3840
|
|
3669
3841
|
name = 'Logos'
|
@@ -3675,12 +3847,12 @@ class LogosLexer(ObjectiveCppLexer):
|
|
3675
3847
|
tokens = {
|
3676
3848
|
'statements': [
|
3677
3849
|
(r'(%orig|%log)\b', Keyword),
|
3678
|
-
(r'(%c)\b(\()(\s*)([a-zA-Z$_][
|
3850
|
+
(r'(%c)\b(\()(\s*)([a-zA-Z$_][\w$]*)(\s*)(\))',
|
3679
3851
|
bygroups(Keyword, Punctuation, Text, Name.Class, Text, Punctuation)),
|
3680
3852
|
(r'(%init)\b(\()',
|
3681
3853
|
bygroups(Keyword, Punctuation), 'logos_init_directive'),
|
3682
3854
|
(r'(%init)(?=\s*;)', bygroups(Keyword)),
|
3683
|
-
(r'(%hook|%group)(\s+)([a-zA-Z$_][
|
3855
|
+
(r'(%hook|%group)(\s+)([a-zA-Z$_][\w$]+)',
|
3684
3856
|
bygroups(Keyword, Text, Name.Class), '#pop'),
|
3685
3857
|
(r'(%subclass)(\s+)', bygroups(Keyword, Text),
|
3686
3858
|
('#pop', 'logos_classname')),
|
@@ -3689,20 +3861,20 @@ class LogosLexer(ObjectiveCppLexer):
|
|
3689
3861
|
'logos_init_directive' : [
|
3690
3862
|
('\s+', Text),
|
3691
3863
|
(',', Punctuation, ('logos_init_directive', '#pop')),
|
3692
|
-
('([a-zA-Z$_][
|
3864
|
+
('([a-zA-Z$_][\w$]*)(\s*)(=)(\s*)([^);]*)',
|
3693
3865
|
bygroups(Name.Class, Text, Punctuation, Text, Text)),
|
3694
|
-
('([a-zA-Z$_][
|
3866
|
+
('([a-zA-Z$_][\w$]*)', Name.Class),
|
3695
3867
|
('\)', Punctuation, '#pop'),
|
3696
3868
|
],
|
3697
3869
|
'logos_classname' : [
|
3698
|
-
('([a-zA-Z$_][
|
3870
|
+
('([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?',
|
3699
3871
|
bygroups(Name.Class, Text, Name.Class), '#pop'),
|
3700
|
-
('([a-zA-Z$_][
|
3872
|
+
('([a-zA-Z$_][\w$]*)', Name.Class, '#pop')
|
3701
3873
|
],
|
3702
3874
|
'root': [
|
3703
3875
|
(r'(%subclass)(\s+)', bygroups(Keyword, Text),
|
3704
3876
|
'logos_classname'),
|
3705
|
-
(r'(%hook|%group)(\s+)([a-zA-Z$_][
|
3877
|
+
(r'(%hook|%group)(\s+)([a-zA-Z$_][\w$]+)',
|
3706
3878
|
bygroups(Keyword, Text, Name.Class)),
|
3707
3879
|
(r'(%config)(\s*\(\s*)(\w+)(\s*=\s*)(.*?)(\s*\)\s*)',
|
3708
3880
|
bygroups(Keyword, Text, Name.Variable, Text, String, Text)),
|
@@ -3721,3 +3893,1300 @@ class LogosLexer(ObjectiveCppLexer):
|
|
3721
3893
|
if LogosLexer._logos_keywords.search(text):
|
3722
3894
|
return 1.0
|
3723
3895
|
return 0
|
3896
|
+
|
3897
|
+
|
3898
|
+
class ChapelLexer(RegexLexer):
|
3899
|
+
"""
|
3900
|
+
For `Chapel <http://chapel.cray.com/>`_ source.
|
3901
|
+
|
3902
|
+
.. versionadded:: 2.0
|
3903
|
+
"""
|
3904
|
+
name = 'Chapel'
|
3905
|
+
filenames = ['*.chpl']
|
3906
|
+
aliases = ['chapel', 'chpl']
|
3907
|
+
# mimetypes = ['text/x-chapel']
|
3908
|
+
|
3909
|
+
tokens = {
|
3910
|
+
'root': [
|
3911
|
+
(r'\n', Text),
|
3912
|
+
(r'\s+', Text),
|
3913
|
+
(r'\\\n', Text),
|
3914
|
+
|
3915
|
+
(r'//(.*?)\n', Comment.Single),
|
3916
|
+
(r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
|
3917
|
+
|
3918
|
+
(r'(config|const|in|inout|out|param|ref|type|var)\b',
|
3919
|
+
Keyword.Declaration),
|
3920
|
+
(r'(false|nil|true)\b', Keyword.Constant),
|
3921
|
+
(r'(bool|complex|imag|int|opaque|range|real|string|uint)\b',
|
3922
|
+
Keyword.Type),
|
3923
|
+
(r'(atomic|begin|break|by|cobegin|coforall|continue|iter|'
|
3924
|
+
r'delete|dmapped|do|domain|else|enum|export|extern|for|forall|'
|
3925
|
+
r'if|index|inline|label|lambda|let|local|new|on|otherwise|'
|
3926
|
+
r'reduce|return|scan|select|serial|single|sparse|'
|
3927
|
+
r'subdomain|sync|then|use|when|where|while|yield|zip)\b',
|
3928
|
+
Keyword),
|
3929
|
+
(r'(proc)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'procname'),
|
3930
|
+
(r'(class|module|record|union)(\s+)', bygroups(Keyword, Text),
|
3931
|
+
'classname'),
|
3932
|
+
|
3933
|
+
# imaginary integers
|
3934
|
+
(r'\d+i', Number),
|
3935
|
+
(r'\d+\.\d*([Ee][-+]\d+)?i', Number),
|
3936
|
+
(r'\.\d+([Ee][-+]\d+)?i', Number),
|
3937
|
+
(r'\d+[Ee][-+]\d+i', Number),
|
3938
|
+
|
3939
|
+
# reals cannot end with a period due to lexical ambiguity with
|
3940
|
+
# .. operator. See reference for rationale.
|
3941
|
+
(r'(\d*\.\d+)([eE][+-]?[0-9]+)?i?', Number.Float),
|
3942
|
+
(r'\d+[eE][+-]?[0-9]+i?', Number.Float),
|
3943
|
+
|
3944
|
+
# integer literals
|
3945
|
+
# -- binary
|
3946
|
+
(r'0[bB][0-1]+', Number.Bin),
|
3947
|
+
# -- hex
|
3948
|
+
(r'0[xX][0-9a-fA-F]+', Number.Hex),
|
3949
|
+
# -- decimal
|
3950
|
+
(r'(0|[1-9][0-9]*)', Number.Integer),
|
3951
|
+
|
3952
|
+
# strings
|
3953
|
+
(r'["\'](\\\\|\\"|[^"\'])*["\']', String),
|
3954
|
+
|
3955
|
+
# tokens
|
3956
|
+
(r'(=|\+=|-=|\*=|/=|\*\*=|%=|&=|\|=|\^=|&&=|\|\|=|<<=|>>=|'
|
3957
|
+
r'<=>|\.\.|by|#|\.\.\.|'
|
3958
|
+
r'&&|\|\||!|&|\||\^|~|<<|>>|'
|
3959
|
+
r'==|!=|<=|>=|<|>|'
|
3960
|
+
r'[+\-*/%]|\*\*)', Operator),
|
3961
|
+
(r'[:;,.?()\[\]{}]', Punctuation),
|
3962
|
+
|
3963
|
+
# identifiers
|
3964
|
+
(r'[a-zA-Z_][\w$]*', Name.Other),
|
3965
|
+
],
|
3966
|
+
'classname': [
|
3967
|
+
(r'[a-zA-Z_][\w$]*', Name.Class, '#pop'),
|
3968
|
+
],
|
3969
|
+
'procname': [
|
3970
|
+
(r'[a-zA-Z_][\w$]*', Name.Function, '#pop'),
|
3971
|
+
],
|
3972
|
+
}
|
3973
|
+
|
3974
|
+
|
3975
|
+
class EiffelLexer(RegexLexer):
|
3976
|
+
"""
|
3977
|
+
For `Eiffel <http://www.eiffel.com>`_ source code.
|
3978
|
+
|
3979
|
+
.. versionadded:: 2.0
|
3980
|
+
"""
|
3981
|
+
name = 'Eiffel'
|
3982
|
+
aliases = ['eiffel']
|
3983
|
+
filenames = ['*.e']
|
3984
|
+
mimetypes = ['text/x-eiffel']
|
3985
|
+
|
3986
|
+
tokens = {
|
3987
|
+
'root': [
|
3988
|
+
(r'[^\S\n]+', Text),
|
3989
|
+
(r'--.*?\n', Comment.Single),
|
3990
|
+
(r'[^\S\n]+', Text),
|
3991
|
+
# Please note that keyword and operator are case insensitive.
|
3992
|
+
(r'(?i)(true|false|void|current|result|precursor)\b', Keyword.Constant),
|
3993
|
+
(r'(?i)(and(\s+then)?|not|xor|implies|or(\s+else)?)\b', Operator.Word),
|
3994
|
+
(r'(?i)\b(across|agent|alias|all|as|assign|attached|attribute|check|'
|
3995
|
+
r'class|convert|create|debug|deferred|detachable|do|else|elseif|'
|
3996
|
+
r'end|ensure|expanded|export|external|feature|from|frozen|if|'
|
3997
|
+
r'inherit|inspect|invariant|like|local|loop|none|note|obsolete|'
|
3998
|
+
r'old|once|only|redefine|rename|require|rescue|retry|select|'
|
3999
|
+
r'separate|then|undefine|until|variant|when)\b',Keyword.Reserved),
|
4000
|
+
(r'"\[(([^\]%]|\n)|%(.|\n)|\][^"])*?\]"', String),
|
4001
|
+
(r'"([^"%\n]|%.)*?"', String),
|
4002
|
+
include('numbers'),
|
4003
|
+
(r"'([^'%]|%'|%%)'", String.Char),
|
4004
|
+
(r"(//|\\\\|>=|<=|:=|/=|~|/~|[\\\?!#%&@|+/\-=\>\*$<|^\[\]])", Operator),
|
4005
|
+
(r"([{}():;,.])", Punctuation),
|
4006
|
+
(r'([a-z]\w*)|([A-Z][A-Z0-9_]*[a-z]\w*)', Name),
|
4007
|
+
(r'([A-Z][A-Z0-9_]*)', Name.Class),
|
4008
|
+
(r'\n+', Text),
|
4009
|
+
],
|
4010
|
+
'numbers': [
|
4011
|
+
(r'0[xX][a-fA-F0-9]+', Number.Hex),
|
4012
|
+
(r'0[bB][0-1]+', Number.Bin),
|
4013
|
+
(r'0[cC][0-7]+', Number.Oct),
|
4014
|
+
(r'([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)', Number.Float),
|
4015
|
+
(r'[0-9]+', Number.Integer),
|
4016
|
+
],
|
4017
|
+
}
|
4018
|
+
|
4019
|
+
|
4020
|
+
class Inform6Lexer(RegexLexer):
|
4021
|
+
"""
|
4022
|
+
For `Inform 6 <http://inform-fiction.org/>`_ source code.
|
4023
|
+
|
4024
|
+
.. versionadded:: 2.0
|
4025
|
+
"""
|
4026
|
+
|
4027
|
+
name = 'Inform 6'
|
4028
|
+
aliases = ['inform6', 'i6']
|
4029
|
+
filenames = ['*.inf']
|
4030
|
+
|
4031
|
+
flags = re.MULTILINE | re.DOTALL | re.UNICODE
|
4032
|
+
|
4033
|
+
_name = r'[a-zA-Z_][a-zA-Z_0-9]*'
|
4034
|
+
|
4035
|
+
# Inform 7 maps these four character classes to their ASCII
|
4036
|
+
# equivalents. To support Inform 6 inclusions within Inform 7,
|
4037
|
+
# Inform6Lexer maps them too.
|
4038
|
+
_dash = u'\\-\u2010-\u2014'
|
4039
|
+
_dquote = u'"\u201c\u201d'
|
4040
|
+
_squote = u"'\u2018\u2019"
|
4041
|
+
_newline = u'\\n\u0085\u2028\u2029'
|
4042
|
+
|
4043
|
+
tokens = {
|
4044
|
+
'root': [
|
4045
|
+
(r'(\A(!%%[^%s]*[%s])+)?' % (_newline, _newline), Comment.Preproc,
|
4046
|
+
'directive')
|
4047
|
+
],
|
4048
|
+
'_whitespace': [
|
4049
|
+
(r'\s+', Text),
|
4050
|
+
(r'![^%s]*' % _newline, Comment.Single)
|
4051
|
+
],
|
4052
|
+
'default': [
|
4053
|
+
include('_whitespace'),
|
4054
|
+
(r'\[', Punctuation, 'many-values'), # Array initialization
|
4055
|
+
(r':|(?=;)', Punctuation, '#pop'),
|
4056
|
+
(r'<', Punctuation), # Second angle bracket in an action statement
|
4057
|
+
default(('expression', '_expression'))
|
4058
|
+
],
|
4059
|
+
|
4060
|
+
# Expressions
|
4061
|
+
'_expression': [
|
4062
|
+
include('_whitespace'),
|
4063
|
+
(r'(?=sp\b)', Text, '#pop'),
|
4064
|
+
(r'(?=[%s%s$0-9#a-zA-Z_])' % (_dquote, _squote), Text,
|
4065
|
+
('#pop', 'value')),
|
4066
|
+
(r'\+\+|[%s]{1,2}(?!>)|~~?' % _dash, Operator),
|
4067
|
+
(r'(?=[()\[%s,?@{:;])' % _dash, Text, '#pop')
|
4068
|
+
],
|
4069
|
+
'expression': [
|
4070
|
+
include('_whitespace'),
|
4071
|
+
(r'\(', Punctuation, ('expression', '_expression')),
|
4072
|
+
(r'\)', Punctuation, '#pop'),
|
4073
|
+
(r'\[', Punctuation, ('#pop', 'statements', 'locals')),
|
4074
|
+
(r'>(?=(\s+|(![^%s]*))*[>;])' % _newline, Punctuation),
|
4075
|
+
(r'\+\+|[%s]{2}(?!>)' % _dash, Operator),
|
4076
|
+
(r',', Punctuation, '_expression'),
|
4077
|
+
(r'&&?|\|\|?|[=~><]?=|[%s]{1,2}>?|\.\.?[&#]?|::|[<>+*/%%]' % _dash,
|
4078
|
+
Operator, '_expression'),
|
4079
|
+
(r'(has|hasnt|in|notin|ofclass|or|provides)\b', Operator.Word,
|
4080
|
+
'_expression'),
|
4081
|
+
(r'sp\b', Name),
|
4082
|
+
(r'\?~?', Name.Label, 'label?'),
|
4083
|
+
(r'[@{]', Error),
|
4084
|
+
default('#pop')
|
4085
|
+
],
|
4086
|
+
'_assembly-expression': [
|
4087
|
+
(r'\(', Punctuation, ('#push', '_expression')),
|
4088
|
+
(r'[\[\]]', Punctuation),
|
4089
|
+
(r'[%s]>' % _dash, Punctuation, '_expression'),
|
4090
|
+
(r'sp\b', Keyword.Pseudo),
|
4091
|
+
(r';', Punctuation, '#pop:3'),
|
4092
|
+
include('expression')
|
4093
|
+
],
|
4094
|
+
'_for-expression': [
|
4095
|
+
(r'\)', Punctuation, '#pop:2'),
|
4096
|
+
(r':', Punctuation, '#pop'),
|
4097
|
+
include('expression')
|
4098
|
+
],
|
4099
|
+
'_keyword-expression': [
|
4100
|
+
(r'(from|near|to)\b', Keyword, '_expression'),
|
4101
|
+
include('expression')
|
4102
|
+
],
|
4103
|
+
'_list-expression': [
|
4104
|
+
(r',', Punctuation, '#pop'),
|
4105
|
+
include('expression')
|
4106
|
+
],
|
4107
|
+
'_object-expression': [
|
4108
|
+
(r'has\b', Keyword.Declaration, '#pop'),
|
4109
|
+
include('_list-expression')
|
4110
|
+
],
|
4111
|
+
|
4112
|
+
# Values
|
4113
|
+
'value': [
|
4114
|
+
include('_whitespace'),
|
4115
|
+
# Strings
|
4116
|
+
(r'[%s][^@][%s]' % (_squote, _squote), String.Char, '#pop'),
|
4117
|
+
(r'([%s])(@{[0-9a-fA-F]{1,4}})([%s])' % (_squote, _squote),
|
4118
|
+
bygroups(String.Char, String.Escape, String.Char), '#pop'),
|
4119
|
+
(r'([%s])(@..)([%s])' % (_squote, _squote),
|
4120
|
+
bygroups(String.Char, String.Escape, String.Char), '#pop'),
|
4121
|
+
(r'[%s]' % _squote, String.Single, ('#pop', 'dictionary-word')),
|
4122
|
+
(r'[%s]' % _dquote, String.Double, ('#pop', 'string')),
|
4123
|
+
# Numbers
|
4124
|
+
(r'\$[+%s][0-9]*\.?[0-9]*([eE][+%s]?[0-9]+)?' % (_dash, _dash),
|
4125
|
+
Number.Float, '#pop'),
|
4126
|
+
(r'\$[0-9a-fA-F]+', Number.Hex, '#pop'),
|
4127
|
+
(r'\$\$[01]+', Number.Bin, '#pop'),
|
4128
|
+
(r'[0-9]+', Number.Integer, '#pop'),
|
4129
|
+
# Values prefixed by hashes
|
4130
|
+
(r'(##|#a\$)(%s)' % _name, bygroups(Operator, Name), '#pop'),
|
4131
|
+
(r'(#g\$)(%s)' % _name,
|
4132
|
+
bygroups(Operator, Name.Variable.Global), '#pop'),
|
4133
|
+
(r'#[nw]\$', Operator, ('#pop', 'obsolete-dictionary-word')),
|
4134
|
+
(r'(#r\$)(%s)' % _name, bygroups(Operator, Name.Function), '#pop'),
|
4135
|
+
(r'#', Name.Builtin, ('#pop', 'system-constant')),
|
4136
|
+
# System functions
|
4137
|
+
(r'(child|children|elder|eldest|glk|indirect|metaclass|parent|'
|
4138
|
+
r'random|sibling|younger|youngest)\b', Name.Builtin, '#pop'),
|
4139
|
+
# Metaclasses
|
4140
|
+
(r'(?i)(Class|Object|Routine|String)\b', Name.Builtin, '#pop'),
|
4141
|
+
# Veneer routines
|
4142
|
+
(r'(?i)(Box__Routine|CA__Pr|CDefArt|CInDefArt|Cl__Ms|'
|
4143
|
+
r'Copy__Primitive|CP__Tab|DA__Pr|DB__Pr|DefArt|Dynam__String|'
|
4144
|
+
r'EnglishNumber|Glk__Wrap|IA__Pr|IB__Pr|InDefArt|Main__|'
|
4145
|
+
r'Meta__class|OB__Move|OB__Remove|OC__Cl|OP__Pr|Print__Addr|'
|
4146
|
+
r'Print__PName|PrintShortName|RA__Pr|RA__Sc|RL__Pr|R_Process|'
|
4147
|
+
r'RT__ChG|RT__ChGt|RT__ChLDB|RT__ChLDW|RT__ChPR|RT__ChPrintA|'
|
4148
|
+
r'RT__ChPrintC|RT__ChPrintO|RT__ChPrintS|RT__ChPS|RT__ChR|'
|
4149
|
+
r'RT__ChSTB|RT__ChSTW|RT__ChT|RT__Err|RT__TrPS|RV__Pr|'
|
4150
|
+
r'Symb__Tab|Unsigned__Compare|WV__Pr|Z__Region)\b', Name.Builtin,
|
4151
|
+
'#pop'),
|
4152
|
+
# Other built-in symbols
|
4153
|
+
(r'(?i)(call|copy|create|DEBUG|destroy|DICT_CHAR_SIZE|'
|
4154
|
+
r'DICT_ENTRY_BYTES|DICT_IS_UNICODE|DICT_WORD_SIZE|false|'
|
4155
|
+
r'FLOAT_INFINITY|FLOAT_NAN|FLOAT_NINFINITY|GOBJFIELD_CHAIN|'
|
4156
|
+
r'GOBJFIELD_CHILD|GOBJFIELD_NAME|GOBJFIELD_PARENT|'
|
4157
|
+
r'GOBJFIELD_PROPTAB|GOBJFIELD_SIBLING|GOBJ_EXT_START|'
|
4158
|
+
r'GOBJ_TOTAL_LENGTH|Grammar__Version|INDIV_PROP_START|INFIX|'
|
4159
|
+
r'infix__watching|MODULE_MODE|name|nothing|NUM_ATTR_BYTES|print|'
|
4160
|
+
r'print_to_array|recreate|remaining|self|sender|STRICT_MODE|'
|
4161
|
+
r'sw__var|sys__glob0|sys__glob1|sys__glob2|sys_statusline_flag|'
|
4162
|
+
r'TARGET_GLULX|TARGET_ZCODE|temp__global2|temp__global3|'
|
4163
|
+
r'temp__global4|temp_global|true|USE_MODULES|WORDSIZE)\b',
|
4164
|
+
Name.Builtin, '#pop'),
|
4165
|
+
# Other values
|
4166
|
+
(_name, Name, '#pop')
|
4167
|
+
],
|
4168
|
+
# Strings
|
4169
|
+
'dictionary-word': [
|
4170
|
+
(r'[~^]+', String.Escape),
|
4171
|
+
(r'[^~^\\@({%s]+' % _squote, String.Single),
|
4172
|
+
(r'[({]', String.Single),
|
4173
|
+
(r'@{[0-9a-fA-F]{,4}}', String.Escape),
|
4174
|
+
(r'@..', String.Escape),
|
4175
|
+
(r'[%s]' % _squote, String.Single, '#pop')
|
4176
|
+
],
|
4177
|
+
'string': [
|
4178
|
+
(r'[~^]+', String.Escape),
|
4179
|
+
(r'[^~^\\@({%s]+' % _dquote, String.Double),
|
4180
|
+
(r'[({]', String.Double),
|
4181
|
+
(r'\\', String.Escape),
|
4182
|
+
(r'@(\\\s*[%s]\s*)*@((\\\s*[%s]\s*)*[0-9])*' %
|
4183
|
+
(_newline, _newline), String.Escape),
|
4184
|
+
(r'@(\\\s*[%s]\s*)*{((\\\s*[%s]\s*)*[0-9a-fA-F]){,4}'
|
4185
|
+
r'(\\\s*[%s]\s*)*}' % (_newline, _newline, _newline),
|
4186
|
+
String.Escape),
|
4187
|
+
(r'@(\\\s*[%s]\s*)*.(\\\s*[%s]\s*)*.' % (_newline, _newline),
|
4188
|
+
String.Escape),
|
4189
|
+
(r'[%s]' % _dquote, String.Double, '#pop')
|
4190
|
+
],
|
4191
|
+
'plain-string': [
|
4192
|
+
(r'[^~^\\({\[\]%s]+' % _dquote, String.Double),
|
4193
|
+
(r'[~^({\[\]]', String.Double),
|
4194
|
+
(r'\\', String.Escape),
|
4195
|
+
(r'[%s]' % _dquote, String.Double, '#pop')
|
4196
|
+
],
|
4197
|
+
# Names
|
4198
|
+
'_constant': [
|
4199
|
+
include('_whitespace'),
|
4200
|
+
(_name, Name.Constant, '#pop'),
|
4201
|
+
include('value')
|
4202
|
+
],
|
4203
|
+
'_global': [
|
4204
|
+
include('_whitespace'),
|
4205
|
+
(_name, Name.Variable.Global, '#pop'),
|
4206
|
+
include('value')
|
4207
|
+
],
|
4208
|
+
'label?': [
|
4209
|
+
include('_whitespace'),
|
4210
|
+
(r'(%s)?' % _name, Name.Label, '#pop')
|
4211
|
+
],
|
4212
|
+
'variable?': [
|
4213
|
+
include('_whitespace'),
|
4214
|
+
(r'(%s)?' % _name, Name.Variable, '#pop')
|
4215
|
+
],
|
4216
|
+
# Values after hashes
|
4217
|
+
'obsolete-dictionary-word': [
|
4218
|
+
(r'\S[a-zA-Z_0-9]*', String.Other, '#pop')
|
4219
|
+
],
|
4220
|
+
'system-constant': [
|
4221
|
+
include('_whitespace'),
|
4222
|
+
(_name, Name.Builtin, '#pop')
|
4223
|
+
],
|
4224
|
+
|
4225
|
+
# Directives
|
4226
|
+
'directive': [
|
4227
|
+
include('_whitespace'),
|
4228
|
+
(r'#', Punctuation),
|
4229
|
+
(r';', Punctuation, '#pop'),
|
4230
|
+
(r'\[', Punctuation,
|
4231
|
+
('default', 'statements', 'locals', 'routine-name?')),
|
4232
|
+
(r'(?i)(abbreviate|endif|dictionary|ifdef|iffalse|ifndef|ifnot|'
|
4233
|
+
r'iftrue|ifv3|ifv5|release|serial|switches|system_file|version)'
|
4234
|
+
r'\b', Keyword, 'default'),
|
4235
|
+
(r'(?i)(array|global)\b', Keyword,
|
4236
|
+
('default', 'directive-keyword?', '_global')),
|
4237
|
+
(r'(?i)attribute\b', Keyword, ('default', 'alias?', '_constant')),
|
4238
|
+
(r'(?i)class\b', Keyword,
|
4239
|
+
('object-body', 'duplicates', 'class-name')),
|
4240
|
+
(r'(?i)(constant|default)\b', Keyword,
|
4241
|
+
('default', 'expression', '_constant')),
|
4242
|
+
(r'(?i)(end\b)(.*)', bygroups(Keyword, Text)),
|
4243
|
+
(r'(?i)(extend|verb)\b', Keyword, 'grammar'),
|
4244
|
+
(r'(?i)fake_action\b', Keyword, ('default', '_constant')),
|
4245
|
+
(r'(?i)import\b', Keyword, 'manifest'),
|
4246
|
+
(r'(?i)(include|link)\b', Keyword,
|
4247
|
+
('default', 'before-plain-string')),
|
4248
|
+
(r'(?i)(lowstring|undef)\b', Keyword, ('default', '_constant')),
|
4249
|
+
(r'(?i)message\b', Keyword, ('default', 'diagnostic')),
|
4250
|
+
(r'(?i)(nearby|object)\b', Keyword,
|
4251
|
+
('object-body', '_object-head')),
|
4252
|
+
(r'(?i)property\b', Keyword,
|
4253
|
+
('default', 'alias?', '_constant', 'property-keyword*')),
|
4254
|
+
(r'(?i)replace\b', Keyword,
|
4255
|
+
('default', 'routine-name?', 'routine-name?')),
|
4256
|
+
(r'(?i)statusline\b', Keyword, ('default', 'directive-keyword?')),
|
4257
|
+
(r'(?i)stub\b', Keyword, ('default', 'routine-name?')),
|
4258
|
+
(r'(?i)trace\b', Keyword,
|
4259
|
+
('default', 'trace-keyword?', 'trace-keyword?')),
|
4260
|
+
(r'(?i)zcharacter\b', Keyword,
|
4261
|
+
('default', 'directive-keyword?', 'directive-keyword?')),
|
4262
|
+
(_name, Name.Class, ('object-body', '_object-head'))
|
4263
|
+
],
|
4264
|
+
# [, Replace, Stub
|
4265
|
+
'routine-name?': [
|
4266
|
+
include('_whitespace'),
|
4267
|
+
(r'(%s)?' % _name, Name.Function, '#pop')
|
4268
|
+
],
|
4269
|
+
'locals': [
|
4270
|
+
include('_whitespace'),
|
4271
|
+
(r';', Punctuation, '#pop'),
|
4272
|
+
(r'\*', Punctuation),
|
4273
|
+
(_name, Name.Variable)
|
4274
|
+
],
|
4275
|
+
# Array
|
4276
|
+
'many-values': [
|
4277
|
+
include('_whitespace'),
|
4278
|
+
(r';', Punctuation),
|
4279
|
+
(r'\]', Punctuation, '#pop'),
|
4280
|
+
(r':', Error),
|
4281
|
+
default(('expression', '_expression'))
|
4282
|
+
],
|
4283
|
+
# Attribute, Property
|
4284
|
+
'alias?': [
|
4285
|
+
include('_whitespace'),
|
4286
|
+
(r'alias\b', Keyword, ('#pop', '_constant')),
|
4287
|
+
default('#pop')
|
4288
|
+
],
|
4289
|
+
# Class, Object, Nearby
|
4290
|
+
'class-name': [
|
4291
|
+
include('_whitespace'),
|
4292
|
+
(r'(?=[,;]|(class|has|private|with)\b)', Text, '#pop'),
|
4293
|
+
(_name, Name.Class, '#pop')
|
4294
|
+
],
|
4295
|
+
'duplicates': [
|
4296
|
+
include('_whitespace'),
|
4297
|
+
(r'\(', Punctuation, ('#pop', 'expression', '_expression')),
|
4298
|
+
default('#pop')
|
4299
|
+
],
|
4300
|
+
'_object-head': [
|
4301
|
+
(r'[%s]>' % _dash, Punctuation),
|
4302
|
+
(r'(class|has|private|with)\b', Keyword.Declaration, '#pop'),
|
4303
|
+
include('_global')
|
4304
|
+
],
|
4305
|
+
'object-body': [
|
4306
|
+
include('_whitespace'),
|
4307
|
+
(r';', Punctuation, '#pop:2'),
|
4308
|
+
(r',', Punctuation),
|
4309
|
+
(r'class\b', Keyword.Declaration, 'class-segment'),
|
4310
|
+
(r'(has|private|with)\b', Keyword.Declaration),
|
4311
|
+
(r':', Error),
|
4312
|
+
default(('_object-expression', '_expression'))
|
4313
|
+
],
|
4314
|
+
'class-segment': [
|
4315
|
+
include('_whitespace'),
|
4316
|
+
(r'(?=[,;]|(class|has|private|with)\b)', Text, '#pop'),
|
4317
|
+
(_name, Name.Class),
|
4318
|
+
default('value')
|
4319
|
+
],
|
4320
|
+
# Extend, Verb
|
4321
|
+
'grammar': [
|
4322
|
+
include('_whitespace'),
|
4323
|
+
(r'=', Punctuation, ('#pop', 'default')),
|
4324
|
+
(r'\*', Punctuation, ('#pop', 'grammar-line')),
|
4325
|
+
default('_directive-keyword')
|
4326
|
+
],
|
4327
|
+
'grammar-line': [
|
4328
|
+
include('_whitespace'),
|
4329
|
+
(r';', Punctuation, '#pop'),
|
4330
|
+
(r'[/*]', Punctuation),
|
4331
|
+
(r'[%s]>' % _dash, Punctuation, 'value'),
|
4332
|
+
(r'(noun|scope)\b', Keyword, '=routine'),
|
4333
|
+
default('_directive-keyword')
|
4334
|
+
],
|
4335
|
+
'=routine': [
|
4336
|
+
include('_whitespace'),
|
4337
|
+
(r'=', Punctuation, 'routine-name?'),
|
4338
|
+
default('#pop')
|
4339
|
+
],
|
4340
|
+
# Import
|
4341
|
+
'manifest': [
|
4342
|
+
include('_whitespace'),
|
4343
|
+
(r';', Punctuation, '#pop'),
|
4344
|
+
(r',', Punctuation),
|
4345
|
+
(r'(?i)(global\b)?', Keyword, '_global')
|
4346
|
+
],
|
4347
|
+
# Include, Link, Message
|
4348
|
+
'diagnostic': [
|
4349
|
+
include('_whitespace'),
|
4350
|
+
(r'[%s]' % _dquote, String.Double, ('#pop', 'message-string')),
|
4351
|
+
default(('#pop', 'before-plain-string', 'directive-keyword?'))
|
4352
|
+
],
|
4353
|
+
'before-plain-string': [
|
4354
|
+
include('_whitespace'),
|
4355
|
+
(r'[%s]' % _dquote, String.Double, ('#pop', 'plain-string'))
|
4356
|
+
],
|
4357
|
+
'message-string': [
|
4358
|
+
(r'[~^]+', String.Escape),
|
4359
|
+
include('plain-string')
|
4360
|
+
],
|
4361
|
+
|
4362
|
+
# Keywords used in directives
|
4363
|
+
'_directive-keyword!': [
|
4364
|
+
include('_whitespace'),
|
4365
|
+
(r'(additive|alias|buffer|class|creature|data|error|fatalerror|'
|
4366
|
+
r'first|has|held|initial|initstr|last|long|meta|multi|'
|
4367
|
+
r'multiexcept|multiheld|multiinside|noun|number|only|private|'
|
4368
|
+
r'replace|reverse|scope|score|special|string|table|terminating|'
|
4369
|
+
r'time|topic|warning|with)\b', Keyword, '#pop'),
|
4370
|
+
(r'[%s]{1,2}>|[+=]' % _dash, Punctuation, '#pop')
|
4371
|
+
],
|
4372
|
+
'_directive-keyword': [
|
4373
|
+
include('_directive-keyword!'),
|
4374
|
+
include('value')
|
4375
|
+
],
|
4376
|
+
'directive-keyword?': [
|
4377
|
+
include('_directive-keyword!'),
|
4378
|
+
default('#pop')
|
4379
|
+
],
|
4380
|
+
'property-keyword*': [
|
4381
|
+
include('_whitespace'),
|
4382
|
+
(r'(additive|long)\b', Keyword),
|
4383
|
+
default('#pop')
|
4384
|
+
],
|
4385
|
+
'trace-keyword?': [
|
4386
|
+
include('_whitespace'),
|
4387
|
+
(r'(assembly|dictionary|expressions|lines|linker|objects|off|on|'
|
4388
|
+
r'symbols|tokens|verbs)\b', Keyword, '#pop'),
|
4389
|
+
default('#pop')
|
4390
|
+
],
|
4391
|
+
|
4392
|
+
# Statements
|
4393
|
+
'statements': [
|
4394
|
+
include('_whitespace'),
|
4395
|
+
(r'\]', Punctuation, '#pop'),
|
4396
|
+
(r'[;{}]', Punctuation),
|
4397
|
+
(r'(box|break|continue|default|give|inversion|new_line|quit|read|'
|
4398
|
+
r'remove|return|rfalse|rtrue|spaces|string|until)\b', Keyword,
|
4399
|
+
'default'),
|
4400
|
+
(r'(do|else)\b', Keyword),
|
4401
|
+
(r'(font|style)\b', Keyword,
|
4402
|
+
('default', 'miscellaneous-keyword?')),
|
4403
|
+
(r'for\b', Keyword, ('for', '(?')),
|
4404
|
+
(r'(if|switch|while)', Keyword,
|
4405
|
+
('expression', '_expression', '(?')),
|
4406
|
+
(r'(jump|save|restore)\b', Keyword, ('default', 'label?')),
|
4407
|
+
(r'objectloop\b', Keyword,
|
4408
|
+
('_keyword-expression', 'variable?', '(?')),
|
4409
|
+
(r'print(_ret)?\b|(?=[%s])' % _dquote, Keyword, 'print-list'),
|
4410
|
+
(r'\.', Name.Label, 'label?'),
|
4411
|
+
(r'@', Keyword, 'opcode'),
|
4412
|
+
(r'#(?![agrnw]\$|#)', Punctuation, 'directive'),
|
4413
|
+
(r'<', Punctuation, 'default'),
|
4414
|
+
(r'(move\b)?', Keyword,
|
4415
|
+
('default', '_keyword-expression', '_expression'))
|
4416
|
+
],
|
4417
|
+
'miscellaneous-keyword?': [
|
4418
|
+
include('_whitespace'),
|
4419
|
+
(r'(bold|fixed|from|near|off|on|reverse|roman|to|underline)\b',
|
4420
|
+
Keyword, '#pop'),
|
4421
|
+
(r'(a|A|an|address|char|name|number|object|property|string|the|'
|
4422
|
+
r'The)\b(?=(\s+|(![^%s]*))*\))' % _newline, Keyword.Pseudo,
|
4423
|
+
'#pop'),
|
4424
|
+
(r'%s(?=(\s+|(![^%s]*))*\))' % (_name, _newline), Name.Function,
|
4425
|
+
'#pop'),
|
4426
|
+
default('#pop')
|
4427
|
+
],
|
4428
|
+
'(?': [
|
4429
|
+
include('_whitespace'),
|
4430
|
+
(r'\(?', Punctuation, '#pop')
|
4431
|
+
],
|
4432
|
+
'for': [
|
4433
|
+
include('_whitespace'),
|
4434
|
+
(r';?', Punctuation, ('_for-expression', '_expression'))
|
4435
|
+
],
|
4436
|
+
'print-list': [
|
4437
|
+
include('_whitespace'),
|
4438
|
+
(r';', Punctuation, '#pop'),
|
4439
|
+
(r':', Error),
|
4440
|
+
default(('_list-expression', '_expression', '_list-expression', 'form'))
|
4441
|
+
],
|
4442
|
+
'form': [
|
4443
|
+
include('_whitespace'),
|
4444
|
+
(r'\(', Punctuation, ('#pop', 'miscellaneous-keyword?')),
|
4445
|
+
default('#pop')
|
4446
|
+
],
|
4447
|
+
|
4448
|
+
# Assembly
|
4449
|
+
'opcode': [
|
4450
|
+
include('_whitespace'),
|
4451
|
+
(r'[%s]' % _dquote, String.Double, ('operands', 'plain-string')),
|
4452
|
+
(_name, Keyword, 'operands')
|
4453
|
+
],
|
4454
|
+
'operands': [
|
4455
|
+
(r':', Error),
|
4456
|
+
default(('_assembly-expression', '_expression'))
|
4457
|
+
]
|
4458
|
+
}
|
4459
|
+
|
4460
|
+
def get_tokens_unprocessed(self, text):
|
4461
|
+
# 'in' is either a keyword or an operator.
|
4462
|
+
# If the token two tokens after 'in' is ')', 'in' is a keyword:
|
4463
|
+
# objectloop(a in b)
|
4464
|
+
# Otherwise, it is an operator:
|
4465
|
+
# objectloop(a in b && true)
|
4466
|
+
objectloop_queue = []
|
4467
|
+
objectloop_token_count = -1
|
4468
|
+
previous_token = None
|
4469
|
+
for index, token, value in RegexLexer.get_tokens_unprocessed(self,
|
4470
|
+
text):
|
4471
|
+
if previous_token is Name.Variable and value == 'in':
|
4472
|
+
objectloop_queue = [[index, token, value]]
|
4473
|
+
objectloop_token_count = 2
|
4474
|
+
elif objectloop_token_count > 0:
|
4475
|
+
if token not in Comment and token not in Text:
|
4476
|
+
objectloop_token_count -= 1
|
4477
|
+
objectloop_queue.append((index, token, value))
|
4478
|
+
else:
|
4479
|
+
if objectloop_token_count == 0:
|
4480
|
+
if objectloop_queue[-1][2] == ')':
|
4481
|
+
objectloop_queue[0][1] = Keyword
|
4482
|
+
while objectloop_queue:
|
4483
|
+
yield objectloop_queue.pop(0)
|
4484
|
+
objectloop_token_count = -1
|
4485
|
+
yield index, token, value
|
4486
|
+
if token not in Comment and token not in Text:
|
4487
|
+
previous_token = token
|
4488
|
+
while objectloop_queue:
|
4489
|
+
yield objectloop_queue.pop(0)
|
4490
|
+
|
4491
|
+
|
4492
|
+
class Inform7Lexer(RegexLexer):
|
4493
|
+
"""
|
4494
|
+
For `Inform 7 <http://inform7.com/>`_ source code.
|
4495
|
+
|
4496
|
+
.. versionadded:: 2.0
|
4497
|
+
"""
|
4498
|
+
|
4499
|
+
name = 'Inform 7'
|
4500
|
+
aliases = ['inform7', 'i7']
|
4501
|
+
filenames = ['*.ni', '*.i7x']
|
4502
|
+
|
4503
|
+
flags = re.MULTILINE | re.DOTALL | re.UNICODE
|
4504
|
+
|
4505
|
+
_dash = Inform6Lexer._dash
|
4506
|
+
_dquote = Inform6Lexer._dquote
|
4507
|
+
_newline = Inform6Lexer._newline
|
4508
|
+
_start = r'\A|(?<=[%s])' % _newline
|
4509
|
+
|
4510
|
+
# There are three variants of Inform 7, differing in how to
|
4511
|
+
# interpret at signs and braces in I6T. In top-level inclusions, at
|
4512
|
+
# signs in the first column are inweb syntax. In phrase definitions
|
4513
|
+
# and use options, tokens in braces are treated as I7. Use options
|
4514
|
+
# also interpret "{N}".
|
4515
|
+
tokens = {}
|
4516
|
+
token_variants = ['+i6t-not-inline', '+i6t-inline', '+i6t-use-option']
|
4517
|
+
|
4518
|
+
for level in token_variants:
|
4519
|
+
tokens[level] = {
|
4520
|
+
'+i6-root': list(Inform6Lexer.tokens['root']),
|
4521
|
+
'+i6t-root': [ # For Inform6TemplateLexer
|
4522
|
+
(r'[^%s]*' % Inform6Lexer._newline, Comment.Preproc,
|
4523
|
+
('directive', '+p'))
|
4524
|
+
],
|
4525
|
+
'root': [
|
4526
|
+
(r'(\|?\s)+', Text),
|
4527
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4528
|
+
(r'[%s]' % _dquote, Generic.Heading,
|
4529
|
+
('+main', '+titling', '+titling-string')),
|
4530
|
+
default(('+main', '+heading?'))
|
4531
|
+
],
|
4532
|
+
'+titling-string': [
|
4533
|
+
(r'[^%s]+' % _dquote, Generic.Heading),
|
4534
|
+
(r'[%s]' % _dquote, Generic.Heading, '#pop')
|
4535
|
+
],
|
4536
|
+
'+titling': [
|
4537
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4538
|
+
(r'[^%s.;:|%s]+' % (_dquote, _newline), Generic.Heading),
|
4539
|
+
(r'[%s]' % _dquote, Generic.Heading, '+titling-string'),
|
4540
|
+
(r'[%s]{2}|(?<=[\s%s])\|[\s%s]' % (_newline, _dquote, _dquote),
|
4541
|
+
Text, ('#pop', '+heading?')),
|
4542
|
+
(r'[.;:]|(?<=[\s%s])\|' % _dquote, Text, '#pop'),
|
4543
|
+
(r'[|%s]' % _newline, Generic.Heading)
|
4544
|
+
],
|
4545
|
+
'+main': [
|
4546
|
+
(r'(?i)[^%s:a\[(|%s]+' % (_dquote, _newline), Text),
|
4547
|
+
(r'[%s]' % _dquote, String.Double, '+text'),
|
4548
|
+
(r':', Text, '+phrase-definition'),
|
4549
|
+
(r'(?i)\bas\b', Text, '+use-option'),
|
4550
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4551
|
+
(r'(\([%s])(.*?)([%s]\))' % (_dash, _dash),
|
4552
|
+
bygroups(Punctuation,
|
4553
|
+
using(this, state=('+i6-root', 'directive'),
|
4554
|
+
i6t='+i6t-not-inline'), Punctuation)),
|
4555
|
+
(r'(%s|(?<=[\s;:.%s]))\|\s|[%s]{2,}' %
|
4556
|
+
(_start, _dquote, _newline), Text, '+heading?'),
|
4557
|
+
(r'(?i)[a(|%s]' % _newline, Text)
|
4558
|
+
],
|
4559
|
+
'+phrase-definition': [
|
4560
|
+
(r'\s+', Text),
|
4561
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4562
|
+
(r'(\([%s])(.*?)([%s]\))' % (_dash, _dash),
|
4563
|
+
bygroups(Punctuation,
|
4564
|
+
using(this, state=('+i6-root', 'directive',
|
4565
|
+
'default', 'statements'),
|
4566
|
+
i6t='+i6t-inline'), Punctuation), '#pop'),
|
4567
|
+
default('#pop')
|
4568
|
+
],
|
4569
|
+
'+use-option': [
|
4570
|
+
(r'\s+', Text),
|
4571
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4572
|
+
(r'(\([%s])(.*?)([%s]\))' % (_dash, _dash),
|
4573
|
+
bygroups(Punctuation,
|
4574
|
+
using(this, state=('+i6-root', 'directive'),
|
4575
|
+
i6t='+i6t-use-option'), Punctuation), '#pop'),
|
4576
|
+
default('#pop')
|
4577
|
+
],
|
4578
|
+
'+comment': [
|
4579
|
+
(r'[^\[\]]+', Comment.Multiline),
|
4580
|
+
(r'\[', Comment.Multiline, '#push'),
|
4581
|
+
(r'\]', Comment.Multiline, '#pop')
|
4582
|
+
],
|
4583
|
+
'+text': [
|
4584
|
+
(r'[^\[%s]+' % _dquote, String.Double),
|
4585
|
+
(r'\[.*?\]', String.Interpol),
|
4586
|
+
(r'[%s]' % _dquote, String.Double, '#pop')
|
4587
|
+
],
|
4588
|
+
'+heading?': [
|
4589
|
+
(r'(\|?\s)+', Text),
|
4590
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4591
|
+
(r'[%s]{4}\s+' % _dash, Text, '+documentation-heading'),
|
4592
|
+
(r'[%s]{1,3}' % _dash, Text),
|
4593
|
+
(r'(?i)(volume|book|part|chapter|section)\b[^%s]*' % _newline,
|
4594
|
+
Generic.Heading, '#pop'),
|
4595
|
+
default('#pop')
|
4596
|
+
],
|
4597
|
+
'+documentation-heading': [
|
4598
|
+
(r'\s+', Text),
|
4599
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4600
|
+
(r'(?i)documentation\s+', Text, '+documentation-heading2'),
|
4601
|
+
default('#pop')
|
4602
|
+
],
|
4603
|
+
'+documentation-heading2': [
|
4604
|
+
(r'\s+', Text),
|
4605
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4606
|
+
(r'[%s]{4}\s' % _dash, Text, '+documentation'),
|
4607
|
+
default('#pop:2')
|
4608
|
+
],
|
4609
|
+
'+documentation': [
|
4610
|
+
(r'(?i)(%s)\s*(chapter|example)\s*:[^%s]*' %
|
4611
|
+
(_start, _newline), Generic.Heading),
|
4612
|
+
(r'(?i)(%s)\s*section\s*:[^%s]*' % (_start, _newline),
|
4613
|
+
Generic.Subheading),
|
4614
|
+
(r'((%s)\t.*?[%s])+' % (_start, _newline),
|
4615
|
+
using(this, state='+main')),
|
4616
|
+
(r'[^%s\[]+|[%s\[]' % (_newline, _newline), Text),
|
4617
|
+
(r'\[', Comment.Multiline, '+comment'),
|
4618
|
+
],
|
4619
|
+
'+i6t-not-inline': [
|
4620
|
+
(r'(%s)@c( .*?)?([%s]|\Z)' % (_start, _newline),
|
4621
|
+
Comment.Preproc),
|
4622
|
+
(r'(%s)@([%s]+|Purpose:)[^%s]*' % (_start, _dash, _newline),
|
4623
|
+
Comment.Preproc),
|
4624
|
+
(r'(%s)@p( .*?)?([%s]|\Z)' % (_start, _newline),
|
4625
|
+
Generic.Heading, '+p')
|
4626
|
+
],
|
4627
|
+
'+i6t-use-option': [
|
4628
|
+
include('+i6t-not-inline'),
|
4629
|
+
(r'({)(N)(})', bygroups(Punctuation, Text, Punctuation))
|
4630
|
+
],
|
4631
|
+
'+i6t-inline': [
|
4632
|
+
(r'({)(\S[^}]*)?(})',
|
4633
|
+
bygroups(Punctuation, using(this, state='+main'),
|
4634
|
+
Punctuation))
|
4635
|
+
],
|
4636
|
+
'+i6t': [
|
4637
|
+
(r'({[%s])(![^}]*)(}?)' % _dash,
|
4638
|
+
bygroups(Punctuation, Comment.Single, Punctuation)),
|
4639
|
+
(r'({[%s])(lines)(:)([^}]*)(}?)' % _dash,
|
4640
|
+
bygroups(Punctuation, Keyword, Punctuation, Text,
|
4641
|
+
Punctuation), '+lines'),
|
4642
|
+
(r'({[%s])([^:}]*)(:?)([^}]*)(}?)' % _dash,
|
4643
|
+
bygroups(Punctuation, Keyword, Punctuation, Text,
|
4644
|
+
Punctuation)),
|
4645
|
+
(r'(\(\+)(.*?)(\+\)|\Z)',
|
4646
|
+
bygroups(Punctuation, using(this, state='+main'),
|
4647
|
+
Punctuation))
|
4648
|
+
],
|
4649
|
+
'+p': [
|
4650
|
+
(r'[^@]+', Comment.Preproc),
|
4651
|
+
(r'(%s)@c( .*?)?([%s]|\Z)' % (_start, _newline),
|
4652
|
+
Comment.Preproc, '#pop'),
|
4653
|
+
(r'(%s)@([%s]|Purpose:)' % (_start, _dash), Comment.Preproc),
|
4654
|
+
(r'(%s)@p( .*?)?([%s]|\Z)' % (_start, _newline),
|
4655
|
+
Generic.Heading),
|
4656
|
+
(r'@', Comment.Preproc)
|
4657
|
+
],
|
4658
|
+
'+lines': [
|
4659
|
+
(r'(%s)@c( .*?)?([%s]|\Z)' % (_start, _newline),
|
4660
|
+
Comment.Preproc),
|
4661
|
+
(r'(%s)@([%s]|Purpose:)[^%s]*' % (_start, _dash, _newline),
|
4662
|
+
Comment.Preproc),
|
4663
|
+
(r'(%s)@p( .*?)?([%s]|\Z)' % (_start, _newline),
|
4664
|
+
Generic.Heading, '+p'),
|
4665
|
+
(r'(%s)@[a-zA-Z_0-9]*[ %s]' % (_start, _newline), Keyword),
|
4666
|
+
(r'![^%s]*' % _newline, Comment.Single),
|
4667
|
+
(r'({)([%s]endlines)(})' % _dash,
|
4668
|
+
bygroups(Punctuation, Keyword, Punctuation), '#pop'),
|
4669
|
+
(r'[^@!{]+?([%s]|\Z)|.' % _newline, Text)
|
4670
|
+
]
|
4671
|
+
}
|
4672
|
+
# Inform 7 can include snippets of Inform 6 template language,
|
4673
|
+
# so all of Inform6Lexer's states are copied here, with
|
4674
|
+
# modifications to account for template syntax. Inform7Lexer's
|
4675
|
+
# own states begin with '+' to avoid name conflicts. Some of
|
4676
|
+
# Inform6Lexer's states begin with '_': these are not modified.
|
4677
|
+
# They deal with template syntax either by including modified
|
4678
|
+
# states, or by matching r'' then pushing to modified states.
|
4679
|
+
for token in Inform6Lexer.tokens:
|
4680
|
+
if token == 'root':
|
4681
|
+
continue
|
4682
|
+
tokens[level][token] = list(Inform6Lexer.tokens[token])
|
4683
|
+
if not token.startswith('_'):
|
4684
|
+
tokens[level][token][:0] = [include('+i6t'), include(level)]
|
4685
|
+
|
4686
|
+
def __init__(self, **options):
|
4687
|
+
level = options.get('i6t', '+i6t-not-inline')
|
4688
|
+
if level not in self._all_tokens:
|
4689
|
+
self._tokens = self.__class__.process_tokendef(level)
|
4690
|
+
else:
|
4691
|
+
self._tokens = self._all_tokens[level]
|
4692
|
+
RegexLexer.__init__(self, **options)
|
4693
|
+
|
4694
|
+
|
4695
|
+
class Inform6TemplateLexer(Inform7Lexer):
|
4696
|
+
"""
|
4697
|
+
For `Inform 6 template
|
4698
|
+
<http://inform7.com/sources/src/i6template/Woven/index.html>`_ code.
|
4699
|
+
|
4700
|
+
.. versionadded:: 2.0
|
4701
|
+
"""
|
4702
|
+
|
4703
|
+
name = 'Inform 6 template'
|
4704
|
+
aliases = ['i6t']
|
4705
|
+
filenames = ['*.i6t']
|
4706
|
+
|
4707
|
+
def get_tokens_unprocessed(self, text, stack=('+i6t-root',)):
|
4708
|
+
return Inform7Lexer.get_tokens_unprocessed(self, text, stack)
|
4709
|
+
|
4710
|
+
|
4711
|
+
class MqlLexer(CppLexer):
|
4712
|
+
"""
|
4713
|
+
For `MQL4 <http://docs.mql4.com/>`_ and
|
4714
|
+
`MQL5 <http://www.mql5.com/en/docs>`_ source code.
|
4715
|
+
|
4716
|
+
.. versionadded:: 2.0
|
4717
|
+
"""
|
4718
|
+
name = 'MQL'
|
4719
|
+
aliases = ['mql', 'mq4', 'mq5', 'mql4', 'mql5']
|
4720
|
+
filenames = ['*.mq4', '*.mq5', '*.mqh']
|
4721
|
+
mimetypes = ['text/x-mql']
|
4722
|
+
|
4723
|
+
tokens = {
|
4724
|
+
'statements': [
|
4725
|
+
(r'(input|_Digits|_Point|_LastError|_Period|_RandomSeed|'
|
4726
|
+
r'_StopFlag|_Symbol|_UninitReason|'
|
4727
|
+
r'Ask|Bars|Bid|Close|Digits|High|Low|Open|Point|Time|Volume)\b',
|
4728
|
+
Keyword),
|
4729
|
+
(r'(void|char|uchar|bool|short|ushort|int|uint|color|long|ulong|datetime|'
|
4730
|
+
r'float|double|string)\b',
|
4731
|
+
Keyword.Type),
|
4732
|
+
(r'(Alert|CheckPointer|Comment|DebugBreak|ExpertRemove|'
|
4733
|
+
r'GetPointer|GetTickCount|MessageBox|PeriodSeconds|PlaySound|'
|
4734
|
+
r'Print|PrintFormat|ResetLastError|ResourceCreate|ResourceFree|'
|
4735
|
+
r'ResourceReadImage|ResourceSave|SendFTP|SendMail|SendNotification|'
|
4736
|
+
r'Sleep|TerminalClose|TesterStatistics|ZeroMemory|'
|
4737
|
+
r'ArrayBsearch|ArrayCopy|ArrayCompare|ArrayFree|ArrayGetAsSeries|'
|
4738
|
+
r'ArrayInitialize|ArrayFill|ArrayIsSeries|ArrayIsDynamic|'
|
4739
|
+
r'ArrayMaximum|ArrayMinimum|ArrayRange|ArrayResize|'
|
4740
|
+
r'ArraySetAsSeries|ArraySize|ArraySort|ArrayCopyRates|'
|
4741
|
+
r'ArrayCopySeries|ArrayDimension|'
|
4742
|
+
r'CharToString|DoubleToString|EnumToString|NormalizeDouble|'
|
4743
|
+
r'StringToDouble|StringToInteger|StringToTime|TimeToString|'
|
4744
|
+
r'IntegerToString|ShortToString|ShortArrayToString|'
|
4745
|
+
r'StringToShortArray|CharArrayToString|StringToCharArray|'
|
4746
|
+
r'ColorToARGB|ColorToString|StringToColor|StringFormat|'
|
4747
|
+
r'CharToStr|DoubleToStr|StrToDouble|StrToInteger|StrToTime|TimeToStr|'
|
4748
|
+
r'MathAbs|MathArccos|MathArcsin|MathArctan|MathCeil|MathCos|MathExp|'
|
4749
|
+
r'MathFloor|MathLog|MathMax|MathMin|MathMod|MathPow|MathRand|'
|
4750
|
+
r'MathRound|MathSin|MathSqrt|MathSrand|MathTan|MathIsValidNumber|'
|
4751
|
+
r'StringAdd|StringBufferLen|StringCompare|StringConcatenate|StringFill|'
|
4752
|
+
r'StringFind|StringGetCharacter|StringInit|StringLen|StringReplace|'
|
4753
|
+
r'StringSetCharacter|StringSplit|StringSubstr|StringToLower|StringToUpper|'
|
4754
|
+
r'StringTrimLeft|StringTrimRight|StringGetChar|StringSetChar|'
|
4755
|
+
r'TimeCurrent|TimeTradeServer|TimeLocal|TimeGMT|TimeDaylightSavings|'
|
4756
|
+
r'TimeGMTOffset|TimeToStruct|StructToTime|Day|DayOfWeek|DayOfYear|'
|
4757
|
+
r'Hour|Minute|Month|Seconds|TimeDay|TimeDayOfWeek|TimeDayOfYear|TimeHour|'
|
4758
|
+
r'TimeMinute|TimeMonth|TimeSeconds|TimeYear|Year|'
|
4759
|
+
r'AccountInfoDouble|AccountInfoInteger|AccountInfoString|AccountBalance|'
|
4760
|
+
r'AccountCredit|AccountCompany|AccountCurrency|AccountEquity|'
|
4761
|
+
r'AccountFreeMargin|AccountFreeMarginCheck|AccountFreeMarginMode|'
|
4762
|
+
r'AccountLeverage|AccountMargin|AccountName|AccountNumber|AccountProfit|'
|
4763
|
+
r'AccountServer|AccountStopoutLevel|AccountStopoutMode|'
|
4764
|
+
r'GetLastError|IsStopped|UninitializeReason|MQLInfoInteger|MQLInfoString|'
|
4765
|
+
r'Symbol|Period|Digits|Point|IsConnected|IsDemo|IsDllsAllowed|'
|
4766
|
+
r'IsExpertEnabled|IsLibrariesAllowed|IsOptimization|IsTesting|'
|
4767
|
+
r'IsTradeAllowed|'
|
4768
|
+
r'IsTradeContextBusy|IsVisualMode|TerminalCompany|TerminalName|'
|
4769
|
+
r'TerminalPath|'
|
4770
|
+
r'SymbolsTotal|SymbolName|SymbolSelect|SymbolIsSynchronized|'
|
4771
|
+
r'SymbolInfoDouble|'
|
4772
|
+
r'SymbolInfoInteger|SymbolInfoString|SymbolInfoTick|'
|
4773
|
+
r'SymbolInfoSessionQuote|'
|
4774
|
+
r'SymbolInfoSessionTrade|MarketInfo|'
|
4775
|
+
r'SeriesInfoInteger|CopyRates|CopyTime|CopyOpen|'
|
4776
|
+
r'CopyHigh|CopyLow|CopyClose|'
|
4777
|
+
r'CopyTickVolume|CopyRealVolume|CopySpread|iBars|iBarShift|iClose|'
|
4778
|
+
r'iHigh|iHighest|iLow|iLowest|iOpen|iTime|iVolume|'
|
4779
|
+
r'HideTestIndicators|Period|RefreshRates|Symbol|WindowBarsPerChart|'
|
4780
|
+
r'WindowExpertName|WindowFind|WindowFirstVisibleBar|WindowHandle|'
|
4781
|
+
r'WindowIsVisible|WindowOnDropped|WindowPriceMax|WindowPriceMin|'
|
4782
|
+
r'WindowPriceOnDropped|WindowRedraw|WindowScreenShot|'
|
4783
|
+
r'WindowTimeOnDropped|WindowsTotal|WindowXOnDropped|WindowYOnDropped|'
|
4784
|
+
r'OrderClose|OrderCloseBy|OrderClosePrice|OrderCloseTime|OrderComment|'
|
4785
|
+
r'OrderCommission|OrderDelete|OrderExpiration|OrderLots|OrderMagicNumber|'
|
4786
|
+
r'OrderModify|OrderOpenPrice|OrderOpenTime|OrderPrint|OrderProfit|'
|
4787
|
+
r'OrderSelect|OrderSend|OrdersHistoryTotal|OrderStopLoss|OrdersTotal|'
|
4788
|
+
r'OrderSwap|OrderSymbol|OrderTakeProfit|OrderTicket|OrderType|'
|
4789
|
+
r'GlobalVariableCheck|GlobalVariableTime|'
|
4790
|
+
r'GlobalVariableDel|GlobalVariableGet|GlobalVariableName|'
|
4791
|
+
r'GlobalVariableSet|GlobalVariablesFlush|GlobalVariableTemp|'
|
4792
|
+
r'GlobalVariableSetOnCondition|GlobalVariablesDeleteAll|'
|
4793
|
+
r'GlobalVariablesTotal|GlobalVariableCheck|GlobalVariableTime|'
|
4794
|
+
r'GlobalVariableDel|GlobalVariableGet|'
|
4795
|
+
r'GlobalVariableName|GlobalVariableSet|GlobalVariablesFlush|'
|
4796
|
+
r'GlobalVariableTemp|GlobalVariableSetOnCondition|'
|
4797
|
+
r'GlobalVariablesDeleteAll|GlobalVariablesTotal|'
|
4798
|
+
r'GlobalVariableCheck|GlobalVariableTime|GlobalVariableDel|'
|
4799
|
+
r'GlobalVariableGet|GlobalVariableName|GlobalVariableSet|'
|
4800
|
+
r'GlobalVariablesFlush|GlobalVariableTemp|'
|
4801
|
+
r'GlobalVariableSetOnCondition|GlobalVariablesDeleteAll|'
|
4802
|
+
r'GlobalVariablesTotal|'
|
4803
|
+
r'FileFindFirst|FileFindNext|FileFindClose|FileOpen|FileDelete|'
|
4804
|
+
r'FileFlush|FileGetInteger|FileIsEnding|FileIsLineEnding|'
|
4805
|
+
r'FileClose|FileIsExist|FileCopy|FileMove|FileReadArray|'
|
4806
|
+
r'FileReadBool|FileReadDatetime|FileReadDouble|FileReadFloat|'
|
4807
|
+
r'FileReadInteger|FileReadLong|FileReadNumber|FileReadString|'
|
4808
|
+
r'FileReadStruct|FileSeek|FileSize|FileTell|FileWrite|'
|
4809
|
+
r'FileWriteArray|FileWriteDouble|FileWriteFloat|FileWriteInteger|'
|
4810
|
+
r'FileWriteLong|FileWriteString|FileWriteStruct|FolderCreate|'
|
4811
|
+
r'FolderDelete|FolderClean|FileOpenHistory|'
|
4812
|
+
r'IndicatorSetDouble|IndicatorSetInteger|IndicatorSetString|'
|
4813
|
+
r'SetIndexBuffer|IndicatorBuffers|IndicatorCounted|IndicatorDigits|'
|
4814
|
+
r'IndicatorShortName|SetIndexArrow|SetIndexDrawBegin|'
|
4815
|
+
r'SetIndexEmptyValue|SetIndexLabel|SetIndexShift|'
|
4816
|
+
r'SetIndexStyle|SetLevelStyle|SetLevelValue|'
|
4817
|
+
r'ObjectCreate|ObjectName|ObjectDelete|ObjectsDeleteAll|'
|
4818
|
+
r'ObjectFind|ObjectGetTimeByValue|ObjectGetValueByTime|'
|
4819
|
+
r'ObjectMove|ObjectsTotal|ObjectGetDouble|ObjectGetInteger|'
|
4820
|
+
r'ObjectGetString|ObjectSetDouble|ObjectSetInteger|'
|
4821
|
+
r'ObjectSetString|TextSetFont|TextOut|TextGetSize|'
|
4822
|
+
r'ObjectDescription|ObjectGet|ObjectGetFiboDescription|'
|
4823
|
+
r'ObjectGetShiftByValue|ObjectGetValueByShift|ObjectSet|'
|
4824
|
+
r'ObjectSetFiboDescription|ObjectSetText|ObjectType|'
|
4825
|
+
r'iAC|iAD|iADX|iAlligator|iAO|iATR|iBearsPower|'
|
4826
|
+
r'iBands|iBandsOnArray|iBullsPower|iCCI|iCCIOnArray|'
|
4827
|
+
r'iCustom|iDeMarker|iEnvelopes|iEnvelopesOnArray|'
|
4828
|
+
r'iForce|iFractals|iGator|iIchimoku|iBWMFI|iMomentum|'
|
4829
|
+
r'iMomentumOnArray|iMFI|iMA|iMAOnArray|iOsMA|iMACD|'
|
4830
|
+
r'iOBV|iSAR|iRSI|iRSIOnArray|iRVI|iStdDev|iStdDevOnArray|'
|
4831
|
+
r'iStochastic|iWPR|'
|
4832
|
+
r'EventSetMillisecondTimer|EventSetTimer|'
|
4833
|
+
r'EventKillTimer|EventChartCustom)\b', Name.Function),
|
4834
|
+
(r'(CHARTEVENT_KEYDOWN|CHARTEVENT_MOUSE_MOVE|'
|
4835
|
+
r'CHARTEVENT_OBJECT_CREATE|'
|
4836
|
+
r'CHARTEVENT_OBJECT_CHANGE|CHARTEVENT_OBJECT_DELETE|'
|
4837
|
+
r'CHARTEVENT_CLICK|'
|
4838
|
+
r'CHARTEVENT_OBJECT_CLICK|CHARTEVENT_OBJECT_DRAG|'
|
4839
|
+
r'CHARTEVENT_OBJECT_ENDEDIT|'
|
4840
|
+
r'CHARTEVENT_CHART_CHANGE|CHARTEVENT_CUSTOM|'
|
4841
|
+
r'CHARTEVENT_CUSTOM_LAST|'
|
4842
|
+
r'PERIOD_CURRENT|PERIOD_M1|PERIOD_M2|PERIOD_M3|'
|
4843
|
+
r'PERIOD_M4|PERIOD_M5|'
|
4844
|
+
r'PERIOD_M6|PERIOD_M10|PERIOD_M12|PERIOD_M15|'
|
4845
|
+
r'PERIOD_M20|PERIOD_M30|'
|
4846
|
+
r'PERIOD_H1|PERIOD_H2|PERIOD_H3|PERIOD_H4|'
|
4847
|
+
r'PERIOD_H6|PERIOD_H8|'
|
4848
|
+
r'PERIOD_H12|PERIOD_D1|PERIOD_W1|PERIOD_MN1|'
|
4849
|
+
r'CHART_IS_OBJECT|CHART_BRING_TO_TOP|'
|
4850
|
+
r'CHART_MOUSE_SCROLL|CHART_EVENT_MOUSE_MOVE|'
|
4851
|
+
r'CHART_EVENT_OBJECT_CREATE|'
|
4852
|
+
r'CHART_EVENT_OBJECT_DELETE|CHART_MODE|CHART_FOREGROUND|'
|
4853
|
+
r'CHART_SHIFT|'
|
4854
|
+
r'CHART_AUTOSCROLL|CHART_SCALE|CHART_SCALEFIX|'
|
4855
|
+
r'CHART_SCALEFIX_11|'
|
4856
|
+
r'CHART_SCALE_PT_PER_BAR|CHART_SHOW_OHLC|'
|
4857
|
+
r'CHART_SHOW_BID_LINE|'
|
4858
|
+
r'CHART_SHOW_ASK_LINE|CHART_SHOW_LAST_LINE|'
|
4859
|
+
r'CHART_SHOW_PERIOD_SEP|'
|
4860
|
+
r'CHART_SHOW_GRID|CHART_SHOW_VOLUMES|'
|
4861
|
+
r'CHART_SHOW_OBJECT_DESCR|'
|
4862
|
+
r'CHART_VISIBLE_BARS|CHART_WINDOWS_TOTAL|'
|
4863
|
+
r'CHART_WINDOW_IS_VISIBLE|'
|
4864
|
+
r'CHART_WINDOW_HANDLE|CHART_WINDOW_YDISTANCE|'
|
4865
|
+
r'CHART_FIRST_VISIBLE_BAR|'
|
4866
|
+
r'CHART_WIDTH_IN_BARS|CHART_WIDTH_IN_PIXELS|'
|
4867
|
+
r'CHART_HEIGHT_IN_PIXELS|'
|
4868
|
+
r'CHART_COLOR_BACKGROUND|CHART_COLOR_FOREGROUND|'
|
4869
|
+
r'CHART_COLOR_GRID|'
|
4870
|
+
r'CHART_COLOR_VOLUME|CHART_COLOR_CHART_UP|'
|
4871
|
+
r'CHART_COLOR_CHART_DOWN|'
|
4872
|
+
r'CHART_COLOR_CHART_LINE|CHART_COLOR_CANDLE_BULL|'
|
4873
|
+
r'CHART_COLOR_CANDLE_BEAR|'
|
4874
|
+
r'CHART_COLOR_BID|CHART_COLOR_ASK|CHART_COLOR_LAST|'
|
4875
|
+
r'CHART_COLOR_STOP_LEVEL|'
|
4876
|
+
r'CHART_SHOW_TRADE_LEVELS|CHART_DRAG_TRADE_LEVELS|'
|
4877
|
+
r'CHART_SHOW_DATE_SCALE|'
|
4878
|
+
r'CHART_SHOW_PRICE_SCALE|CHART_SHIFT_SIZE|'
|
4879
|
+
r'CHART_FIXED_POSITION|'
|
4880
|
+
r'CHART_FIXED_MAX|CHART_FIXED_MIN|CHART_POINTS_PER_BAR|'
|
4881
|
+
r'CHART_PRICE_MIN|'
|
4882
|
+
r'CHART_PRICE_MAX|CHART_COMMENT|CHART_BEGIN|'
|
4883
|
+
r'CHART_CURRENT_POS|CHART_END|'
|
4884
|
+
r'CHART_BARS|CHART_CANDLES|CHART_LINE|CHART_VOLUME_HIDE|'
|
4885
|
+
r'CHART_VOLUME_TICK|CHART_VOLUME_REAL|'
|
4886
|
+
r'OBJ_VLINE|OBJ_HLINE|OBJ_TREND|OBJ_TRENDBYANGLE|OBJ_CYCLES|'
|
4887
|
+
r'OBJ_CHANNEL|OBJ_STDDEVCHANNEL|OBJ_REGRESSION|OBJ_PITCHFORK|'
|
4888
|
+
r'OBJ_GANNLINE|OBJ_GANNFAN|OBJ_GANNGRID|OBJ_FIBO|'
|
4889
|
+
r'OBJ_FIBOTIMES|OBJ_FIBOFAN|OBJ_FIBOARC|OBJ_FIBOCHANNEL|'
|
4890
|
+
r'OBJ_EXPANSION|OBJ_RECTANGLE|OBJ_TRIANGLE|OBJ_ELLIPSE|'
|
4891
|
+
r'OBJ_ARROW_THUMB_UP|OBJ_ARROW_THUMB_DOWN|'
|
4892
|
+
r'OBJ_ARROW_UP|OBJ_ARROW_DOWN|'
|
4893
|
+
r'OBJ_ARROW_STOP|OBJ_ARROW_CHECK|OBJ_ARROW_LEFT_PRICE|'
|
4894
|
+
r'OBJ_ARROW_RIGHT_PRICE|OBJ_ARROW_BUY|OBJ_ARROW_SELL|'
|
4895
|
+
r'OBJ_ARROW|'
|
4896
|
+
r'OBJ_TEXT|OBJ_LABEL|OBJ_BUTTON|OBJ_BITMAP|'
|
4897
|
+
r'OBJ_BITMAP_LABEL|'
|
4898
|
+
r'OBJ_EDIT|OBJ_EVENT|OBJ_RECTANGLE_LABEL|'
|
4899
|
+
r'OBJPROP_TIME1|OBJPROP_PRICE1|OBJPROP_TIME2|'
|
4900
|
+
r'OBJPROP_PRICE2|OBJPROP_TIME3|'
|
4901
|
+
r'OBJPROP_PRICE3|OBJPROP_COLOR|OBJPROP_STYLE|'
|
4902
|
+
r'OBJPROP_WIDTH|'
|
4903
|
+
r'OBJPROP_BACK|OBJPROP_RAY|OBJPROP_ELLIPSE|'
|
4904
|
+
r'OBJPROP_SCALE|'
|
4905
|
+
r'OBJPROP_ANGLE|OBJPROP_ARROWCODE|OBJPROP_TIMEFRAMES|'
|
4906
|
+
r'OBJPROP_DEVIATION|OBJPROP_FONTSIZE|OBJPROP_CORNER|'
|
4907
|
+
r'OBJPROP_XDISTANCE|OBJPROP_YDISTANCE|OBJPROP_FIBOLEVELS|'
|
4908
|
+
r'OBJPROP_LEVELCOLOR|OBJPROP_LEVELSTYLE|OBJPROP_LEVELWIDTH|'
|
4909
|
+
r'OBJPROP_FIRSTLEVEL|OBJPROP_COLOR|OBJPROP_STYLE|OBJPROP_WIDTH|'
|
4910
|
+
r'OBJPROP_BACK|OBJPROP_ZORDER|OBJPROP_FILL|OBJPROP_HIDDEN|'
|
4911
|
+
r'OBJPROP_SELECTED|OBJPROP_READONLY|OBJPROP_TYPE|OBJPROP_TIME|'
|
4912
|
+
r'OBJPROP_SELECTABLE|OBJPROP_CREATETIME|OBJPROP_LEVELS|'
|
4913
|
+
r'OBJPROP_LEVELCOLOR|OBJPROP_LEVELSTYLE|OBJPROP_LEVELWIDTH|'
|
4914
|
+
r'OBJPROP_ALIGN|OBJPROP_FONTSIZE|OBJPROP_RAY_RIGHT|OBJPROP_RAY|'
|
4915
|
+
r'OBJPROP_ELLIPSE|OBJPROP_ARROWCODE|OBJPROP_TIMEFRAMES|OBJPROP_ANCHOR|'
|
4916
|
+
r'OBJPROP_XDISTANCE|OBJPROP_YDISTANCE|OBJPROP_DRAWLINES|OBJPROP_STATE|'
|
4917
|
+
r'OBJPROP_CHART_ID|OBJPROP_XSIZE|OBJPROP_YSIZE|OBJPROP_XOFFSET|'
|
4918
|
+
r'OBJPROP_YOFFSET|OBJPROP_PERIOD|OBJPROP_DATE_SCALE|OBJPROP_PRICE_SCALE|'
|
4919
|
+
r'OBJPROP_CHART_SCALE|OBJPROP_BGCOLOR|OBJPROP_CORNER|OBJPROP_BORDER_TYPE|'
|
4920
|
+
r'OBJPROP_BORDER_COLOR|OBJPROP_PRICE|OBJPROP_LEVELVALUE|OBJPROP_SCALE|'
|
4921
|
+
r'OBJPROP_ANGLE|OBJPROP_DEVIATION|'
|
4922
|
+
r'OBJPROP_NAME|OBJPROP_TEXT|OBJPROP_TOOLTIP|OBJPROP_LEVELTEXT|'
|
4923
|
+
r'OBJPROP_FONT|OBJPROP_BMPFILE|OBJPROP_SYMBOL|'
|
4924
|
+
r'BORDER_FLAT|BORDER_RAISED|BORDER_SUNKEN|ALIGN_LEFT|ALIGN_CENTER|'
|
4925
|
+
r'ALIGN_RIGHT|ANCHOR_LEFT_UPPER|ANCHOR_LEFT|ANCHOR_LEFT_LOWER|'
|
4926
|
+
r'ANCHOR_LOWER|ANCHOR_RIGHT_LOWER|ANCHOR_RIGHT|ANCHOR_RIGHT_UPPER|'
|
4927
|
+
r'ANCHOR_UPPER|ANCHOR_CENTER|ANCHOR_TOP|ANCHOR_BOTTOM|'
|
4928
|
+
r'CORNER_LEFT_UPPER|CORNER_LEFT_LOWER|CORNER_RIGHT_LOWER|'
|
4929
|
+
r'CORNER_RIGHT_UPPER|'
|
4930
|
+
r'OBJ_NO_PERIODS|EMPTY|OBJ_PERIOD_M1|OBJ_PERIOD_M5|OBJ_PERIOD_M15|'
|
4931
|
+
r'OBJ_PERIOD_M30|OBJ_PERIOD_H1|OBJ_PERIOD_H4|OBJ_PERIOD_D1|'
|
4932
|
+
r'OBJ_PERIOD_W1|OBJ_PERIOD_MN1|OBJ_ALL_PERIODS|'
|
4933
|
+
r'GANN_UP_TREND|GANN_DOWN_TREND|'
|
4934
|
+
r'((clr)?(Black|DarkGreen|DarkSlateGray|Olive|'
|
4935
|
+
r'Green|Teal|Navy|Purple|'
|
4936
|
+
r'Maroon|Indigo|MidnightBlue|DarkBlue|'
|
4937
|
+
r'DarkOliveGreen|SaddleBrown|'
|
4938
|
+
r'ForestGreen|OliveDrab|SeaGreen|'
|
4939
|
+
r'DarkGoldenrod|DarkSlateBlue|'
|
4940
|
+
r'Sienna|MediumBlue|Brown|DarkTurquoise|'
|
4941
|
+
r'DimGray|LightSeaGreen|'
|
4942
|
+
r'DarkViolet|FireBrick|MediumVioletRed|'
|
4943
|
+
r'MediumSeaGreen|Chocolate|'
|
4944
|
+
r'Crimson|SteelBlue|Goldenrod|MediumSpringGreen|'
|
4945
|
+
r'LawnGreen|CadetBlue|'
|
4946
|
+
r'DarkOrchid|YellowGreen|LimeGreen|OrangeRed|'
|
4947
|
+
r'DarkOrange|Orange|'
|
4948
|
+
r'Gold|Yellow|Chartreuse|Lime|SpringGreen|'
|
4949
|
+
r'Aqua|DeepSkyBlue|Blue|'
|
4950
|
+
r'Magenta|Red|Gray|SlateGray|Peru|BlueViolet|'
|
4951
|
+
r'LightSlateGray|DeepPink|'
|
4952
|
+
r'MediumTurquoise|DodgerBlue|Turquoise|RoyalBlue|'
|
4953
|
+
r'SlateBlue|DarkKhaki|'
|
4954
|
+
r'IndianRed|MediumOrchid|GreenYellow|'
|
4955
|
+
r'MediumAquamarine|DarkSeaGreen|'
|
4956
|
+
r'Tomato|RosyBrown|Orchid|MediumPurple|'
|
4957
|
+
r'PaleVioletRed|Coral|CornflowerBlue|'
|
4958
|
+
r'DarkGray|SandyBrown|MediumSlateBlue|'
|
4959
|
+
r'Tan|DarkSalmon|BurlyWood|'
|
4960
|
+
r'HotPink|Salmon|Violet|LightCoral|SkyBlue|'
|
4961
|
+
r'LightSalmon|Plum|'
|
4962
|
+
r'Khaki|LightGreen|Aquamarine|Silver|'
|
4963
|
+
r'LightSkyBlue|LightSteelBlue|'
|
4964
|
+
r'LightBlue|PaleGreen|Thistle|PowderBlue|'
|
4965
|
+
r'PaleGoldenrod|PaleTurquoise|'
|
4966
|
+
r'LightGray|Wheat|NavajoWhite|Moccasin|'
|
4967
|
+
r'LightPink|Gainsboro|PeachPuff|'
|
4968
|
+
r'Pink|Bisque|LightGoldenrod|BlanchedAlmond|'
|
4969
|
+
r'LemonChiffon|Beige|'
|
4970
|
+
r'AntiqueWhite|PapayaWhip|Cornsilk|'
|
4971
|
+
r'LightYellow|LightCyan|Linen|'
|
4972
|
+
r'Lavender|MistyRose|OldLace|WhiteSmoke|'
|
4973
|
+
r'Seashell|Ivory|Honeydew|'
|
4974
|
+
r'AliceBlue|LavenderBlush|MintCream|Snow|White))|'
|
4975
|
+
r'SYMBOL_THUMBSUP|SYMBOL_THUMBSDOWN|'
|
4976
|
+
r'SYMBOL_ARROWUP|SYMBOL_ARROWDOWN|'
|
4977
|
+
r'SYMBOL_STOPSIGN|SYMBOL_CHECKSIGN|'
|
4978
|
+
r'SYMBOL_LEFTPRICE|SYMBOL_RIGHTPRICE|'
|
4979
|
+
r'PRICE_CLOSE|PRICE_OPEN|PRICE_HIGH|PRICE_LOW|'
|
4980
|
+
r'PRICE_MEDIAN|PRICE_TYPICAL|PRICE_WEIGHTED|'
|
4981
|
+
r'VOLUME_TICK|VOLUME_REAL|'
|
4982
|
+
r'STO_LOWHIGH|STO_CLOSECLOSE|'
|
4983
|
+
r'MODE_OPEN|MODE_LOW|MODE_HIGH|MODE_CLOSE|MODE_VOLUME|MODE_TIME|'
|
4984
|
+
r'MODE_SMA|MODE_EMA|MODE_SMMA|MODE_LWMA|'
|
4985
|
+
r'MODE_MAIN|MODE_SIGNAL|MODE_MAIN|'
|
4986
|
+
r'MODE_PLUSDI|MODE_MINUSDI|MODE_UPPER|'
|
4987
|
+
r'MODE_LOWER|MODE_GATORJAW|MODE_GATORTEETH|'
|
4988
|
+
r'MODE_GATORLIPS|MODE_TENKANSEN|'
|
4989
|
+
r'MODE_KIJUNSEN|MODE_SENKOUSPANA|'
|
4990
|
+
r'MODE_SENKOUSPANB|MODE_CHINKOUSPAN|'
|
4991
|
+
r'DRAW_LINE|DRAW_SECTION|DRAW_HISTOGRAM|'
|
4992
|
+
r'DRAW_ARROW|DRAW_ZIGZAG|DRAW_NONE|'
|
4993
|
+
r'STYLE_SOLID|STYLE_DASH|STYLE_DOT|'
|
4994
|
+
r'STYLE_DASHDOT|STYLE_DASHDOTDOT|'
|
4995
|
+
r'DRAW_NONE|DRAW_LINE|DRAW_SECTION|DRAW_HISTOGRAM|'
|
4996
|
+
r'DRAW_ARROW|DRAW_ZIGZAG|DRAW_FILLING|'
|
4997
|
+
r'INDICATOR_DATA|INDICATOR_COLOR_INDEX|'
|
4998
|
+
r'INDICATOR_CALCULATIONS|INDICATOR_DIGITS|'
|
4999
|
+
r'INDICATOR_HEIGHT|INDICATOR_LEVELS|'
|
5000
|
+
r'INDICATOR_LEVELCOLOR|INDICATOR_LEVELSTYLE|'
|
5001
|
+
r'INDICATOR_LEVELWIDTH|INDICATOR_MINIMUM|'
|
5002
|
+
r'INDICATOR_MAXIMUM|INDICATOR_LEVELVALUE|'
|
5003
|
+
r'INDICATOR_SHORTNAME|INDICATOR_LEVELTEXT|'
|
5004
|
+
r'TERMINAL_BUILD|TERMINAL_CONNECTED|'
|
5005
|
+
r'TERMINAL_DLLS_ALLOWED|TERMINAL_TRADE_ALLOWED|'
|
5006
|
+
r'TERMINAL_EMAIL_ENABLED|'
|
5007
|
+
r'TERMINAL_FTP_ENABLED|TERMINAL_MAXBARS|'
|
5008
|
+
r'TERMINAL_CODEPAGE|TERMINAL_CPU_CORES|'
|
5009
|
+
r'TERMINAL_DISK_SPACE|TERMINAL_MEMORY_PHYSICAL|'
|
5010
|
+
r'TERMINAL_MEMORY_TOTAL|'
|
5011
|
+
r'TERMINAL_MEMORY_AVAILABLE|TERMINAL_MEMORY_USED|'
|
5012
|
+
r'TERMINAL_X64|'
|
5013
|
+
r'TERMINAL_OPENCL_SUPPORT|TERMINAL_LANGUAGE|'
|
5014
|
+
r'TERMINAL_COMPANY|TERMINAL_NAME|'
|
5015
|
+
r'TERMINAL_PATH|TERMINAL_DATA_PATH|'
|
5016
|
+
r'TERMINAL_COMMONDATA_PATH|'
|
5017
|
+
r'MQL_PROGRAM_TYPE|MQL_DLLS_ALLOWED|'
|
5018
|
+
r'MQL_TRADE_ALLOWED|MQL_DEBUG|'
|
5019
|
+
r'MQL_PROFILER|MQL_TESTER|MQL_OPTIMIZATION|'
|
5020
|
+
r'MQL_VISUAL_MODE|'
|
5021
|
+
r'MQL_FRAME_MODE|MQL_LICENSE_TYPE|MQL_PROGRAM_NAME|'
|
5022
|
+
r'MQL_PROGRAM_PATH|'
|
5023
|
+
r'PROGRAM_SCRIPT|PROGRAM_EXPERT|'
|
5024
|
+
r'PROGRAM_INDICATOR|LICENSE_FREE|'
|
5025
|
+
r'LICENSE_DEMO|LICENSE_FULL|LICENSE_TIME|'
|
5026
|
+
r'MODE_LOW|MODE_HIGH|MODE_TIME|MODE_BID|'
|
5027
|
+
r'MODE_ASK|MODE_POINT|'
|
5028
|
+
r'MODE_DIGITS|MODE_SPREAD|MODE_STOPLEVEL|'
|
5029
|
+
r'MODE_LOTSIZE|MODE_TICKVALUE|'
|
5030
|
+
r'MODE_TICKSIZE|MODE_SWAPLONG|'
|
5031
|
+
r'MODE_SWAPSHORT|MODE_STARTING|'
|
5032
|
+
r'MODE_EXPIRATION|MODE_TRADEALLOWED|'
|
5033
|
+
r'MODE_MINLOT|MODE_LOTSTEP|MODE_MAXLOT|'
|
5034
|
+
r'MODE_SWAPTYPE|MODE_PROFITCALCMODE|'
|
5035
|
+
r'MODE_MARGINCALCMODE|MODE_MARGININIT|'
|
5036
|
+
r'MODE_MARGINMAINTENANCE|MODE_MARGINHEDGED|'
|
5037
|
+
r'MODE_MARGINREQUIRED|MODE_FREEZELEVEL|'
|
5038
|
+
r'SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|'
|
5039
|
+
r'FRIDAY|SATURDAY|'
|
5040
|
+
r'ACCOUNT_LOGIN|ACCOUNT_TRADE_MODE|'
|
5041
|
+
r'ACCOUNT_LEVERAGE|'
|
5042
|
+
r'ACCOUNT_LIMIT_ORDERS|ACCOUNT_MARGIN_SO_MODE|'
|
5043
|
+
r'ACCOUNT_TRADE_ALLOWED|ACCOUNT_TRADE_EXPERT|'
|
5044
|
+
r'ACCOUNT_BALANCE|'
|
5045
|
+
r'ACCOUNT_CREDIT|ACCOUNT_PROFIT|ACCOUNT_EQUITY|'
|
5046
|
+
r'ACCOUNT_MARGIN|'
|
5047
|
+
r'ACCOUNT_FREEMARGIN|ACCOUNT_MARGIN_LEVEL|'
|
5048
|
+
r'ACCOUNT_MARGIN_SO_CALL|'
|
5049
|
+
r'ACCOUNT_MARGIN_SO_SO|ACCOUNT_NAME|'
|
5050
|
+
r'ACCOUNT_SERVER|ACCOUNT_CURRENCY|'
|
5051
|
+
r'ACCOUNT_COMPANY|ACCOUNT_TRADE_MODE_DEMO|'
|
5052
|
+
r'ACCOUNT_TRADE_MODE_CONTEST|'
|
5053
|
+
r'ACCOUNT_TRADE_MODE_REAL|ACCOUNT_STOPOUT_MODE_PERCENT|'
|
5054
|
+
r'ACCOUNT_STOPOUT_MODE_MONEY|'
|
5055
|
+
r'STAT_INITIAL_DEPOSIT|STAT_WITHDRAWAL|STAT_PROFIT|'
|
5056
|
+
r'STAT_GROSS_PROFIT|'
|
5057
|
+
r'STAT_GROSS_LOSS|STAT_MAX_PROFITTRADE|'
|
5058
|
+
r'STAT_MAX_LOSSTRADE|STAT_CONPROFITMAX|'
|
5059
|
+
r'STAT_CONPROFITMAX_TRADES|STAT_MAX_CONWINS|'
|
5060
|
+
r'STAT_MAX_CONPROFIT_TRADES|'
|
5061
|
+
r'STAT_CONLOSSMAX|STAT_CONLOSSMAX_TRADES|'
|
5062
|
+
r'STAT_MAX_CONLOSSES|'
|
5063
|
+
r'STAT_MAX_CONLOSS_TRADES|STAT_BALANCEMIN|'
|
5064
|
+
r'STAT_BALANCE_DD|'
|
5065
|
+
r'STAT_BALANCEDD_PERCENT|STAT_BALANCE_DDREL_PERCENT|'
|
5066
|
+
r'STAT_BALANCE_DD_RELATIVE|STAT_EQUITYMIN|'
|
5067
|
+
r'STAT_EQUITY_DD|'
|
5068
|
+
r'STAT_EQUITYDD_PERCENT|STAT_EQUITY_DDREL_PERCENT|'
|
5069
|
+
r'STAT_EQUITY_DD_RELATIVE|STAT_EXPECTED_PAYOFF|'
|
5070
|
+
r'STAT_PROFIT_FACTOR|'
|
5071
|
+
r'STAT_RECOVERY_FACTOR|STAT_SHARPE_RATIO|'
|
5072
|
+
r'STAT_MIN_MARGINLEVEL|'
|
5073
|
+
r'STAT_CUSTOM_ONTESTER|STAT_DEALS|STAT_TRADES|'
|
5074
|
+
r'STAT_PROFIT_TRADES|'
|
5075
|
+
r'STAT_LOSS_TRADES|STAT_SHORT_TRADES|STAT_LONG_TRADES|'
|
5076
|
+
r'STAT_PROFIT_SHORTTRADES|STAT_PROFIT_LONGTRADES|'
|
5077
|
+
r'STAT_PROFITTRADES_AVGCON|STAT_LOSSTRADES_AVGCON|'
|
5078
|
+
r'SERIES_BARS_COUNT|SERIES_FIRSTDATE|SERIES_LASTBAR_DATE|'
|
5079
|
+
r'SERIES_SERVER_FIRSTDATE|SERIES_TERMINAL_FIRSTDATE|'
|
5080
|
+
r'SERIES_SYNCHRONIZED|'
|
5081
|
+
r'OP_BUY|OP_SELL|OP_BUYLIMIT|OP_SELLLIMIT|'
|
5082
|
+
r'OP_BUYSTOP|OP_SELLSTOP|'
|
5083
|
+
r'TRADE_ACTION_DEAL|TRADE_ACTION_PENDING|'
|
5084
|
+
r'TRADE_ACTION_SLTP|'
|
5085
|
+
r'TRADE_ACTION_MODIFY|TRADE_ACTION_REMOVE|'
|
5086
|
+
r'__DATE__|__DATETIME__|__LINE__|__FILE__|'
|
5087
|
+
r'__PATH__|__FUNCTION__|'
|
5088
|
+
r'__FUNCSIG__|__MQLBUILD__|__MQL4BUILD__|'
|
5089
|
+
r'M_E|M_LOG2E|M_LOG10E|M_LN2|M_LN10|'
|
5090
|
+
r'M_PI|M_PI_2|M_PI_4|M_1_PI|'
|
5091
|
+
r'M_2_PI|M_2_SQRTPI|M_SQRT2|M_SQRT1_2|'
|
5092
|
+
r'CHAR_MIN|CHAR_MAX|UCHAR_MAX|'
|
5093
|
+
r'SHORT_MIN|SHORT_MAX|USHORT_MAX|'
|
5094
|
+
r'INT_MIN|INT_MAX|UINT_MAX|'
|
5095
|
+
r'LONG_MIN|LONG_MAX|ULONG_MAX|'
|
5096
|
+
r'DBL_MIN|DBL_MAX|DBL_EPSILON|DBL_DIG|DBL_MANT_DIG|'
|
5097
|
+
r'DBL_MAX_10_EXP|DBL_MAX_EXP|DBL_MIN_10_EXP|DBL_MIN_EXP|'
|
5098
|
+
r'FLT_MIN|FLT_MAX|FLT_EPSILON|'
|
5099
|
+
r'FLT_DIG|FLT_MANT_DIG|FLT_MAX_10_EXP|'
|
5100
|
+
r'FLT_MAX_EXP|FLT_MIN_10_EXP|FLT_MIN_EXP|REASON_PROGRAM'
|
5101
|
+
r'REASON_REMOVE|REASON_RECOMPILE|'
|
5102
|
+
r'REASON_CHARTCHANGE|REASON_CHARTCLOSE|'
|
5103
|
+
r'REASON_PARAMETERS|REASON_ACCOUNT|'
|
5104
|
+
r'REASON_TEMPLATE|REASON_INITFAILED|'
|
5105
|
+
r'REASON_CLOSE|POINTER_INVALID'
|
5106
|
+
r'POINTER_DYNAMIC|POINTER_AUTOMATIC|'
|
5107
|
+
r'NULL|EMPTY|EMPTY_VALUE|CLR_NONE|WHOLE_ARRAY|'
|
5108
|
+
r'CHARTS_MAX|clrNONE|EMPTY_VALUE|INVALID_HANDLE|'
|
5109
|
+
r'IS_DEBUG_MODE|IS_PROFILE_MODE|NULL|WHOLE_ARRAY|WRONG_VALUE|'
|
5110
|
+
r'ERR_NO_ERROR|ERR_NO_RESULT|ERR_COMMON_ERROR|'
|
5111
|
+
r'ERR_INVALID_TRADE_PARAMETERS|'
|
5112
|
+
r'ERR_SERVER_BUSY|ERR_OLD_VERSION|ERR_NO_CONNECTION|'
|
5113
|
+
r'ERR_NOT_ENOUGH_RIGHTS|'
|
5114
|
+
r'ERR_TOO_FREQUENT_REQUESTS|ERR_MALFUNCTIONAL_TRADE|'
|
5115
|
+
r'ERR_ACCOUNT_DISABLED|'
|
5116
|
+
r'ERR_INVALID_ACCOUNT|ERR_TRADE_TIMEOUT|'
|
5117
|
+
r'ERR_INVALID_PRICE|ERR_INVALID_STOPS|'
|
5118
|
+
r'ERR_INVALID_TRADE_VOLUME|ERR_MARKET_CLOSED|'
|
5119
|
+
r'ERR_TRADE_DISABLED|'
|
5120
|
+
r'ERR_NOT_ENOUGH_MONEY|ERR_PRICE_CHANGED|'
|
5121
|
+
r'ERR_OFF_QUOTES|ERR_BROKER_BUSY|'
|
5122
|
+
r'ERR_REQUOTE|ERR_ORDER_LOCKED|'
|
5123
|
+
r'ERR_LONG_POSITIONS_ONLY_ALLOWED|ERR_TOO_MANY_REQUESTS|'
|
5124
|
+
r'ERR_TRADE_MODIFY_DENIED|ERR_TRADE_CONTEXT_BUSY|'
|
5125
|
+
r'ERR_TRADE_EXPIRATION_DENIED|'
|
5126
|
+
r'ERR_TRADE_TOO_MANY_ORDERS|ERR_TRADE_HEDGE_PROHIBITED|'
|
5127
|
+
r'ERR_TRADE_PROHIBITED_BY_FIFO|'
|
5128
|
+
r'FILE_READ|FILE_WRITE|FILE_BIN|FILE_CSV|FILE_TXT|'
|
5129
|
+
r'FILE_ANSI|FILE_UNICODE|'
|
5130
|
+
r'FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_REWRITE|'
|
5131
|
+
r'FILE_COMMON|FILE_EXISTS|'
|
5132
|
+
r'FILE_CREATE_DATE|FILE_MODIFY_DATE|'
|
5133
|
+
r'FILE_ACCESS_DATE|FILE_SIZE|FILE_POSITION|'
|
5134
|
+
r'FILE_END|FILE_LINE_END|FILE_IS_COMMON|'
|
5135
|
+
r'FILE_IS_TEXT|FILE_IS_BINARY|'
|
5136
|
+
r'FILE_IS_CSV|FILE_IS_ANSI|FILE_IS_READABLE|FILE_IS_WRITABLE|'
|
5137
|
+
r'SEEK_SET|SEEK_CUR|SEEK_END|CP_ACP|'
|
5138
|
+
r'CP_OEMCP|CP_MACCP|CP_THREAD_ACP|'
|
5139
|
+
r'CP_SYMBOL|CP_UTF7|CP_UTF8|IDOK|IDCANCEL|IDABORT|'
|
5140
|
+
r'IDRETRY|IDIGNORE|IDYES|IDNO|IDTRYAGAIN|IDCONTINUE|'
|
5141
|
+
r'MB_OK|MB_OKCANCEL|MB_ABORTRETRYIGNORE|MB_YESNOCANCEL|'
|
5142
|
+
r'MB_YESNO|MB_RETRYCANCEL|'
|
5143
|
+
r'MB_CANCELTRYCONTINUE|MB_ICONSTOP|MB_ICONERROR|'
|
5144
|
+
r'MB_ICONHAND|MB_ICONQUESTION|'
|
5145
|
+
r'MB_ICONEXCLAMATION|MB_ICONWARNING|'
|
5146
|
+
r'MB_ICONINFORMATION|MB_ICONASTERISK|'
|
5147
|
+
r'MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4)\b',
|
5148
|
+
Name.Constant),
|
5149
|
+
inherit,
|
5150
|
+
],
|
5151
|
+
}
|
5152
|
+
|
5153
|
+
class SwiftLexer(ObjectiveCLexer):
|
5154
|
+
"""
|
5155
|
+
For `Swift <https://developer.apple.com/swift/>`_ source.
|
5156
|
+
"""
|
5157
|
+
name = 'Swift'
|
5158
|
+
filenames = ['*.swift']
|
5159
|
+
aliases = ['swift']
|
5160
|
+
mimetypes = ['text/x-swift']
|
5161
|
+
|
5162
|
+
keywords_decl = ['class', 'deinit', 'enum', 'extension', 'func', 'import',
|
5163
|
+
'init', 'let', 'protocol', 'static', 'struct', 'subscript',
|
5164
|
+
'typealias', 'var']
|
5165
|
+
keywords_stmt = ['break', 'case', 'continue', 'default', 'do', 'else',
|
5166
|
+
'fallthrough', 'if', 'in', 'for', 'return', 'switch',
|
5167
|
+
'where', 'while']
|
5168
|
+
keywords_type = ['as', 'dynamicType', 'is', 'new', 'super', 'self', 'Self',
|
5169
|
+
'Type', '__COLUMN__', '__FILE__', '__FUNCTION__',
|
5170
|
+
'__LINE__']
|
5171
|
+
keywords_resrv = ['associativity', 'didSet', 'get', 'infix', 'inout', 'left',
|
5172
|
+
'mutating', 'none', 'nonmutating', 'operator', 'override',
|
5173
|
+
'postfix', 'precedence', 'prefix', 'right', 'set',
|
5174
|
+
'unowned', 'unowned(safe)', 'unowned(unsafe)', 'weak',
|
5175
|
+
'willSet']
|
5176
|
+
operators = ['->']
|
5177
|
+
|
5178
|
+
def get_tokens_unprocessed(self, text):
|
5179
|
+
for index, token, value in \
|
5180
|
+
ObjectiveCLexer.get_tokens_unprocessed(self, text):
|
5181
|
+
if token is Name:
|
5182
|
+
if value in self.keywords_decl:
|
5183
|
+
token = Keyword
|
5184
|
+
elif value in self.keywords_stmt:
|
5185
|
+
token = Keyword
|
5186
|
+
elif value in self.keywords_type:
|
5187
|
+
token = Keyword.Type
|
5188
|
+
elif value in self.keywords_resrv:
|
5189
|
+
token = Keyword.Reserved
|
5190
|
+
elif value in self.operators:
|
5191
|
+
token = Operator
|
5192
|
+
yield index, token, value
|