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
@@ -0,0 +1,81 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
pygments.lexers.graph
|
4
|
+
~~~~~~~~~~~~~~~~~~~~~
|
5
|
+
|
6
|
+
Lexers for graph query languages.
|
7
|
+
|
8
|
+
:copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
|
9
|
+
:license: BSD, see LICENSE for details.
|
10
|
+
"""
|
11
|
+
|
12
|
+
import re
|
13
|
+
|
14
|
+
from pygments.lexer import RegexLexer, include, bygroups, using, this
|
15
|
+
from pygments.token import Keyword, Punctuation, Text, Comment, Operator, Name,\
|
16
|
+
String, Number, Generic, Whitespace
|
17
|
+
|
18
|
+
|
19
|
+
__all__ = ['CypherLexer']
|
20
|
+
|
21
|
+
|
22
|
+
class CypherLexer(RegexLexer):
|
23
|
+
"""
|
24
|
+
For `Cypher Query Language
|
25
|
+
<http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html>`_
|
26
|
+
|
27
|
+
For the Cypher version in Neo4J 2.0
|
28
|
+
|
29
|
+
.. versionadded:: 2.0
|
30
|
+
"""
|
31
|
+
name = 'Cypher'
|
32
|
+
aliases = ['cypher']
|
33
|
+
filenames = ['*.cyp','*.cypher']
|
34
|
+
|
35
|
+
flags = re.MULTILINE | re.IGNORECASE
|
36
|
+
|
37
|
+
tokens = {
|
38
|
+
'root': [
|
39
|
+
include('comment'),
|
40
|
+
include('keywords'),
|
41
|
+
include('clauses'),
|
42
|
+
include('relations'),
|
43
|
+
include('strings'),
|
44
|
+
include('whitespace'),
|
45
|
+
include('barewords'),
|
46
|
+
],
|
47
|
+
'comment': [
|
48
|
+
(r'^.*//.*\n', Comment.Single),
|
49
|
+
],
|
50
|
+
'keywords': [
|
51
|
+
(r'(create|order|match|limit|set|skip|start|return|with|where|'
|
52
|
+
r'delete|foreach|not|by)\b', Keyword),
|
53
|
+
],
|
54
|
+
'clauses': [
|
55
|
+
# TODO: many missing ones, see http://docs.neo4j.org/refcard/2.0/
|
56
|
+
(r'(all|any|as|asc|create|create\s+unique|delete|'
|
57
|
+
r'desc|distinct|foreach|in|is\s+null|limit|match|none|'
|
58
|
+
r'order\s+by|return|set|skip|single|start|union|where|with)\b',
|
59
|
+
Keyword),
|
60
|
+
],
|
61
|
+
'relations': [
|
62
|
+
(r'(-\[)(.*?)(\]->)', bygroups(Operator, using(this), Operator)),
|
63
|
+
(r'(<-\[)(.*?)(\]-)', bygroups(Operator, using(this), Operator)),
|
64
|
+
(r'-->|<--|\[|\]', Operator),
|
65
|
+
(r'<|>|<>|=|<=|=>|\(|\)|\||:|,|;', Punctuation),
|
66
|
+
(r'[.*{}]', Punctuation),
|
67
|
+
],
|
68
|
+
'strings': [
|
69
|
+
(r'"(?:\\[tbnrf\'\"\\]|[^\\"])*"', String),
|
70
|
+
(r'`(?:``|[^`])+`', Name.Variable),
|
71
|
+
],
|
72
|
+
'whitespace': [
|
73
|
+
(r'\s+', Whitespace),
|
74
|
+
],
|
75
|
+
'barewords': [
|
76
|
+
(r'[a-z]\w*', Name),
|
77
|
+
(r'\d+', Number),
|
78
|
+
],
|
79
|
+
}
|
80
|
+
|
81
|
+
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Lexers for hardware descriptor 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
|
|
@@ -22,7 +22,7 @@ class VerilogLexer(RegexLexer):
|
|
22
22
|
"""
|
23
23
|
For verilog source code with preprocessor directives.
|
24
24
|
|
25
|
-
|
25
|
+
.. versionadded:: 1.4
|
26
26
|
"""
|
27
27
|
name = 'verilog'
|
28
28
|
aliases = ['verilog', 'v']
|
@@ -46,7 +46,7 @@ class VerilogLexer(RegexLexer):
|
|
46
46
|
(r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
|
47
47
|
(r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
|
48
48
|
(r'([0-9]+)|(\'h)[0-9a-fA-F]+', Number.Hex),
|
49
|
-
(r'([0-9]+)|(\'b)[0-1]+', Number.
|
49
|
+
(r'([0-9]+)|(\'b)[0-1]+', Number.Bin),
|
50
50
|
(r'([0-9]+)|(\'d)[0-9]+', Number.Integer),
|
51
51
|
(r'([0-9]+)|(\'o)[0-7]+', Number.Oct),
|
52
52
|
(r'\'[01xz]', Number),
|
@@ -54,7 +54,7 @@ class VerilogLexer(RegexLexer):
|
|
54
54
|
(r'\*/', Error),
|
55
55
|
(r'[~!%^&*+=|?:<>/-]', Operator),
|
56
56
|
(r'[()\[\],.;\']', Punctuation),
|
57
|
-
(r'`[a-zA-Z_]
|
57
|
+
(r'`[a-zA-Z_]\w*', Name.Constant),
|
58
58
|
|
59
59
|
(r'^(\s*)(package)(\s+)', bygroups(Text, Keyword.Namespace, Text)),
|
60
60
|
(r'^(\s*)(import)(\s+)', bygroups(Text, Keyword.Namespace, Text),
|
@@ -96,8 +96,8 @@ class VerilogLexer(RegexLexer):
|
|
96
96
|
r'bit|logic|reg|'
|
97
97
|
r'supply0|supply1|tri|triand|trior|tri0|tri1|trireg|uwire|wire|wand|wor'
|
98
98
|
r'shortreal|real|realtime)\b', Keyword.Type),
|
99
|
-
('[a-zA-Z_]
|
100
|
-
('[a-zA-Z_]
|
99
|
+
('[a-zA-Z_]\w*:(?!:)', Name.Label),
|
100
|
+
('[a-zA-Z_]\w*', Name),
|
101
101
|
],
|
102
102
|
'string': [
|
103
103
|
(r'"', String, '#pop'),
|
@@ -115,7 +115,7 @@ class VerilogLexer(RegexLexer):
|
|
115
115
|
(r'\n', Comment.Preproc, '#pop'),
|
116
116
|
],
|
117
117
|
'import': [
|
118
|
-
(r'[
|
118
|
+
(r'[\w:]+\*?', Name.Namespace, '#pop')
|
119
119
|
]
|
120
120
|
}
|
121
121
|
|
@@ -134,7 +134,7 @@ class SystemVerilogLexer(RegexLexer):
|
|
134
134
|
Extends verilog lexer to recognise all SystemVerilog keywords from IEEE
|
135
135
|
1800-2009 standard.
|
136
136
|
|
137
|
-
|
137
|
+
.. versionadded:: 1.5
|
138
138
|
"""
|
139
139
|
name = 'systemverilog'
|
140
140
|
aliases = ['systemverilog', 'sv']
|
@@ -161,7 +161,7 @@ class SystemVerilogLexer(RegexLexer):
|
|
161
161
|
(r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
|
162
162
|
(r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
|
163
163
|
(r'([0-9]+)|(\'h)[0-9a-fA-F]+', Number.Hex),
|
164
|
-
(r'([0-9]+)|(\'b)[0-1]+', Number.
|
164
|
+
(r'([0-9]+)|(\'b)[0-1]+', Number.Bin),
|
165
165
|
(r'([0-9]+)|(\'d)[0-9]+', Number.Integer),
|
166
166
|
(r'([0-9]+)|(\'o)[0-7]+', Number.Oct),
|
167
167
|
(r'\'[01xz]', Number),
|
@@ -169,7 +169,7 @@ class SystemVerilogLexer(RegexLexer):
|
|
169
169
|
(r'\*/', Error),
|
170
170
|
(r'[~!%^&*+=|?:<>/-]', Operator),
|
171
171
|
(r'[()\[\],.;\']', Punctuation),
|
172
|
-
(r'`[a-zA-Z_]
|
172
|
+
(r'`[a-zA-Z_]\w*', Name.Constant),
|
173
173
|
|
174
174
|
(r'(accept_on|alias|always|always_comb|always_ff|always_latch|'
|
175
175
|
r'and|assert|assign|assume|automatic|before|begin|bind|bins|'
|
@@ -215,12 +215,12 @@ class SystemVerilogLexer(RegexLexer):
|
|
215
215
|
r'\$dumpportsall|\$dumpportsflush|\$dumpportslimit|\$dumpportsoff|'
|
216
216
|
r'\$dumpportson|\$dumpvars|\$fclose|\$fdisplay|\$fdisplayb|'
|
217
217
|
r'\$fdisplayh|\$fdisplayo|\$feof|\$ferror|\$fflush|\$fgetc|'
|
218
|
-
r'\$fgets|\$fmonitor|\$fmonitorb|\$fmonitorh|\$fmonitoro|'
|
218
|
+
r'\$fgets|\$finish|\$fmonitor|\$fmonitorb|\$fmonitorh|\$fmonitoro|'
|
219
219
|
r'\$fopen|\$fread|\$fscanf|\$fseek|\$fstrobe|\$fstrobeb|\$fstrobeh|'
|
220
220
|
r'\$fstrobeo|\$ftell|\$fwrite|\$fwriteb|\$fwriteh|\$fwriteo|'
|
221
221
|
r'\$monitor|\$monitorb|\$monitorh|\$monitoro|\$monitoroff|'
|
222
|
-
r'\$monitoron|\$plusargs|\$readmemb|\$readmemh|\$rewind
|
223
|
-
r'\$sformatf|\$sscanf|\$strobe|\$strobeb|\$strobeh|\$strobeo|'
|
222
|
+
r'\$monitoron|\$plusargs|\$random\|$readmemb|\$readmemh|\$rewind|'
|
223
|
+
r'\$sformat|\$sformatf|\$sscanf|\$strobe|\$strobeb|\$strobeh|\$strobeo|'
|
224
224
|
r'\$swrite|\$swriteb|\$swriteh|\$swriteo|\$test|\$ungetc|'
|
225
225
|
r'\$value\$plusargs|\$write|\$writeb|\$writeh|\$writememb|'
|
226
226
|
r'\$writememh|\$writeo)\b' , Name.Builtin ),
|
@@ -230,11 +230,11 @@ class SystemVerilogLexer(RegexLexer):
|
|
230
230
|
r'bit|logic|reg|'
|
231
231
|
r'supply0|supply1|tri|triand|trior|tri0|tri1|trireg|uwire|wire|wand|wor'
|
232
232
|
r'shortreal|real|realtime)\b', Keyword.Type),
|
233
|
-
('[a-zA-Z_]
|
234
|
-
('[a-zA-Z_]
|
233
|
+
('[a-zA-Z_]\w*:(?!:)', Name.Label),
|
234
|
+
('[a-zA-Z_]\w*', Name),
|
235
235
|
],
|
236
236
|
'classname': [
|
237
|
-
(r'[a-zA-Z_]
|
237
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop'),
|
238
238
|
],
|
239
239
|
'string': [
|
240
240
|
(r'"', String, '#pop'),
|
@@ -252,7 +252,7 @@ class SystemVerilogLexer(RegexLexer):
|
|
252
252
|
(r'\n', Comment.Preproc, '#pop'),
|
253
253
|
],
|
254
254
|
'import': [
|
255
|
-
(r'[
|
255
|
+
(r'[\w:]+\*?', Name.Namespace, '#pop')
|
256
256
|
]
|
257
257
|
}
|
258
258
|
|
@@ -274,7 +274,7 @@ class VhdlLexer(RegexLexer):
|
|
274
274
|
"""
|
275
275
|
For VHDL source code.
|
276
276
|
|
277
|
-
|
277
|
+
.. versionadded:: 1.5
|
278
278
|
"""
|
279
279
|
name = 'vhdl'
|
280
280
|
aliases = ['vhdl']
|
@@ -290,19 +290,19 @@ class VhdlLexer(RegexLexer):
|
|
290
290
|
(r'--(?![!#$%&*+./<=>?@\^|_~]).*?$', Comment.Single),
|
291
291
|
(r"'(U|X|0|1|Z|W|L|H|-)'", String.Char),
|
292
292
|
(r'[~!%^&*+=|?:<>/-]', Operator),
|
293
|
-
(r"'[a-
|
293
|
+
(r"'[a-z_]\w*", Name.Attribute),
|
294
294
|
(r'[()\[\],.;\']', Punctuation),
|
295
295
|
(r'"[^\n\\]*"', String),
|
296
296
|
|
297
|
-
(r'(library)(\s+)([a-
|
297
|
+
(r'(library)(\s+)([a-z_]\w*)',
|
298
298
|
bygroups(Keyword, Text, Name.Namespace)),
|
299
299
|
(r'(use)(\s+)(entity)', bygroups(Keyword, Text, Keyword)),
|
300
|
-
(r'(use)(\s+)([a-
|
300
|
+
(r'(use)(\s+)([a-z_][\.\w]*)',
|
301
301
|
bygroups(Keyword, Text, Name.Namespace)),
|
302
|
-
(r'(entity|component)(\s+)([a-
|
302
|
+
(r'(entity|component)(\s+)([a-z_]\w*)',
|
303
303
|
bygroups(Keyword, Text, Name.Class)),
|
304
|
-
(r'(architecture|configuration)(\s+)([a-
|
305
|
-
r'(of)(\s+)([a-
|
304
|
+
(r'(architecture|configuration)(\s+)([a-z_]\w*)(\s+)'
|
305
|
+
r'(of)(\s+)([a-z_]\w*)(\s+)(is)',
|
306
306
|
bygroups(Keyword, Text, Name.Class, Text, Keyword, Text,
|
307
307
|
Name.Class, Text, Keyword)),
|
308
308
|
|
@@ -312,11 +312,11 @@ class VhdlLexer(RegexLexer):
|
|
312
312
|
include('keywords'),
|
313
313
|
include('numbers'),
|
314
314
|
|
315
|
-
(r'[a-
|
315
|
+
(r'[a-z_]\w*', Name),
|
316
316
|
],
|
317
317
|
'endblock': [
|
318
318
|
include('keywords'),
|
319
|
-
(r'[a-
|
319
|
+
(r'[a-z_]\w*', Name.Class),
|
320
320
|
(r'(\s+)', Text),
|
321
321
|
(r';', Punctuation, '#pop'),
|
322
322
|
],
|
@@ -345,12 +345,11 @@ class VhdlLexer(RegexLexer):
|
|
345
345
|
r'while|with|xnor|xor)\b', Keyword),
|
346
346
|
],
|
347
347
|
'numbers': [
|
348
|
-
(r'\d{1,2}#[0-9a-
|
349
|
-
(r'[0-1_]+(\.[0-1_])', Number.Integer),
|
348
|
+
(r'\d{1,2}#[0-9a-f_]+#?', Number.Integer),
|
350
349
|
(r'\d+', Number.Integer),
|
351
350
|
(r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+', Number.Float),
|
352
|
-
(r'
|
351
|
+
(r'X"[0-9a-f_]+"', Number.Hex),
|
353
352
|
(r'O"[0-7_]+"', Number.Oct),
|
354
|
-
(r'B"[0-1_]+"', Number.
|
353
|
+
(r'B"[0-1_]+"', Number.Bin),
|
355
354
|
],
|
356
355
|
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
pygments.lexers.inferno
|
4
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
5
|
+
|
6
|
+
Lexers for Inferno os and all the related stuff.
|
7
|
+
|
8
|
+
:copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
|
9
|
+
:license: BSD, see LICENSE for details.
|
10
|
+
"""
|
11
|
+
|
12
|
+
import re
|
13
|
+
|
14
|
+
from pygments.lexer import RegexLexer, include, bygroups
|
15
|
+
from pygments.token import Punctuation, Text, Comment, Operator, Keyword, \
|
16
|
+
Name, String, Number
|
17
|
+
|
18
|
+
__all__ = ['LimboLexer']
|
19
|
+
|
20
|
+
|
21
|
+
class LimboLexer(RegexLexer):
|
22
|
+
"""
|
23
|
+
Lexer for `Limbo programming language <http://www.vitanuova.com/inferno/limbo.html>`_
|
24
|
+
|
25
|
+
TODO:
|
26
|
+
- maybe implement better var declaration highlighting
|
27
|
+
- some simple syntax error highlighting
|
28
|
+
|
29
|
+
.. versionadded:: 2.0
|
30
|
+
"""
|
31
|
+
name = 'Limbo'
|
32
|
+
aliases = ['limbo']
|
33
|
+
filenames = ['*.b']
|
34
|
+
mimetypes = ['text/limbo']
|
35
|
+
|
36
|
+
tokens = {
|
37
|
+
'whitespace': [
|
38
|
+
(r'^(\s*)([a-zA-Z_]\w*:(\s*)\n)',
|
39
|
+
bygroups(Text, Name.Label)),
|
40
|
+
(r'\n', Text),
|
41
|
+
(r'\s+', Text),
|
42
|
+
(r'#(\n|(.|\n)*?[^\\]\n)', Comment.Single),
|
43
|
+
],
|
44
|
+
'string': [
|
45
|
+
(r'"', String, '#pop'),
|
46
|
+
(r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|'
|
47
|
+
r'u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})', String.Escape),
|
48
|
+
(r'[^\\"\n]+', String), # all other characters
|
49
|
+
(r'\\', String), # stray backslash
|
50
|
+
],
|
51
|
+
'statements': [
|
52
|
+
(r'"', String, 'string'),
|
53
|
+
(r"'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'", String.Char),
|
54
|
+
(r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+', Number.Float),
|
55
|
+
(r'(\d+\.\d*|\.\d+|\d+[fF])', Number.Float),
|
56
|
+
(r'16r[0-9a-fA-F]+', Number.Hex),
|
57
|
+
(r'8r[0-7]+', Number.Oct),
|
58
|
+
(r'((([1-3]\d)|([2-9]))r)?(\d+)', Number.Integer),
|
59
|
+
(r'[()\[\],.]', Punctuation),
|
60
|
+
(r'[~!%^&*+=|?:<>/-]|(->)|(<-)|(=>)|(::)', Operator),
|
61
|
+
(r'(alt|break|case|continue|cyclic|do|else|exit'
|
62
|
+
r'for|hd|if|implement|import|include|len|load|or'
|
63
|
+
r'pick|return|spawn|tagof|tl|to|while)\b', Keyword),
|
64
|
+
(r'(byte|int|big|real|string|array|chan|list|adt'
|
65
|
+
r'|fn|ref|of|module|self|type)\b', Keyword.Type),
|
66
|
+
(r'(con|iota|nil)\b', Keyword.Constant),
|
67
|
+
('[a-zA-Z_]\w*', Name),
|
68
|
+
],
|
69
|
+
'statement' : [
|
70
|
+
include('whitespace'),
|
71
|
+
include('statements'),
|
72
|
+
('[{}]', Punctuation),
|
73
|
+
(';', Punctuation, '#pop'),
|
74
|
+
],
|
75
|
+
'root': [
|
76
|
+
include('whitespace'),
|
77
|
+
('', Text, 'statement'),
|
78
|
+
],
|
79
|
+
}
|
80
|
+
|
81
|
+
def analyse_text(text):
|
82
|
+
# Any limbo module implements something
|
83
|
+
if re.search(r'^implement \w+;', text, re.MULTILINE):
|
84
|
+
return 0.7
|
85
|
+
|
86
|
+
# TODO:
|
87
|
+
# - Make lexers for:
|
88
|
+
# - asm sources
|
89
|
+
# - man pages
|
90
|
+
# - mkfiles
|
91
|
+
# - module definitions
|
92
|
+
# - namespace definitions
|
93
|
+
# - shell scripts
|
94
|
+
# - maybe keyfiles and fonts
|
95
|
+
# they all seem to be quite similar to their equivalents
|
96
|
+
# from unix world, so there should not be a lot of problems
|
@@ -5,23 +5,23 @@
|
|
5
5
|
|
6
6
|
Pygments lexers for JVM languages.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
|
12
12
|
import re
|
13
13
|
|
14
14
|
from pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \
|
15
|
-
this
|
15
|
+
this, combined, default
|
16
16
|
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
17
17
|
Number, Punctuation
|
18
|
-
from pygments.util import get_choice_opt
|
19
18
|
from pygments import unistring as uni
|
20
19
|
|
21
20
|
|
22
21
|
__all__ = ['JavaLexer', 'ScalaLexer', 'GosuLexer', 'GosuTemplateLexer',
|
23
|
-
'GroovyLexer', 'IokeLexer', 'ClojureLexer', '
|
24
|
-
'XtendLexer', 'AspectJLexer', 'CeylonLexer'
|
22
|
+
'GroovyLexer', 'IokeLexer', 'ClojureLexer', 'ClojureScriptLexer',
|
23
|
+
'KotlinLexer', 'XtendLexer', 'AspectJLexer', 'CeylonLexer',
|
24
|
+
'PigLexer', 'GoloLexer', 'JasminLexer']
|
25
25
|
|
26
26
|
|
27
27
|
class JavaLexer(RegexLexer):
|
@@ -34,19 +34,19 @@ class JavaLexer(RegexLexer):
|
|
34
34
|
filenames = ['*.java']
|
35
35
|
mimetypes = ['text/x-java']
|
36
36
|
|
37
|
-
flags = re.MULTILINE | re.DOTALL
|
37
|
+
flags = re.MULTILINE | re.DOTALL | re.UNICODE
|
38
38
|
|
39
39
|
tokens = {
|
40
40
|
'root': [
|
41
|
-
# method names
|
42
|
-
(r'^(\s*(?:[a-zA-Z_][a-zA-Z0-9_\.\[\]<>]*\s+)+?)' # return arguments
|
43
|
-
r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
|
44
|
-
r'(\s*)(\()', # signature start
|
45
|
-
bygroups(using(this), Name.Function, Text, Operator)),
|
46
41
|
(r'[^\S\n]+', Text),
|
47
42
|
(r'//.*?\n', Comment.Single),
|
48
43
|
(r'/\*.*?\*/', Comment.Multiline),
|
49
|
-
|
44
|
+
# method names
|
45
|
+
(r'((?:(?:[^\W\d]|\$)[\w\.\[\]\$<>]*\s+)+?)' # return arguments
|
46
|
+
r'((?:[^\W\d]|\$)[\w\$]*)' # method name
|
47
|
+
r'(\s*)(\()', # signature start
|
48
|
+
bygroups(using(this), Name.Function, Text, Operator)),
|
49
|
+
(r'@[^\W\d][\w\.]*', Name.Decorator),
|
50
50
|
(r'(assert|break|case|catch|continue|default|do|else|finally|for|'
|
51
51
|
r'if|goto|instanceof|new|return|switch|this|throw|try|while)\b',
|
52
52
|
Keyword),
|
@@ -61,20 +61,20 @@ class JavaLexer(RegexLexer):
|
|
61
61
|
(r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
|
62
62
|
(r'"(\\\\|\\"|[^"])*"', String),
|
63
63
|
(r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
|
64
|
-
(r'(\.)([
|
65
|
-
(r'[
|
66
|
-
(r'[
|
64
|
+
(r'(\.)((?:[^\W\d]|\$)[\w\$]*)', bygroups(Operator, Name.Attribute)),
|
65
|
+
(r'([^\W\d]|\$)[\w\$]*:', Name.Label),
|
66
|
+
(r'([^\W\d]|\$)[\w\$]*', Name),
|
67
67
|
(r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator),
|
68
68
|
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
69
69
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
70
|
-
(r'[0-9]+L?', Number.Integer),
|
70
|
+
(r'[0-9]+(_+[0-9]+)*L?', Number.Integer),
|
71
71
|
(r'\n', Text)
|
72
72
|
],
|
73
73
|
'class': [
|
74
|
-
(r'[
|
74
|
+
(r'([^\W\d]|\$)[\w\$]*', Name.Class, '#pop')
|
75
75
|
],
|
76
76
|
'import': [
|
77
|
-
(r'[
|
77
|
+
(r'[\w.]+\*?', Name.Namespace, '#pop')
|
78
78
|
],
|
79
79
|
}
|
80
80
|
|
@@ -83,7 +83,7 @@ class AspectJLexer(JavaLexer):
|
|
83
83
|
"""
|
84
84
|
For `AspectJ <http://www.eclipse.org/aspectj/>`_ source code.
|
85
85
|
|
86
|
-
|
86
|
+
.. versionadded:: 1.6
|
87
87
|
"""
|
88
88
|
|
89
89
|
name = 'AspectJ'
|
@@ -243,25 +243,25 @@ class ScalaLexer(RegexLexer):
|
|
243
243
|
u'\ua760\ua762\ua764\ua766\ua768\ua76a\ua76c\ua76e\ua779\ua77b'
|
244
244
|
u'\ua77d-\ua77e\ua780\ua782\ua784\ua786\ua78b\uff21-\uff3a]')
|
245
245
|
|
246
|
-
idrest =
|
246
|
+
idrest = u'%s(?:%s|[0-9])*(?:(?<=_)%s)?' % (letter, letter, op)
|
247
247
|
|
248
248
|
tokens = {
|
249
249
|
'root': [
|
250
250
|
# method names
|
251
251
|
(r'(class|trait|object)(\s+)', bygroups(Keyword, Text), 'class'),
|
252
|
-
(
|
252
|
+
(u"'%s" % idrest, Text.Symbol),
|
253
253
|
(r'[^\S\n]+', Text),
|
254
254
|
(r'//.*?\n', Comment.Single),
|
255
255
|
(r'/\*', Comment.Multiline, 'comment'),
|
256
|
-
(
|
257
|
-
(
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
256
|
+
(u'@%s' % idrest, Name.Decorator),
|
257
|
+
(u'(abstract|ca(?:se|tch)|d(?:ef|o)|e(?:lse|xtends)|'
|
258
|
+
u'f(?:inal(?:ly)?|or(?:Some)?)|i(?:f|mplicit)|'
|
259
|
+
u'lazy|match|new|override|pr(?:ivate|otected)'
|
260
|
+
u'|re(?:quires|turn)|s(?:ealed|uper)|'
|
261
|
+
u't(?:h(?:is|row)|ry)|va[lr]|w(?:hile|ith)|yield)\\b|'
|
262
262
|
u'(<[%:-]|=>|>:|[#=@_\u21D2\u2190])(\\b|(?=\\s)|$)', Keyword),
|
263
|
-
(
|
264
|
-
(
|
263
|
+
(u':(?!%s)' % op, Keyword, 'type'),
|
264
|
+
(u'%s%s\\b' % (upper, idrest), Name.Class),
|
265
265
|
(r'(true|false|null)\b', Keyword.Constant),
|
266
266
|
(r'(import|package)(\s+)', bygroups(Keyword, Text), 'import'),
|
267
267
|
(r'(type)(\s+)', bygroups(Keyword, Text), 'type'),
|
@@ -282,34 +282,34 @@ class ScalaLexer(RegexLexer):
|
|
282
282
|
(r'\n', Text)
|
283
283
|
],
|
284
284
|
'class': [
|
285
|
-
(
|
285
|
+
(u'(%s|%s|`[^`]+`)(\\s*)(\\[)' % (idrest, op),
|
286
286
|
bygroups(Name.Class, Text, Operator), 'typeparam'),
|
287
287
|
(r'\s+', Text),
|
288
288
|
(r'{', Operator, '#pop'),
|
289
289
|
(r'\(', Operator, '#pop'),
|
290
290
|
(r'//.*?\n', Comment.Single, '#pop'),
|
291
|
-
(
|
291
|
+
(u'%s|%s|`[^`]+`' % (idrest, op), Name.Class, '#pop'),
|
292
292
|
],
|
293
293
|
'type': [
|
294
294
|
(r'\s+', Text),
|
295
295
|
(u'<[%:]|>:|[#_\u21D2]|forSome|type', Keyword),
|
296
296
|
(r'([,\);}]|=>|=)(\s*)', bygroups(Operator, Text), '#pop'),
|
297
297
|
(r'[\(\{]', Operator, '#push'),
|
298
|
-
(
|
298
|
+
(u'((?:%s|%s|`[^`]+`)(?:\\.(?:%s|%s|`[^`]+`))*)(\\s*)(\\[)' %
|
299
299
|
(idrest, op, idrest, op),
|
300
300
|
bygroups(Keyword.Type, Text, Operator), ('#pop', 'typeparam')),
|
301
|
-
(
|
301
|
+
(u'((?:%s|%s|`[^`]+`)(?:\\.(?:%s|%s|`[^`]+`))*)(\\s*)$' %
|
302
302
|
(idrest, op, idrest, op),
|
303
303
|
bygroups(Keyword.Type, Text), '#pop'),
|
304
304
|
(r'//.*?\n', Comment.Single, '#pop'),
|
305
|
-
(
|
305
|
+
(u'\\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type)
|
306
306
|
],
|
307
307
|
'typeparam': [
|
308
308
|
(r'[\s,]+', Text),
|
309
309
|
(u'<[%:]|=>|>:|[#_\u21D2]|forSome|type', Keyword),
|
310
310
|
(r'([\]\)\}])', Operator, '#pop'),
|
311
311
|
(r'[\(\[\{]', Operator, '#push'),
|
312
|
-
(
|
312
|
+
(u'\\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type)
|
313
313
|
],
|
314
314
|
'comment': [
|
315
315
|
(r'[^/\*]+', Comment.Multiline),
|
@@ -318,7 +318,7 @@ class ScalaLexer(RegexLexer):
|
|
318
318
|
(r'[*/]', Comment.Multiline)
|
319
319
|
],
|
320
320
|
'import': [
|
321
|
-
(
|
321
|
+
(u'(%s|\\.)+' % idrest, Name.Namespace, '#pop')
|
322
322
|
],
|
323
323
|
}
|
324
324
|
|
@@ -327,7 +327,7 @@ class GosuLexer(RegexLexer):
|
|
327
327
|
"""
|
328
328
|
For Gosu source code.
|
329
329
|
|
330
|
-
|
330
|
+
.. versionadded:: 1.5
|
331
331
|
"""
|
332
332
|
|
333
333
|
name = 'Gosu'
|
@@ -340,14 +340,14 @@ class GosuLexer(RegexLexer):
|
|
340
340
|
tokens = {
|
341
341
|
'root': [
|
342
342
|
# method names
|
343
|
-
(r'^(\s*(?:[a-zA-Z_][
|
344
|
-
r'([a-zA-Z_]
|
345
|
-
r'(\s*)(\()',
|
343
|
+
(r'^(\s*(?:[a-zA-Z_][\w\.\[\]]*\s+)+?)' # modifiers etc.
|
344
|
+
r'([a-zA-Z_]\w*)' # method name
|
345
|
+
r'(\s*)(\()', # signature start
|
346
346
|
bygroups(using(this), Name.Function, Text, Operator)),
|
347
347
|
(r'[^\S\n]+', Text),
|
348
348
|
(r'//.*?\n', Comment.Single),
|
349
349
|
(r'/\*.*?\*/', Comment.Multiline),
|
350
|
-
(r'@[a-zA-Z_][
|
350
|
+
(r'@[a-zA-Z_][\w\.]*', Name.Decorator),
|
351
351
|
(r'(in|as|typeof|statictypeof|typeis|typeas|if|else|foreach|for|'
|
352
352
|
r'index|while|do|continue|break|return|try|catch|finally|this|'
|
353
353
|
r'throw|new|switch|case|default|eval|super|outer|classpath|'
|
@@ -360,16 +360,16 @@ class GosuLexer(RegexLexer):
|
|
360
360
|
Keyword.Type),
|
361
361
|
(r'(package)(\s+)', bygroups(Keyword.Namespace, Text)),
|
362
362
|
(r'(true|false|null|NaN|Infinity)\b', Keyword.Constant),
|
363
|
-
(r'(class|interface|enhancement|enum)(\s+)([a-zA-Z_]
|
363
|
+
(r'(class|interface|enhancement|enum)(\s+)([a-zA-Z_]\w*)',
|
364
364
|
bygroups(Keyword.Declaration, Text, Name.Class)),
|
365
|
-
(r'(uses)(\s+)([
|
365
|
+
(r'(uses)(\s+)([\w.]+\*?)',
|
366
366
|
bygroups(Keyword.Namespace, Text, Name.Namespace)),
|
367
367
|
(r'"', String, 'string'),
|
368
|
-
(r'(\??[\.#])([a-zA-Z_]
|
368
|
+
(r'(\??[\.#])([a-zA-Z_]\w*)',
|
369
369
|
bygroups(Operator, Name.Attribute)),
|
370
|
-
(r'(:)([a-zA-Z_]
|
370
|
+
(r'(:)([a-zA-Z_]\w*)',
|
371
371
|
bygroups(Operator, Name.Attribute)),
|
372
|
-
(r'[a-zA-Z_\$]
|
372
|
+
(r'[a-zA-Z_\$]\w*', Name),
|
373
373
|
(r'and|or|not|[\\~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator),
|
374
374
|
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
375
375
|
(r'[0-9]+', Number.Integer),
|
@@ -406,7 +406,7 @@ class GosuTemplateLexer(Lexer):
|
|
406
406
|
"""
|
407
407
|
For Gosu templates.
|
408
408
|
|
409
|
-
|
409
|
+
.. versionadded:: 1.5
|
410
410
|
"""
|
411
411
|
|
412
412
|
name = 'Gosu Template'
|
@@ -425,7 +425,7 @@ class GroovyLexer(RegexLexer):
|
|
425
425
|
"""
|
426
426
|
For `Groovy <http://groovy.codehaus.org/>`_ source code.
|
427
427
|
|
428
|
-
|
428
|
+
.. versionadded:: 1.5
|
429
429
|
"""
|
430
430
|
|
431
431
|
name = 'Groovy'
|
@@ -437,15 +437,20 @@ class GroovyLexer(RegexLexer):
|
|
437
437
|
|
438
438
|
tokens = {
|
439
439
|
'root': [
|
440
|
+
# Groovy allows a file to start with a shebang
|
441
|
+
(r'#!(.*?)$', Comment.Preproc, 'base'),
|
442
|
+
default('base'),
|
443
|
+
],
|
444
|
+
'base': [
|
440
445
|
# method names
|
441
|
-
(r'^(\s*(?:[a-zA-Z_][
|
442
|
-
r'([a-zA-Z_]
|
443
|
-
r'(\s*)(\()',
|
446
|
+
(r'^(\s*(?:[a-zA-Z_][\w\.\[\]]*\s+)+?)' # return arguments
|
447
|
+
r'([a-zA-Z_]\w*)' # method name
|
448
|
+
r'(\s*)(\()', # signature start
|
444
449
|
bygroups(using(this), Name.Function, Text, Operator)),
|
445
450
|
(r'[^\S\n]+', Text),
|
446
451
|
(r'//.*?\n', Comment.Single),
|
447
452
|
(r'/\*.*?\*/', Comment.Multiline),
|
448
|
-
(r'@[a-zA-Z_][
|
453
|
+
(r'@[a-zA-Z_][\w\.]*', Name.Decorator),
|
449
454
|
(r'(assert|break|case|catch|continue|default|do|else|finally|for|'
|
450
455
|
r'if|goto|instanceof|new|return|switch|this|throw|try|while|in|as)\b',
|
451
456
|
Keyword),
|
@@ -464,9 +469,9 @@ class GroovyLexer(RegexLexer):
|
|
464
469
|
(r'\$/((?!/\$).)*/\$', String),
|
465
470
|
(r'/(\\\\|\\"|[^/])*/', String),
|
466
471
|
(r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
|
467
|
-
(r'(\.)([a-zA-Z_]
|
468
|
-
(r'[a-zA-Z_]
|
469
|
-
(r'[a-zA-Z_\$]
|
472
|
+
(r'(\.)([a-zA-Z_]\w*)', bygroups(Operator, Name.Attribute)),
|
473
|
+
(r'[a-zA-Z_]\w*:', Name.Label),
|
474
|
+
(r'[a-zA-Z_\$]\w*', Name),
|
470
475
|
(r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator),
|
471
476
|
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
472
477
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
@@ -474,20 +479,23 @@ class GroovyLexer(RegexLexer):
|
|
474
479
|
(r'\n', Text)
|
475
480
|
],
|
476
481
|
'class': [
|
477
|
-
(r'[a-zA-Z_]
|
482
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop')
|
478
483
|
],
|
479
484
|
'import': [
|
480
|
-
(r'[
|
485
|
+
(r'[\w.]+\*?', Name.Namespace, '#pop')
|
481
486
|
],
|
482
487
|
}
|
483
488
|
|
489
|
+
def analyse_text(text):
|
490
|
+
return shebang_matches(text, r'groovy')
|
491
|
+
|
484
492
|
|
485
493
|
class IokeLexer(RegexLexer):
|
486
494
|
"""
|
487
495
|
For `Ioke <http://ioke.org/>`_ (a strongly typed, dynamic,
|
488
496
|
prototype based programming language) source.
|
489
497
|
|
490
|
-
|
498
|
+
.. versionadded:: 1.4
|
491
499
|
"""
|
492
500
|
name = 'Ioke'
|
493
501
|
filenames = ['*.ik']
|
@@ -550,8 +558,8 @@ class IokeLexer(RegexLexer):
|
|
550
558
|
(r'#r\[', String.Regex, 'squareRegexp'),
|
551
559
|
|
552
560
|
#Symbols
|
553
|
-
(r':[
|
554
|
-
(r'[
|
561
|
+
(r':[\w!:?]+', String.Symbol),
|
562
|
+
(r'[\w!:?]+:(?![\w!?])', String.Other),
|
555
563
|
(r':"(\\\\|\\"|[^"])*"', String.Symbol),
|
556
564
|
|
557
565
|
#Documentation
|
@@ -564,10 +572,10 @@ class IokeLexer(RegexLexer):
|
|
564
572
|
(r'#\[', String, 'squareText'),
|
565
573
|
|
566
574
|
#Mimic
|
567
|
-
(r'[a-zA-Z0-
|
575
|
+
(r'\w[a-zA-Z0-9!?_:]+(?=\s*=.*mimic\s)', Name.Entity),
|
568
576
|
|
569
577
|
#Assignment
|
570
|
-
(r'[a-zA-Z_][
|
578
|
+
(r'[a-zA-Z_][\w!:?]*(?=[\s]*[+*/-]?=[^=].*($|\.))',
|
571
579
|
Name.Variable),
|
572
580
|
|
573
581
|
# keywords
|
@@ -639,9 +647,9 @@ class IokeLexer(RegexLexer):
|
|
639
647
|
r'System|Text|Tuple)(?![a-zA-Z0-9!:_?])', Name.Builtin),
|
640
648
|
|
641
649
|
# functions
|
642
|
-
(
|
643
|
-
|
644
|
-
|
650
|
+
(u'(generateMatchMethod|aliasMethod|\u03bb|\u028E|fnx|fn|method|'
|
651
|
+
u'dmacro|dlecro|syntax|macro|dlecrox|lecrox|lecro|syntax)'
|
652
|
+
u'(?![a-zA-Z0-9!:_?])', Name.Function),
|
645
653
|
|
646
654
|
# Numbers
|
647
655
|
(r'-?0[xX][0-9a-fA-F]+', Number.Hex),
|
@@ -651,24 +659,24 @@ class IokeLexer(RegexLexer):
|
|
651
659
|
(r'#\(', Punctuation),
|
652
660
|
|
653
661
|
# Operators
|
654
|
-
(
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
(r'(and|nand|or|xor|nor|return|import)(?![
|
662
|
+
(r'(&&>>|\|\|>>|\*\*>>|:::|::|\.\.\.|===|\*\*>|\*\*=|&&>|&&=|'
|
663
|
+
r'\|\|>|\|\|=|\->>|\+>>|!>>|<>>>|<>>|&>>|%>>|#>>|@>>|/>>|\*>>|'
|
664
|
+
r'\?>>|\|>>|\^>>|~>>|\$>>|=>>|<<=|>>=|<=>|<\->|=~|!~|=>|\+\+|'
|
665
|
+
r'\-\-|<=|>=|==|!=|&&|\.\.|\+=|\-=|\*=|\/=|%=|&=|\^=|\|=|<\-|'
|
666
|
+
r'\+>|!>|<>|&>|%>|#>|\@>|\/>|\*>|\?>|\|>|\^>|~>|\$>|<\->|\->|'
|
667
|
+
r'<<|>>|\*\*|\?\||\?&|\|\||>|<|\*|\/|%|\+|\-|&|\^|\||=|\$|!|~|'
|
668
|
+
u'\\?|#|\u2260|\u2218|\u2208|\u2209)', Operator),
|
669
|
+
(r'(and|nand|or|xor|nor|return|import)(?![\w!?])',
|
662
670
|
Operator),
|
663
671
|
|
664
672
|
# Punctuation
|
665
673
|
(r'(\`\`|\`|\'\'|\'|\.|\,|@@|@|\[|\]|\(|\)|{|})', Punctuation),
|
666
674
|
|
667
675
|
#kinds
|
668
|
-
(r'[A-Z][
|
676
|
+
(r'[A-Z][\w!:?]*', Name.Class),
|
669
677
|
|
670
678
|
#default cellnames
|
671
|
-
(r'[a-z_][
|
679
|
+
(r'[a-z_][\w!:?]*', Name)
|
672
680
|
]
|
673
681
|
}
|
674
682
|
|
@@ -677,7 +685,7 @@ class ClojureLexer(RegexLexer):
|
|
677
685
|
"""
|
678
686
|
Lexer for `Clojure <http://clojure.org/>`_ source code.
|
679
687
|
|
680
|
-
|
688
|
+
.. versionadded:: 0.11
|
681
689
|
"""
|
682
690
|
name = 'Clojure'
|
683
691
|
aliases = ['clojure', 'clj']
|
@@ -778,7 +786,7 @@ class ClojureLexer(RegexLexer):
|
|
778
786
|
(r"\\(.|[a-z]+)", String.Char),
|
779
787
|
|
780
788
|
# keywords
|
781
|
-
(r'
|
789
|
+
(r'::?#?' + valid_name, String.Symbol),
|
782
790
|
|
783
791
|
# special operators
|
784
792
|
(r'~@|[`\'#^~&@]', Operator),
|
@@ -814,12 +822,25 @@ class ClojureLexer(RegexLexer):
|
|
814
822
|
}
|
815
823
|
|
816
824
|
|
825
|
+
class ClojureScriptLexer(ClojureLexer):
|
826
|
+
"""
|
827
|
+
Lexer for `ClojureScript <http://clojure.org/clojurescript>`_
|
828
|
+
source code.
|
829
|
+
|
830
|
+
.. versionadded:: 2.0
|
831
|
+
"""
|
832
|
+
name = 'ClojureScript'
|
833
|
+
aliases = ['clojurescript', 'cljs']
|
834
|
+
filenames = ['*.cljs']
|
835
|
+
mimetypes = ['text/x-clojurescript', 'application/x-clojurescript']
|
836
|
+
|
837
|
+
|
817
838
|
class TeaLangLexer(RegexLexer):
|
818
839
|
"""
|
819
840
|
For `Tea <http://teatrove.org/>`_ source code. Only used within a
|
820
841
|
TeaTemplateLexer.
|
821
842
|
|
822
|
-
|
843
|
+
.. versionadded:: 1.5
|
823
844
|
"""
|
824
845
|
|
825
846
|
flags = re.MULTILINE | re.DOTALL
|
@@ -827,14 +848,14 @@ class TeaLangLexer(RegexLexer):
|
|
827
848
|
tokens = {
|
828
849
|
'root': [
|
829
850
|
# method names
|
830
|
-
(r'^(\s*(?:[a-zA-Z_][
|
831
|
-
r'([a-zA-Z_]
|
832
|
-
r'(\s*)(\()',
|
851
|
+
(r'^(\s*(?:[a-zA-Z_][\w\.\[\]]*\s+)+?)' # return arguments
|
852
|
+
r'([a-zA-Z_]\w*)' # method name
|
853
|
+
r'(\s*)(\()', # signature start
|
833
854
|
bygroups(using(this), Name.Function, Text, Operator)),
|
834
855
|
(r'[^\S\n]+', Text),
|
835
856
|
(r'//.*?\n', Comment.Single),
|
836
857
|
(r'/\*.*?\*/', Comment.Multiline),
|
837
|
-
(r'@[a-zA-Z_][
|
858
|
+
(r'@[a-zA-Z_][\w\.]*', Name.Decorator),
|
838
859
|
(r'(and|break|else|foreach|if|in|not|or|reverse)\b',
|
839
860
|
Keyword),
|
840
861
|
(r'(as|call|define)\b', Keyword.Declaration),
|
@@ -843,9 +864,9 @@ class TeaLangLexer(RegexLexer):
|
|
843
864
|
(r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
|
844
865
|
(r'"(\\\\|\\"|[^"])*"', String),
|
845
866
|
(r'\'(\\\\|\\\'|[^\'])*\'', String),
|
846
|
-
(r'(\.)([a-zA-Z_]
|
847
|
-
(r'[a-zA-Z_]
|
848
|
-
(r'[a-zA-Z_\$]
|
867
|
+
(r'(\.)([a-zA-Z_]\w*)', bygroups(Operator, Name.Attribute)),
|
868
|
+
(r'[a-zA-Z_]\w*:', Name.Label),
|
869
|
+
(r'[a-zA-Z_\$]\w*', Name),
|
849
870
|
(r'(isa|[.]{3}|[.]{2}|[=#!<>+-/%&;,.\*\\\(\)\[\]\{\}])', Operator),
|
850
871
|
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
851
872
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
@@ -853,10 +874,10 @@ class TeaLangLexer(RegexLexer):
|
|
853
874
|
(r'\n', Text)
|
854
875
|
],
|
855
876
|
'template': [
|
856
|
-
(r'[a-zA-Z_]
|
877
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop')
|
857
878
|
],
|
858
879
|
'import': [
|
859
|
-
(r'[
|
880
|
+
(r'[\w.]+\*?', Name.Namespace, '#pop')
|
860
881
|
],
|
861
882
|
}
|
862
883
|
|
@@ -865,7 +886,7 @@ class CeylonLexer(RegexLexer):
|
|
865
886
|
"""
|
866
887
|
For `Ceylon <http://ceylon-lang.org/>`_ source code.
|
867
888
|
|
868
|
-
|
889
|
+
.. versionadded:: 1.6
|
869
890
|
"""
|
870
891
|
|
871
892
|
name = 'Ceylon'
|
@@ -881,13 +902,13 @@ class CeylonLexer(RegexLexer):
|
|
881
902
|
tokens = {
|
882
903
|
'root': [
|
883
904
|
# method names
|
884
|
-
(r'^(\s*(?:[a-zA-Z_][
|
885
|
-
r'([a-zA-Z_]
|
886
|
-
r'(\s*)(\()',
|
905
|
+
(r'^(\s*(?:[a-zA-Z_][\w\.\[\]]*\s+)+?)' # return arguments
|
906
|
+
r'([a-zA-Z_]\w*)' # method name
|
907
|
+
r'(\s*)(\()', # signature start
|
887
908
|
bygroups(using(this), Name.Function, Text, Operator)),
|
888
909
|
(r'[^\S\n]+', Text),
|
889
910
|
(r'//.*?\n', Comment.Single),
|
890
|
-
(r'
|
911
|
+
(r'/\*', Comment.Multiline, 'comment'),
|
891
912
|
(r'(variable|shared|abstract|doc|by|formal|actual|late|native)',
|
892
913
|
Name.Decorator),
|
893
914
|
(r'(break|case|catch|continue|default|else|finally|for|in|'
|
@@ -906,10 +927,10 @@ class CeylonLexer(RegexLexer):
|
|
906
927
|
(r'"(\\\\|\\"|[^"])*"', String),
|
907
928
|
(r"'\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'", String.Char),
|
908
929
|
(r'".*``.*``.*"', String.Interpol),
|
909
|
-
(r'(\.)([a-z_]
|
930
|
+
(r'(\.)([a-z_]\w*)',
|
910
931
|
bygroups(Operator, Name.Attribute)),
|
911
|
-
(r'[a-zA-Z_]
|
912
|
-
(r'[a-zA-Z_]
|
932
|
+
(r'[a-zA-Z_]\w*:', Name.Label),
|
933
|
+
(r'[a-zA-Z_]\w*', Name),
|
913
934
|
(r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator),
|
914
935
|
(r'\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?', Number.Float),
|
915
936
|
(r'\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?',
|
@@ -919,139 +940,96 @@ class CeylonLexer(RegexLexer):
|
|
919
940
|
Number.Float),
|
920
941
|
(r'#([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+', Number.Hex),
|
921
942
|
(r'#[0-9a-fA-F]+', Number.Hex),
|
922
|
-
(r'\$([01]{4})(_[01]{4})+', Number.
|
923
|
-
(r'\$[01]+', Number.
|
943
|
+
(r'\$([01]{4})(_[01]{4})+', Number.Bin),
|
944
|
+
(r'\$[01]+', Number.Bin),
|
924
945
|
(r'\d{1,3}(_\d{3})+[kMGTP]?', Number.Integer),
|
925
946
|
(r'[0-9]+[kMGTP]?', Number.Integer),
|
926
947
|
(r'\n', Text)
|
927
948
|
],
|
928
949
|
'class': [
|
929
|
-
(r'[A-Za-z_]
|
950
|
+
(r'[A-Za-z_]\w*', Name.Class, '#pop')
|
930
951
|
],
|
931
952
|
'import': [
|
932
|
-
(r'[a-z][
|
953
|
+
(r'[a-z][\w.]*',
|
933
954
|
Name.Namespace, '#pop')
|
934
955
|
],
|
956
|
+
'comment': [
|
957
|
+
(r'[^*/]', Comment.Multiline),
|
958
|
+
(r'/\*', Comment.Multiline, '#push'),
|
959
|
+
(r'\*/', Comment.Multiline, '#pop'),
|
960
|
+
(r'[*/]', Comment.Multiline)
|
961
|
+
],
|
935
962
|
}
|
936
963
|
|
937
964
|
|
938
965
|
class KotlinLexer(RegexLexer):
|
939
966
|
"""
|
940
|
-
For `Kotlin <http://
|
967
|
+
For `Kotlin <http://kotlin.jetbrains.org/>`_
|
941
968
|
source code.
|
942
969
|
|
943
|
-
|
944
|
-
|
945
|
-
`unicodelevel`
|
946
|
-
Determines which Unicode characters this lexer allows for identifiers.
|
947
|
-
The possible values are:
|
948
|
-
|
949
|
-
* ``none`` -- only the ASCII letters and numbers are allowed. This
|
950
|
-
is the fastest selection.
|
951
|
-
* ``basic`` -- all Unicode characters from the specification except
|
952
|
-
category ``Lo`` are allowed.
|
953
|
-
* ``full`` -- all Unicode characters as specified in the C# specs
|
954
|
-
are allowed. Note that this means a considerable slowdown since the
|
955
|
-
``Lo`` category has more than 40,000 characters in it!
|
956
|
-
|
957
|
-
The default value is ``basic``.
|
958
|
-
|
959
|
-
*New in Pygments 1.5.*
|
970
|
+
.. versionadded:: 1.5
|
960
971
|
"""
|
961
972
|
|
962
973
|
name = 'Kotlin'
|
963
974
|
aliases = ['kotlin']
|
964
975
|
filenames = ['*.kt']
|
965
|
-
mimetypes = ['text/x-kotlin']
|
976
|
+
mimetypes = ['text/x-kotlin']
|
966
977
|
|
967
978
|
flags = re.MULTILINE | re.DOTALL | re.UNICODE
|
968
979
|
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
'none': '@?[_a-zA-Z][a-zA-Z0-9_]*',
|
974
|
-
'basic': ('@?[_' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl + ']' +
|
975
|
-
'[' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl +
|
976
|
-
uni.Nd + uni.Pc + uni.Cf + uni.Mn + uni.Mc + ']*'),
|
977
|
-
'full': ('@?(?:_|[^' +
|
978
|
-
uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl') + '])'
|
979
|
-
+ '[^' + uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl',
|
980
|
-
'Nd', 'Pc', 'Cf', 'Mn', 'Mc') + ']*'),
|
981
|
-
}
|
982
|
-
|
983
|
-
tokens = {}
|
984
|
-
token_variants = True
|
985
|
-
|
986
|
-
for levelname, cs_ident in levels.items():
|
987
|
-
tokens[levelname] = {
|
988
|
-
'root': [
|
989
|
-
# method names
|
990
|
-
(r'^([ \t]*(?:' + cs_ident + r'(?:\[\])?\s+)+?)' # return type
|
991
|
-
r'(' + cs_ident + ')' # method name
|
992
|
-
r'(\s*)(\()', # signature start
|
993
|
-
bygroups(using(this), Name.Function, Text, Punctuation)),
|
994
|
-
(r'^\s*\[.*?\]', Name.Attribute),
|
995
|
-
(r'[^\S\n]+', Text),
|
996
|
-
(r'\\\n', Text), # line continuation
|
997
|
-
(r'//.*?\n', Comment.Single),
|
998
|
-
(r'/[*](.|\n)*?[*]/', Comment.Multiline),
|
999
|
-
(r'\n', Text),
|
1000
|
-
(r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
|
1001
|
-
(r'[{}]', Punctuation),
|
1002
|
-
(r'@"(""|[^"])*"', String),
|
1003
|
-
(r'"(\\\\|\\"|[^"\n])*["\n]', String),
|
1004
|
-
(r"'\\.'|'[^\\]'", String.Char),
|
1005
|
-
(r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?"
|
1006
|
-
r"[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?", Number),
|
1007
|
-
(r'#[ \t]*(if|endif|else|elif|define|undef|'
|
1008
|
-
r'line|error|warning|region|endregion|pragma)\b.*?\n',
|
1009
|
-
Comment.Preproc),
|
1010
|
-
(r'\b(extern)(\s+)(alias)\b', bygroups(Keyword, Text,
|
1011
|
-
Keyword)),
|
1012
|
-
(r'(abstract|as|break|catch|'
|
1013
|
-
r'fun|continue|default|delegate|'
|
1014
|
-
r'do|else|enum|extern|false|finally|'
|
1015
|
-
r'fixed|for|goto|if|implicit|in|interface|'
|
1016
|
-
r'internal|is|lock|null|'
|
1017
|
-
r'out|override|private|protected|public|readonly|'
|
1018
|
-
r'ref|return|sealed|sizeof|'
|
1019
|
-
r'when|this|throw|true|try|typeof|'
|
1020
|
-
r'unchecked|unsafe|virtual|void|while|'
|
1021
|
-
r'get|set|new|partial|yield|val|var)\b', Keyword),
|
1022
|
-
(r'(global)(::)', bygroups(Keyword, Punctuation)),
|
1023
|
-
(r'(bool|byte|char|decimal|double|dynamic|float|int|long|'
|
1024
|
-
r'short)\b\??', Keyword.Type),
|
1025
|
-
(r'(class|struct)(\s+)', bygroups(Keyword, Text), 'class'),
|
1026
|
-
(r'(package|using)(\s+)', bygroups(Keyword, Text), 'package'),
|
1027
|
-
(cs_ident, Name),
|
1028
|
-
],
|
1029
|
-
'class': [
|
1030
|
-
(cs_ident, Name.Class, '#pop')
|
1031
|
-
],
|
1032
|
-
'package': [
|
1033
|
-
(r'(?=\()', Text, '#pop'), # using (resource)
|
1034
|
-
('(' + cs_ident + r'|\.)+', Name.Namespace, '#pop')
|
1035
|
-
]
|
1036
|
-
}
|
980
|
+
kt_name = ('@?[_' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl + ']' +
|
981
|
+
'[' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl + uni.Nd +
|
982
|
+
uni.Pc + uni.Cf + uni.Mn + uni.Mc + ']*')
|
983
|
+
kt_id = '(' + kt_name + '|`' + kt_name + '`)'
|
1037
984
|
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
985
|
+
tokens = {
|
986
|
+
'root': [
|
987
|
+
(r'^\s*\[.*?\]', Name.Attribute),
|
988
|
+
(r'[^\S\n]+', Text),
|
989
|
+
(r'\\\n', Text), # line continuation
|
990
|
+
(r'//.*?\n', Comment.Single),
|
991
|
+
(r'/[*].*?[*]/', Comment.Multiline),
|
992
|
+
(r'\n', Text),
|
993
|
+
(r'::|!!|\?[:.]', Operator),
|
994
|
+
(r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
|
995
|
+
(r'[{}]', Punctuation),
|
996
|
+
(r'@"(""|[^"])*"', String),
|
997
|
+
(r'"(\\\\|\\"|[^"\n])*["\n]', String),
|
998
|
+
(r"'\\.'|'[^\\]'", String.Char),
|
999
|
+
(r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFL]?|"
|
1000
|
+
r"0[xX][0-9a-fA-F]+[Ll]?", Number),
|
1001
|
+
(r'(class)(\s+)(object)', bygroups(Keyword, Text, Keyword)),
|
1002
|
+
(r'(class|trait|object)(\s+)', bygroups(Keyword, Text), 'class'),
|
1003
|
+
(r'(package|import)(\s+)', bygroups(Keyword, Text), 'package'),
|
1004
|
+
(r'(val|var)(\s+)', bygroups(Keyword, Text), 'property'),
|
1005
|
+
(r'(fun)(\s+)', bygroups(Keyword, Text), 'function'),
|
1006
|
+
(r'(abstract|annotation|as|break|by|catch|class|continue|do|else|'
|
1007
|
+
r'enum|false|final|finally|for|fun|get|if|import|in|inner|'
|
1008
|
+
r'internal|is|null|object|open|out|override|package|private|'
|
1009
|
+
r'protected|public|reified|return|set|super|this|throw|trait|'
|
1010
|
+
r'true|try|type|val|var|vararg|when|where|while|This)\b', Keyword),
|
1011
|
+
(kt_id, Name),
|
1012
|
+
],
|
1013
|
+
'package': [
|
1014
|
+
(r'\S+', Name.Namespace, '#pop')
|
1015
|
+
],
|
1016
|
+
'class': [
|
1017
|
+
(kt_id, Name.Class, '#pop')
|
1018
|
+
],
|
1019
|
+
'property': [
|
1020
|
+
(kt_id, Name.Property, '#pop')
|
1021
|
+
],
|
1022
|
+
'function': [
|
1023
|
+
(kt_id, Name.Function, '#pop')
|
1024
|
+
],
|
1025
|
+
}
|
1048
1026
|
|
1049
1027
|
|
1050
1028
|
class XtendLexer(RegexLexer):
|
1051
1029
|
"""
|
1052
1030
|
For `Xtend <http://xtend-lang.org/>`_ source code.
|
1053
1031
|
|
1054
|
-
|
1032
|
+
.. versionadded:: 1.6
|
1055
1033
|
"""
|
1056
1034
|
|
1057
1035
|
name = 'Xtend'
|
@@ -1064,14 +1042,14 @@ class XtendLexer(RegexLexer):
|
|
1064
1042
|
tokens = {
|
1065
1043
|
'root': [
|
1066
1044
|
# method names
|
1067
|
-
(r'^(\s*(?:[a-zA-Z_][
|
1068
|
-
r'([a-zA-Z_$][
|
1069
|
-
r'(\s*)(\()',
|
1045
|
+
(r'^(\s*(?:[a-zA-Z_][\w\.\[\]]*\s+)+?)' # return arguments
|
1046
|
+
r'([a-zA-Z_$][\w$]*)' # method name
|
1047
|
+
r'(\s*)(\()', # signature start
|
1070
1048
|
bygroups(using(this), Name.Function, Text, Operator)),
|
1071
1049
|
(r'[^\S\n]+', Text),
|
1072
1050
|
(r'//.*?\n', Comment.Single),
|
1073
1051
|
(r'/\*.*?\*/', Comment.Multiline),
|
1074
|
-
(r'@[a-zA-Z_][
|
1052
|
+
(r'@[a-zA-Z_][\w\.]*', Name.Decorator),
|
1075
1053
|
(r'(assert|break|case|catch|continue|default|do|else|finally|for|'
|
1076
1054
|
r'if|goto|instanceof|new|return|switch|this|throw|try|while|IF|'
|
1077
1055
|
r'ELSE|ELSEIF|ENDIF|FOR|ENDFOR|SEPARATOR|BEFORE|AFTER)\b',
|
@@ -1087,11 +1065,11 @@ class XtendLexer(RegexLexer):
|
|
1087
1065
|
'class'),
|
1088
1066
|
(r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
|
1089
1067
|
(r"(''')", String, 'template'),
|
1090
|
-
(
|
1068
|
+
(u'(\u00BB)', String, 'template'),
|
1091
1069
|
(r'"(\\\\|\\"|[^"])*"', String),
|
1092
1070
|
(r"'(\\\\|\\'|[^'])*'", String),
|
1093
|
-
(r'[a-zA-Z_]
|
1094
|
-
(r'[a-zA-Z_\$]
|
1071
|
+
(r'[a-zA-Z_]\w*:', Name.Label),
|
1072
|
+
(r'[a-zA-Z_\$]\w*', Name),
|
1095
1073
|
(r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator),
|
1096
1074
|
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
1097
1075
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
@@ -1099,14 +1077,451 @@ class XtendLexer(RegexLexer):
|
|
1099
1077
|
(r'\n', Text)
|
1100
1078
|
],
|
1101
1079
|
'class': [
|
1102
|
-
(r'[a-zA-Z_]
|
1080
|
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop')
|
1103
1081
|
],
|
1104
1082
|
'import': [
|
1105
|
-
(r'[
|
1083
|
+
(r'[\w.]+\*?', Name.Namespace, '#pop')
|
1106
1084
|
],
|
1107
1085
|
'template': [
|
1108
1086
|
(r"'''", String, '#pop'),
|
1109
|
-
(
|
1087
|
+
(u'\u00AB', String, '#pop'),
|
1110
1088
|
(r'.', String)
|
1111
1089
|
],
|
1112
1090
|
}
|
1091
|
+
|
1092
|
+
class PigLexer(RegexLexer):
|
1093
|
+
"""
|
1094
|
+
For `Pig Latin <https://pig.apache.org/>`_ source code.
|
1095
|
+
|
1096
|
+
.. versionadded:: 2.0
|
1097
|
+
"""
|
1098
|
+
|
1099
|
+
name = 'Pig'
|
1100
|
+
aliases = ['pig']
|
1101
|
+
filenames = ['*.pig']
|
1102
|
+
mimetypes = ['text/x-pig']
|
1103
|
+
|
1104
|
+
flags = re.MULTILINE | re.IGNORECASE
|
1105
|
+
|
1106
|
+
tokens = {
|
1107
|
+
'root': [
|
1108
|
+
(r'\s+', Text),
|
1109
|
+
(r'--.*', Comment),
|
1110
|
+
(r'/\*[\w\W]*?\*/', Comment.Multiline),
|
1111
|
+
(r'\\\n', Text),
|
1112
|
+
(r'\\', Text),
|
1113
|
+
(r'\'(?:\\[ntbrf\\\']|\\u[0-9a-f]{4}|[^\'\\\n\r])*\'', String),
|
1114
|
+
include('keywords'),
|
1115
|
+
include('types'),
|
1116
|
+
include('builtins'),
|
1117
|
+
include('punct'),
|
1118
|
+
include('operators'),
|
1119
|
+
(r'[0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
1120
|
+
(r'0x[0-9a-f]+', Number.Hex),
|
1121
|
+
(r'[0-9]+L?', Number.Integer),
|
1122
|
+
(r'\n', Text),
|
1123
|
+
(r'([a-z_]\w*)(\s*)(\()',
|
1124
|
+
bygroups(Name.Function, Text, Punctuation)),
|
1125
|
+
(r'[()#:]', Text),
|
1126
|
+
(r'[^(:#\'\")\s]+', Text),
|
1127
|
+
(r'\S+\s+', Text) # TODO: make tests pass without \s+
|
1128
|
+
],
|
1129
|
+
'keywords': [
|
1130
|
+
(r'(assert|and|any|all|arrange|as|asc|bag|by|cache|CASE|cat|cd|cp|'
|
1131
|
+
r'%declare|%default|define|dense|desc|describe|distinct|du|dump|'
|
1132
|
+
r'eval|exex|explain|filter|flatten|foreach|full|generate|group|'
|
1133
|
+
r'help|if|illustrate|import|inner|input|into|is|join|kill|left|'
|
1134
|
+
r'limit|load|ls|map|matches|mkdir|mv|not|null|onschema|or|order|'
|
1135
|
+
r'outer|output|parallel|pig|pwd|quit|register|returns|right|rm|'
|
1136
|
+
r'rmf|rollup|run|sample|set|ship|split|stderr|stdin|stdout|store|'
|
1137
|
+
r'stream|through|union|using|void)\b', Keyword)
|
1138
|
+
],
|
1139
|
+
'builtins': [
|
1140
|
+
(r'(AVG|BinStorage|cogroup|CONCAT|copyFromLocal|copyToLocal|COUNT|'
|
1141
|
+
r'cross|DIFF|MAX|MIN|PigDump|PigStorage|SIZE|SUM|TextLoader|'
|
1142
|
+
r'TOKENIZE)\b', Name.Builtin)
|
1143
|
+
],
|
1144
|
+
'types': [
|
1145
|
+
(r'(bytearray|BIGINTEGER|BIGDECIMAL|chararray|datetime|double|float|'
|
1146
|
+
r'int|long|tuple)\b', Keyword.Type)
|
1147
|
+
],
|
1148
|
+
'punct': [
|
1149
|
+
(r'[;(){}\[\]]', Punctuation),
|
1150
|
+
],
|
1151
|
+
'operators': [
|
1152
|
+
(r'[#=,./%+\-?]', Operator),
|
1153
|
+
(r'(eq|gt|lt|gte|lte|neq|matches)\b', Operator),
|
1154
|
+
(r'(==|<=|<|>=|>|!=)', Operator),
|
1155
|
+
],
|
1156
|
+
}
|
1157
|
+
|
1158
|
+
|
1159
|
+
class GoloLexer(RegexLexer):
|
1160
|
+
"""
|
1161
|
+
For `Golo <http://golo-lang.org/>`_ source code.
|
1162
|
+
|
1163
|
+
.. versionadded:: 2.0
|
1164
|
+
"""
|
1165
|
+
|
1166
|
+
name = 'Golo'
|
1167
|
+
filenames = ['*.golo']
|
1168
|
+
aliases = ['golo']
|
1169
|
+
|
1170
|
+
tokens = {
|
1171
|
+
'root': [
|
1172
|
+
(r'[^\S\n]+', Text),
|
1173
|
+
|
1174
|
+
(r'#.*$', Comment),
|
1175
|
+
|
1176
|
+
(r'(\^|\.\.\.|:|\?:|->|==|!=|=|\+|\*|%|/|<=|<|>=|>|=|\.)',
|
1177
|
+
Operator),
|
1178
|
+
(r'(?<=[^-])(-)(?=[^-])', Operator),
|
1179
|
+
|
1180
|
+
(r'(?<=[^`])(is|isnt|and|or|not|oftype|in|orIfNull)\b', Operator.Word),
|
1181
|
+
(r'[]{}|(),[]', Punctuation),
|
1182
|
+
|
1183
|
+
(r'(module|import)(\s+)',
|
1184
|
+
bygroups(Keyword.Namespace, Text),
|
1185
|
+
'modname'),
|
1186
|
+
(r'\b([a-zA-Z_][\w$.]*)(::)', bygroups(Name.Namespace, Punctuation)),
|
1187
|
+
(r'\b([a-zA-Z_][\w$]*(?:\.[a-zA-Z_][\w$]*)+)\b', Name.Namespace),
|
1188
|
+
|
1189
|
+
(r'(let|var)(\s+)',
|
1190
|
+
bygroups(Keyword.Declaration, Text),
|
1191
|
+
'varname'),
|
1192
|
+
(r'(struct)(\s+)',
|
1193
|
+
bygroups(Keyword.Declaration, Text),
|
1194
|
+
'structname'),
|
1195
|
+
(r'(function)(\s+)',
|
1196
|
+
bygroups(Keyword.Declaration, Text),
|
1197
|
+
'funcname'),
|
1198
|
+
|
1199
|
+
(r'(null|true|false)\b', Keyword.Constant),
|
1200
|
+
(r'(augment|pimp'
|
1201
|
+
r'|if|else|case|match|return'
|
1202
|
+
r'|case|when|then|otherwise'
|
1203
|
+
r'|while|for|foreach'
|
1204
|
+
r'|try|catch|finally|throw'
|
1205
|
+
r'|local'
|
1206
|
+
r'|continue|break)\b', Keyword),
|
1207
|
+
|
1208
|
+
(r'(map|array|list|set|vector|tuple)(\[)',
|
1209
|
+
bygroups(Name.Builtin, Punctuation)),
|
1210
|
+
(r'(print|println|readln|raise|fun'
|
1211
|
+
r'|asInterfaceInstance)\b', Name.Builtin),
|
1212
|
+
(r'(`?[a-zA-Z_][\w$]*)(\()',
|
1213
|
+
bygroups(Name.Function, Punctuation)),
|
1214
|
+
|
1215
|
+
(r'-?[\d_]*\.[\d_]*([eE][+-]?\d[\d_]*)?F?', Number.Float),
|
1216
|
+
(r'0[0-7]+j?', Number.Oct),
|
1217
|
+
(r'0[xX][a-fA-F0-9]+', Number.Hex),
|
1218
|
+
(r'-?\d[\d_]*L', Number.Integer.Long),
|
1219
|
+
(r'-?\d[\d_]*', Number.Integer),
|
1220
|
+
|
1221
|
+
('`?[a-zA-Z_][\w$]*', Name),
|
1222
|
+
|
1223
|
+
(r'"""', String, combined('stringescape', 'triplestring')),
|
1224
|
+
(r'"', String, combined('stringescape', 'doublestring')),
|
1225
|
+
(r"'", String, combined('stringescape', 'singlestring')),
|
1226
|
+
(r'----((.|\n)*?)----', String.Doc)
|
1227
|
+
|
1228
|
+
],
|
1229
|
+
|
1230
|
+
'funcname': [
|
1231
|
+
(r'`?[a-zA-Z_][\w$]*', Name.Function, '#pop'),
|
1232
|
+
],
|
1233
|
+
'modname': [
|
1234
|
+
(r'[a-zA-Z_][\w$.]*\*?', Name.Namespace, '#pop')
|
1235
|
+
],
|
1236
|
+
'structname': [
|
1237
|
+
(r'`?[\w.]+\*?', Name.Class, '#pop')
|
1238
|
+
],
|
1239
|
+
'varname': [
|
1240
|
+
(r'`?[a-zA-Z_][\w$]*', Name.Variable, '#pop'),
|
1241
|
+
],
|
1242
|
+
'string': [
|
1243
|
+
(r'[^\\\'"\n]+', String),
|
1244
|
+
(r'[\'"\\]', String)
|
1245
|
+
],
|
1246
|
+
'stringescape': [
|
1247
|
+
(r'\\([\\abfnrtv"\']|\n|N{.*?}|u[a-fA-F0-9]{4}|'
|
1248
|
+
r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
|
1249
|
+
],
|
1250
|
+
'triplestring': [
|
1251
|
+
(r'"""', String, '#pop'),
|
1252
|
+
include('string'),
|
1253
|
+
(r'\n', String),
|
1254
|
+
],
|
1255
|
+
'doublestring': [
|
1256
|
+
(r'"', String.Double, '#pop'),
|
1257
|
+
include('string'),
|
1258
|
+
],
|
1259
|
+
'singlestring': [
|
1260
|
+
(r"'", String, '#pop'),
|
1261
|
+
include('string'),
|
1262
|
+
],
|
1263
|
+
'operators': [
|
1264
|
+
(r'[#=,./%+\-?]', Operator),
|
1265
|
+
(r'(eq|gt|lt|gte|lte|neq|matches)\b', Operator),
|
1266
|
+
(r'(==|<=|<|>=|>|!=)', Operator),
|
1267
|
+
],
|
1268
|
+
}
|
1269
|
+
|
1270
|
+
|
1271
|
+
class JasminLexer(RegexLexer):
|
1272
|
+
"""
|
1273
|
+
For `Jasmin <http://jasmin.sourceforge.net/>`_ assembly code.
|
1274
|
+
|
1275
|
+
.. versionadded:: 2.0
|
1276
|
+
"""
|
1277
|
+
|
1278
|
+
name = 'Jasmin'
|
1279
|
+
aliases = ['jasmin', 'jasminxt']
|
1280
|
+
filenames = ['*.j']
|
1281
|
+
|
1282
|
+
_whitespace = r' \n\t\r'
|
1283
|
+
_ws = r'(?:[%s]+)' % _whitespace
|
1284
|
+
_separator = r'%s:=' % _whitespace
|
1285
|
+
_break = r'(?=[%s]|$)' % _separator
|
1286
|
+
_name = r'[^%s]+' % _separator
|
1287
|
+
_unqualified_name = r'(?:[^%s.;\[/]+)' % _separator
|
1288
|
+
|
1289
|
+
tokens = {
|
1290
|
+
'default': [
|
1291
|
+
(r'\n', Text, '#pop'),
|
1292
|
+
(r"'", String.Single, ('#pop', 'quote')),
|
1293
|
+
(r'"', String.Double, 'string'),
|
1294
|
+
(r'=', Punctuation),
|
1295
|
+
(r':', Punctuation, 'label'),
|
1296
|
+
(_ws, Text),
|
1297
|
+
(r';.*', Comment.Single),
|
1298
|
+
(r'(\$[-+])?0x-?[\da-fA-F]+%s' % _break, Number.Hex),
|
1299
|
+
(r'(\$[-+]|\+)?-?\d+%s' % _break, Number.Integer),
|
1300
|
+
(r'-?(\d+\.\d*|\.\d+)([eE][-+]?\d+)?[fFdD]?'
|
1301
|
+
r'[\x00-\x08\x0b\x0c\x0e-\x1f]*%s' % _break, Number.Float),
|
1302
|
+
(r'\$%s' % _name, Name.Variable),
|
1303
|
+
|
1304
|
+
# Directives
|
1305
|
+
(r'\.annotation%s' % _break, Keyword.Reserved, 'annotation'),
|
1306
|
+
(r'(\.attribute|\.bytecode|\.debug|\.deprecated|\.enclosing|'
|
1307
|
+
r'\.interface|\.line|\.signature|\.source|\.stack|\.var|abstract|'
|
1308
|
+
r'annotation|bridge|class|default|enum|field|final|fpstrict|'
|
1309
|
+
r'interface|native|private|protected|public|signature|static|'
|
1310
|
+
r'synchronized|synthetic|transient|varargs|volatile)%s' % _break,
|
1311
|
+
Keyword.Reserved),
|
1312
|
+
(r'\.catch%s' % _break, Keyword.Reserved, 'caught-exception'),
|
1313
|
+
(r'(\.class|\.implements|\.inner|\.super|inner|invisible|'
|
1314
|
+
r'invisibleparam|outer|visible|visibleparam)%s' % _break,
|
1315
|
+
Keyword.Reserved, 'class/convert-dots'),
|
1316
|
+
(r'\.field%s' % _break, Keyword.Reserved,
|
1317
|
+
('descriptor/convert-dots', 'field')),
|
1318
|
+
(r'(\.end|\.limit|use)%s' % _break, Keyword.Reserved,
|
1319
|
+
'no-verification'),
|
1320
|
+
(r'\.method%s' % _break, Keyword.Reserved, 'method'),
|
1321
|
+
(r'\.set%s' % _break, Keyword.Reserved, 'var'),
|
1322
|
+
(r'\.throws%s' % _break, Keyword.Reserved, 'exception'),
|
1323
|
+
(r'(from|offset|to|using)%s' % _break, Keyword.Reserved, 'label'),
|
1324
|
+
(r'is%s' % _break, Keyword.Reserved,
|
1325
|
+
('descriptor/convert-dots', 'var')),
|
1326
|
+
(r'(locals|stack)%s' % _break, Keyword.Reserved, 'verification'),
|
1327
|
+
(r'method%s' % _break, Keyword.Reserved, 'enclosing-method'),
|
1328
|
+
|
1329
|
+
# Instructions
|
1330
|
+
(r'(aaload|aastore|aconst_null|aload|aload_0|aload_1|aload_2|'
|
1331
|
+
r'aload_3|aload_w|areturn|arraylength|astore|astore_0|astore_1|'
|
1332
|
+
r'astore_2|astore_3|astore_w|athrow|baload|bastore|bipush|'
|
1333
|
+
r'breakpoint|caload|castore|d2f|d2i|d2l|dadd|daload|dastore|'
|
1334
|
+
r'dcmpg|dcmpl|dconst_0|dconst_1|ddiv|dload|dload_0|dload_1|'
|
1335
|
+
r'dload_2|dload_3|dload_w|dmul|dneg|drem|dreturn|dstore|dstore_0|'
|
1336
|
+
r'dstore_1|dstore_2|dstore_3|dstore_w|dsub|dup|dup2|dup2_x1|'
|
1337
|
+
r'dup2_x2|dup_x1|dup_x2|f2d|f2i|f2l|fadd|faload|fastore|fcmpg|'
|
1338
|
+
r'fcmpl|fconst_0|fconst_1|fconst_2|fdiv|fload|fload_0|fload_1|'
|
1339
|
+
r'fload_2|fload_3|fload_w|fmul|fneg|frem|freturn|fstore|fstore_0|'
|
1340
|
+
r'fstore_1|fstore_2|fstore_3|fstore_w|fsub|i2b|i2c|i2d|i2f|i2l|'
|
1341
|
+
r'i2s|iadd|iaload|iand|iastore|iconst_0|iconst_1|iconst_2|'
|
1342
|
+
r'iconst_3|iconst_4|iconst_5|iconst_m1|idiv|iinc|iinc_w|iload|'
|
1343
|
+
r'iload_0|iload_1|iload_2|iload_3|iload_w|imul|ineg|int2byte|'
|
1344
|
+
r'int2char|int2short|ior|irem|ireturn|ishl|ishr|istore|istore_0|'
|
1345
|
+
r'istore_1|istore_2|istore_3|istore_w|isub|iushr|ixor|l2d|l2f|'
|
1346
|
+
r'l2i|ladd|laload|land|lastore|lcmp|lconst_0|lconst_1|ldc2_w|'
|
1347
|
+
r'ldiv|lload|lload_0|lload_1|lload_2|lload_3|lload_w|lmul|lneg|'
|
1348
|
+
r'lookupswitch|lor|lrem|lreturn|lshl|lshr|lstore|lstore_0|'
|
1349
|
+
r'lstore_1|lstore_2|lstore_3|lstore_w|lsub|lushr|lxor|'
|
1350
|
+
r'monitorenter|monitorexit|nop|pop|pop2|ret|ret_w|return|saload|'
|
1351
|
+
r'sastore|sipush|swap)%s' % _break, Keyword.Reserved),
|
1352
|
+
(r'(anewarray|checkcast|instanceof|ldc|ldc_w|new)%s' % _break,
|
1353
|
+
Keyword.Reserved, 'class/no-dots'),
|
1354
|
+
(r'(invokedynamic|invokeinterface|invokenonvirtual|invokespecial|'
|
1355
|
+
r'invokestatic|invokevirtual)%s' % _break, Keyword.Reserved,
|
1356
|
+
'invocation'),
|
1357
|
+
(r'(getfield|putfield)%s' % _break, Keyword.Reserved,
|
1358
|
+
('descriptor/no-dots', 'field')),
|
1359
|
+
(r'(getstatic|putstatic)%s' % _break, Keyword.Reserved,
|
1360
|
+
('descriptor/no-dots', 'static')),
|
1361
|
+
(r'(goto|goto_w|if_acmpeq|if_acmpne|if_icmpeq|if_icmpge|if_icmpgt|'
|
1362
|
+
r'if_icmple|if_icmplt|if_icmpne|ifeq|ifge|ifgt|ifle|iflt|ifne|'
|
1363
|
+
r'ifnonnull|ifnull|jsr|jsr_w)%s' % _break, Keyword.Reserved,
|
1364
|
+
'label'),
|
1365
|
+
(r'(multianewarray|newarray)%s' % _break, Keyword.Reserved,
|
1366
|
+
'descriptor/convert-dots'),
|
1367
|
+
(r'tableswitch%s' % _break, Keyword.Reserved, 'table')
|
1368
|
+
],
|
1369
|
+
'quote': [
|
1370
|
+
(r"'", String.Single, '#pop'),
|
1371
|
+
(r'\\u[\da-fA-F]{4}', String.Escape),
|
1372
|
+
(r"[^'\\]+", String.Single)
|
1373
|
+
],
|
1374
|
+
'string': [
|
1375
|
+
(r'"', String.Double, '#pop'),
|
1376
|
+
(r'\\([nrtfb"\'\\]|u[\da-fA-F]{4}|[0-3]?[0-7]{1,2})',
|
1377
|
+
String.Escape),
|
1378
|
+
(r'[^"\\]+', String.Double)
|
1379
|
+
],
|
1380
|
+
'root': [
|
1381
|
+
(r'\n+', Text),
|
1382
|
+
(r"'", String.Single, 'quote'),
|
1383
|
+
include('default'),
|
1384
|
+
(r'(%s)([ \t\r]*)(:)' % _name,
|
1385
|
+
bygroups(Name.Label, Text, Punctuation)),
|
1386
|
+
(_name, String.Other)
|
1387
|
+
],
|
1388
|
+
'annotation': [
|
1389
|
+
(r'\n', Text, ('#pop', 'annotation-body')),
|
1390
|
+
(r'default%s' % _break, Keyword.Reserved,
|
1391
|
+
('#pop', 'annotation-default')),
|
1392
|
+
include('default')
|
1393
|
+
],
|
1394
|
+
'annotation-body': [
|
1395
|
+
(r'\n+', Text),
|
1396
|
+
(r'\.end%s' % _break, Keyword.Reserved, '#pop'),
|
1397
|
+
include('default'),
|
1398
|
+
(_name, String.Other, ('annotation-items', 'descriptor/no-dots'))
|
1399
|
+
],
|
1400
|
+
'annotation-default': [
|
1401
|
+
(r'\n+', Text),
|
1402
|
+
(r'\.end%s' % _break, Keyword.Reserved, '#pop'),
|
1403
|
+
include('default'),
|
1404
|
+
default(('annotation-items', 'descriptor/no-dots'))
|
1405
|
+
],
|
1406
|
+
'annotation-items': [
|
1407
|
+
(r"'", String.Single, 'quote'),
|
1408
|
+
include('default'),
|
1409
|
+
(_name, String.Other)
|
1410
|
+
],
|
1411
|
+
'caught-exception': [
|
1412
|
+
(r'all%s' % _break, Keyword, '#pop'),
|
1413
|
+
include('exception')
|
1414
|
+
],
|
1415
|
+
'class/convert-dots': [
|
1416
|
+
include('default'),
|
1417
|
+
(r'(L)((?:%s[/.])*)(%s)(;)' % (_unqualified_name, _name),
|
1418
|
+
bygroups(Keyword.Type, Name.Namespace, Name.Class, Punctuation),
|
1419
|
+
'#pop'),
|
1420
|
+
(r'((?:%s[/.])*)(%s)' % (_unqualified_name, _name),
|
1421
|
+
bygroups(Name.Namespace, Name.Class), '#pop')
|
1422
|
+
],
|
1423
|
+
'class/no-dots': [
|
1424
|
+
include('default'),
|
1425
|
+
(r'\[+', Punctuation, ('#pop', 'descriptor/no-dots')),
|
1426
|
+
(r'(L)((?:%s/)*)(%s)(;)' % (_unqualified_name, _name),
|
1427
|
+
bygroups(Keyword.Type, Name.Namespace, Name.Class, Punctuation),
|
1428
|
+
'#pop'),
|
1429
|
+
(r'((?:%s/)*)(%s)' % (_unqualified_name, _name),
|
1430
|
+
bygroups(Name.Namespace, Name.Class), '#pop')
|
1431
|
+
],
|
1432
|
+
'descriptor/convert-dots': [
|
1433
|
+
include('default'),
|
1434
|
+
(r'\[+', Punctuation),
|
1435
|
+
(r'(L)((?:%s[/.])*)(%s?)(;)' % (_unqualified_name, _name),
|
1436
|
+
bygroups(Keyword.Type, Name.Namespace, Name.Class, Punctuation),
|
1437
|
+
'#pop'),
|
1438
|
+
(r'[^%s\[)L]*' % _separator, Keyword.Type, '#pop')
|
1439
|
+
],
|
1440
|
+
'descriptor/no-dots': [
|
1441
|
+
include('default'),
|
1442
|
+
(r'\[+', Punctuation),
|
1443
|
+
(r'(L)((?:%s/)*)(%s)(;)' % (_unqualified_name, _name),
|
1444
|
+
bygroups(Keyword.Type, Name.Namespace, Name.Class, Punctuation),
|
1445
|
+
'#pop'),
|
1446
|
+
(r'[^%s\[)L]*' % _separator, Keyword.Type, '#pop')
|
1447
|
+
],
|
1448
|
+
'descriptors/convert-dots': [
|
1449
|
+
(r'\)', Punctuation, '#pop'),
|
1450
|
+
default('descriptor/convert-dots')
|
1451
|
+
],
|
1452
|
+
'enclosing-method': [
|
1453
|
+
(_ws, Text),
|
1454
|
+
(r'(?=[^%s]*\()' % _separator, Text, ('#pop', 'invocation')),
|
1455
|
+
default(('#pop', 'class/convert-dots'))
|
1456
|
+
],
|
1457
|
+
'exception': [
|
1458
|
+
include('default'),
|
1459
|
+
(r'((?:%s[/.])*)(%s)' % (_unqualified_name, _name),
|
1460
|
+
bygroups(Name.Namespace, Name.Exception), '#pop')
|
1461
|
+
],
|
1462
|
+
'field': [
|
1463
|
+
(r'static%s' % _break, Keyword.Reserved, ('#pop', 'static')),
|
1464
|
+
include('default'),
|
1465
|
+
(r'((?:%s[/.](?=[^%s]*[/.]))*)(%s[/.])?(%s)' %
|
1466
|
+
(_unqualified_name, _separator, _unqualified_name, _name),
|
1467
|
+
bygroups(Name.Namespace, Name.Class, Name.Variable.Instance),
|
1468
|
+
'#pop')
|
1469
|
+
],
|
1470
|
+
'invocation': [
|
1471
|
+
include('default'),
|
1472
|
+
(r'((?:%s[/.](?=[^%s(]*[/.]))*)(%s[/.])?(%s)(\()' %
|
1473
|
+
(_unqualified_name, _separator, _unqualified_name, _name),
|
1474
|
+
bygroups(Name.Namespace, Name.Class, Name.Function, Punctuation),
|
1475
|
+
('#pop', 'descriptor/convert-dots', 'descriptors/convert-dots',
|
1476
|
+
'descriptor/convert-dots'))
|
1477
|
+
],
|
1478
|
+
'label': [
|
1479
|
+
include('default'),
|
1480
|
+
(_name, Name.Label, '#pop')
|
1481
|
+
],
|
1482
|
+
'method': [
|
1483
|
+
include('default'),
|
1484
|
+
(r'(%s)(\()' % _name, bygroups(Name.Function, Punctuation),
|
1485
|
+
('#pop', 'descriptor/convert-dots', 'descriptors/convert-dots',
|
1486
|
+
'descriptor/convert-dots'))
|
1487
|
+
],
|
1488
|
+
'no-verification': [
|
1489
|
+
(r'(locals|method|stack)%s' % _break, Keyword.Reserved, '#pop'),
|
1490
|
+
include('default')
|
1491
|
+
],
|
1492
|
+
'static': [
|
1493
|
+
include('default'),
|
1494
|
+
(r'((?:%s[/.](?=[^%s]*[/.]))*)(%s[/.])?(%s)' %
|
1495
|
+
(_unqualified_name, _separator, _unqualified_name, _name),
|
1496
|
+
bygroups(Name.Namespace, Name.Class, Name.Variable.Class), '#pop')
|
1497
|
+
],
|
1498
|
+
'table': [
|
1499
|
+
(r'\n+', Text),
|
1500
|
+
(r'default%s' % _break, Keyword.Reserved, '#pop'),
|
1501
|
+
include('default'),
|
1502
|
+
(_name, Name.Label)
|
1503
|
+
],
|
1504
|
+
'var': [
|
1505
|
+
include('default'),
|
1506
|
+
(_name, Name.Variable, '#pop')
|
1507
|
+
],
|
1508
|
+
'verification': [
|
1509
|
+
include('default'),
|
1510
|
+
(r'(Double|Float|Integer|Long|Null|Top|UninitializedThis)%s' %
|
1511
|
+
_break, Keyword, '#pop'),
|
1512
|
+
(r'Object%s' % _break, Keyword, ('#pop', 'class/no-dots')),
|
1513
|
+
(r'Uninitialized%s' % _break, Keyword, ('#pop', 'label'))
|
1514
|
+
]
|
1515
|
+
}
|
1516
|
+
|
1517
|
+
def analyse_text(text):
|
1518
|
+
score = 0
|
1519
|
+
if re.search(r'^\s*\.class\s', text, re.MULTILINE):
|
1520
|
+
score += 0.5
|
1521
|
+
if re.search(r'^\s*[a-z]+_[a-z]+\b', text, re.MULTILINE):
|
1522
|
+
score += 0.3
|
1523
|
+
if re.search(r'^\s*\.(attribute|bytecode|debug|deprecated|enclosing|'
|
1524
|
+
r'inner|interface|limit|set|signature|stack)\b', text,
|
1525
|
+
re.MULTILINE):
|
1526
|
+
score += 0.6
|
1527
|
+
return score
|