pygments.rb 1.2.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.github/dependabot.yml +13 -0
- data/.github/workflows/ci.yml +40 -0
- data/.github/workflows/release.yml +24 -0
- data/.gitignore +4 -6
- data/.rubocop.yml +16 -0
- data/CHANGELOG.adoc +137 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.adoc +159 -0
- data/Rakefile +8 -32
- data/bench.rb +14 -8
- data/lib/pygments.rb +16 -14
- data/lib/pygments/lexer.rb +87 -65
- data/lib/pygments/mentos.py +23 -110
- data/lib/pygments/popen.rb +188 -284
- data/lib/pygments/version.rb +2 -2
- data/pygments.rb.gemspec +20 -13
- data/test/test_pygments.rb +50 -110
- data/vendor/pygments-main/{AUTHORS → Pygments-2.8.1.dist-info/AUTHORS} +26 -3
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/INSTALLER +1 -0
- data/vendor/pygments-main/{LICENSE → Pygments-2.8.1.dist-info/LICENSE} +1 -1
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/METADATA +48 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +494 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/REQUESTED +0 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/WHEEL +5 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/entry_points.txt +3 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/top_level.txt +1 -0
- data/vendor/pygments-main/bin/pygmentize +8 -0
- data/vendor/pygments-main/pygments/__init__.py +6 -12
- data/vendor/pygments-main/pygments/__main__.py +17 -0
- data/vendor/pygments-main/pygments/cmdline.py +213 -184
- data/vendor/pygments-main/pygments/console.py +6 -10
- data/vendor/pygments-main/pygments/filter.py +4 -7
- data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
- data/vendor/pygments-main/pygments/formatter.py +4 -5
- data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
- data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
- data/vendor/pygments-main/pygments/formatters/html.py +242 -139
- data/vendor/pygments-main/pygments/formatters/img.py +91 -50
- data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
- data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
- data/vendor/pygments-main/pygments/formatters/other.py +18 -17
- data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
- data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
- data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
- data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
- data/vendor/pygments-main/pygments/lexer.py +47 -44
- data/vendor/pygments-main/pygments/lexers/__init__.py +341 -0
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1644 -0
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +231 -0
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +75 -0
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1724 -0
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5326 -0
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +292 -0
- data/vendor/pygments-main/pygments/lexers/_mapping.py +554 -0
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1171 -0
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2600 -0
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4752 -0
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +677 -0
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3093 -0
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1160 -0
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +557 -0
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +457 -0
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1003 -0
- data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
- data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1938 -0
- data/vendor/pygments-main/pygments/lexers/actionscript.py +244 -0
- data/vendor/pygments-main/pygments/lexers/agile.py +23 -0
- data/vendor/pygments-main/pygments/lexers/algebra.py +239 -0
- data/vendor/pygments-main/pygments/lexers/ambient.py +75 -0
- data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
- data/vendor/pygments-main/pygments/lexers/ampl.py +86 -0
- data/vendor/pygments-main/pygments/lexers/apl.py +100 -0
- data/vendor/pygments-main/pygments/lexers/archetype.py +317 -0
- data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +1004 -0
- data/vendor/pygments-main/pygments/lexers/automation.py +379 -0
- data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
- data/vendor/pygments-main/pygments/lexers/basic.py +661 -0
- data/vendor/pygments-main/pygments/lexers/bibtex.py +159 -0
- data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
- data/vendor/pygments-main/pygments/lexers/business.py +626 -0
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +342 -0
- data/vendor/pygments-main/pygments/lexers/c_like.py +565 -0
- data/vendor/pygments-main/pygments/lexers/capnproto.py +77 -0
- data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
- data/vendor/pygments-main/pygments/lexers/chapel.py +111 -0
- data/vendor/pygments-main/pygments/lexers/clean.py +178 -0
- data/vendor/pygments-main/pygments/lexers/compiled.py +33 -0
- data/vendor/pygments-main/pygments/lexers/configs.py +985 -0
- data/vendor/pygments-main/pygments/lexers/console.py +113 -0
- data/vendor/pygments-main/pygments/lexers/crystal.py +366 -0
- data/vendor/pygments-main/pygments/lexers/csound.py +466 -0
- data/vendor/pygments-main/pygments/lexers/css.py +694 -0
- data/vendor/pygments-main/pygments/lexers/d.py +255 -0
- data/vendor/pygments-main/pygments/lexers/dalvik.py +124 -0
- data/vendor/pygments-main/pygments/lexers/data.py +697 -0
- data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
- data/vendor/pygments-main/pygments/lexers/diff.py +164 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +706 -0
- data/vendor/pygments-main/pygments/lexers/dsls.py +959 -0
- data/vendor/pygments-main/pygments/lexers/dylan.py +286 -0
- data/vendor/pygments-main/pygments/lexers/ecl.py +137 -0
- data/vendor/pygments-main/pygments/lexers/eiffel.py +64 -0
- data/vendor/pygments-main/pygments/lexers/elm.py +120 -0
- data/vendor/pygments-main/pygments/lexers/email.py +150 -0
- data/vendor/pygments-main/pygments/lexers/erlang.py +529 -0
- data/vendor/pygments-main/pygments/lexers/esoteric.py +303 -0
- data/vendor/pygments-main/pygments/lexers/ezhil.py +76 -0
- data/vendor/pygments-main/pygments/lexers/factor.py +343 -0
- data/vendor/pygments-main/pygments/lexers/fantom.py +249 -0
- data/vendor/pygments-main/pygments/lexers/felix.py +272 -0
- data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
- data/vendor/pygments-main/pygments/lexers/forth.py +177 -0
- data/vendor/pygments-main/pygments/lexers/fortran.py +208 -0
- data/vendor/pygments-main/pygments/lexers/foxpro.py +427 -0
- data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +20 -0
- data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
- data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
- data/vendor/pygments-main/pygments/lexers/go.py +100 -0
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +269 -0
- data/vendor/pygments-main/pygments/lexers/graph.py +84 -0
- data/vendor/pygments-main/pygments/lexers/graphics.py +799 -0
- data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
- data/vendor/pygments-main/pygments/lexers/haskell.py +869 -0
- data/vendor/pygments-main/pygments/lexers/haxe.py +935 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +468 -0
- data/vendor/pygments-main/pygments/lexers/hexdump.py +102 -0
- data/vendor/pygments-main/pygments/lexers/html.py +613 -0
- data/vendor/pygments-main/pygments/lexers/idl.py +280 -0
- data/vendor/pygments-main/pygments/lexers/igor.py +419 -0
- data/vendor/pygments-main/pygments/lexers/inferno.py +95 -0
- data/vendor/pygments-main/pygments/lexers/installers.py +321 -0
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +1367 -0
- data/vendor/pygments-main/pygments/lexers/iolang.py +62 -0
- data/vendor/pygments-main/pygments/lexers/j.py +145 -0
- data/vendor/pygments-main/pygments/lexers/javascript.py +1536 -0
- data/vendor/pygments-main/pygments/lexers/julia.py +330 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +1739 -0
- data/vendor/pygments-main/pygments/lexers/lisp.py +2698 -0
- data/vendor/pygments-main/pygments/lexers/make.py +205 -0
- data/vendor/pygments-main/pygments/lexers/markup.py +762 -0
- data/vendor/pygments-main/pygments/lexers/math.py +20 -0
- data/vendor/pygments-main/pygments/lexers/matlab.py +3280 -0
- data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
- data/vendor/pygments-main/pygments/lexers/ml.py +957 -0
- data/vendor/pygments-main/pygments/lexers/modeling.py +365 -0
- data/vendor/pygments-main/pygments/lexers/modula2.py +1579 -0
- data/vendor/pygments-main/pygments/lexers/monte.py +203 -0
- data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
- data/vendor/pygments-main/pygments/lexers/ncl.py +893 -0
- data/vendor/pygments-main/pygments/lexers/nimrod.py +158 -0
- data/vendor/pygments-main/pygments/lexers/nit.py +63 -0
- data/vendor/pygments-main/pygments/lexers/nix.py +135 -0
- data/vendor/pygments-main/pygments/lexers/oberon.py +120 -0
- data/vendor/pygments-main/pygments/lexers/objective.py +503 -0
- data/vendor/pygments-main/pygments/lexers/ooc.py +84 -0
- data/vendor/pygments-main/pygments/lexers/other.py +40 -0
- data/vendor/pygments-main/pygments/lexers/parasail.py +78 -0
- data/vendor/pygments-main/pygments/lexers/parsers.py +799 -0
- data/vendor/pygments-main/pygments/lexers/pascal.py +643 -0
- data/vendor/pygments-main/pygments/lexers/pawn.py +202 -0
- data/vendor/pygments-main/pygments/lexers/perl.py +731 -0
- data/vendor/pygments-main/pygments/lexers/php.py +320 -0
- data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
- data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
- data/vendor/pygments-main/pygments/lexers/praat.py +301 -0
- data/vendor/pygments-main/pygments/lexers/prolog.py +305 -0
- data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
- data/vendor/pygments-main/pygments/lexers/python.py +1158 -0
- data/vendor/pygments-main/pygments/lexers/qvt.py +151 -0
- data/vendor/pygments-main/pygments/lexers/r.py +190 -0
- data/vendor/pygments-main/pygments/lexers/rdf.py +462 -0
- data/vendor/pygments-main/pygments/lexers/rebol.py +430 -0
- data/vendor/pygments-main/pygments/lexers/resource.py +84 -0
- data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
- data/vendor/pygments-main/pygments/lexers/rnc.py +66 -0
- data/vendor/pygments-main/pygments/lexers/roboconf.py +81 -0
- data/vendor/pygments-main/pygments/lexers/robotframework.py +551 -0
- data/vendor/pygments-main/pygments/lexers/ruby.py +523 -0
- data/vendor/pygments-main/pygments/lexers/rust.py +223 -0
- data/vendor/pygments-main/pygments/lexers/sas.py +227 -0
- data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
- data/vendor/pygments-main/pygments/lexers/scripting.py +1283 -0
- data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +909 -0
- data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
- data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +194 -0
- data/vendor/pygments-main/pygments/lexers/smv.py +78 -0
- data/vendor/pygments-main/pygments/lexers/snobol.py +82 -0
- data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
- data/vendor/pygments-main/pygments/lexers/special.py +106 -0
- data/vendor/pygments-main/pygments/lexers/sql.py +832 -0
- data/vendor/pygments-main/pygments/lexers/stata.py +170 -0
- data/vendor/pygments-main/pygments/lexers/supercollider.py +94 -0
- data/vendor/pygments-main/pygments/lexers/tcl.py +144 -0
- data/vendor/pygments-main/pygments/lexers/templates.py +2263 -0
- data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
- data/vendor/pygments-main/pygments/lexers/testing.py +206 -0
- data/vendor/pygments-main/pygments/lexers/text.py +25 -0
- data/vendor/pygments-main/pygments/lexers/textedit.py +168 -0
- data/vendor/pygments-main/pygments/lexers/textfmts.py +429 -0
- data/vendor/pygments-main/pygments/lexers/theorem.py +476 -0
- data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +53 -0
- data/vendor/pygments-main/pygments/lexers/typoscript.py +218 -0
- data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
- data/vendor/pygments-main/pygments/lexers/urbi.py +145 -0
- data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
- data/vendor/pygments-main/pygments/lexers/varnish.py +189 -0
- data/vendor/pygments-main/pygments/lexers/verification.py +113 -0
- data/vendor/pygments-main/pygments/lexers/web.py +23 -0
- data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
- data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
- data/vendor/pygments-main/pygments/lexers/whiley.py +115 -0
- data/vendor/pygments-main/pygments/lexers/x10.py +68 -0
- data/vendor/pygments-main/pygments/lexers/xorg.py +36 -0
- data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
- data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
- data/vendor/pygments-main/pygments/modeline.py +1 -2
- data/vendor/pygments-main/pygments/plugin.py +4 -3
- data/vendor/pygments-main/pygments/regexopt.py +1 -2
- data/vendor/pygments-main/pygments/scanner.py +2 -3
- data/vendor/pygments-main/pygments/sphinxext.py +2 -5
- data/vendor/pygments-main/pygments/style.py +61 -25
- data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
- data/vendor/pygments-main/pygments/styles/abap.py +1 -2
- data/vendor/pygments-main/pygments/styles/algol.py +1 -2
- data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
- data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
- data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
- data/vendor/pygments-main/pygments/styles/borland.py +1 -2
- data/vendor/pygments-main/pygments/styles/bw.py +1 -2
- data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
- data/vendor/pygments-main/pygments/styles/default.py +1 -2
- data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
- data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
- data/vendor/pygments-main/pygments/styles/igor.py +1 -2
- data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
- data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
- data/vendor/pygments-main/pygments/styles/manni.py +1 -2
- data/vendor/pygments-main/pygments/styles/material.py +118 -0
- data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
- data/vendor/pygments-main/pygments/styles/native.py +1 -2
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
- data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
- data/vendor/pygments-main/pygments/styles/sas.py +1 -2
- data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
- data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
- data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
- data/vendor/pygments-main/pygments/styles/tango.py +1 -2
- data/vendor/pygments-main/pygments/styles/trac.py +1 -2
- data/vendor/pygments-main/pygments/styles/vim.py +1 -2
- data/vendor/pygments-main/pygments/styles/vs.py +1 -2
- data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
- data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
- data/vendor/pygments-main/pygments/token.py +1 -2
- data/vendor/pygments-main/pygments/unistring.py +47 -109
- data/vendor/pygments-main/pygments/util.py +16 -96
- metadata +81 -139
- data/CHANGELOG.md +0 -111
- data/README.md +0 -121
- data/cache-lexers.rb +0 -8
- data/circle.yml +0 -20
- data/test/test_data.c +0 -2581
- data/test/test_data.py +0 -514
- data/test/test_data_generated +0 -2582
- data/vendor/custom_lexers/github.py +0 -565
- data/vendor/pygments-main/CHANGES +0 -1186
- data/vendor/pygments-main/MANIFEST.in +0 -6
- data/vendor/pygments-main/Makefile +0 -65
- data/vendor/pygments-main/README.rst +0 -39
- data/vendor/pygments-main/REVISION +0 -1
- data/vendor/pygments-main/TODO +0 -12
- data/vendor/pygments-main/doc/Makefile +0 -153
- 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 +0 -3
- data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
- 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 +0 -401
- data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
- data/vendor/pygments-main/doc/conf.py +0 -241
- data/vendor/pygments-main/doc/docs/api.rst +0 -354
- data/vendor/pygments-main/doc/docs/authors.rst +0 -4
- data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
- data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
- data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
- data/vendor/pygments-main/doc/docs/filters.rst +0 -41
- data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
- data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
- data/vendor/pygments-main/doc/docs/index.rst +0 -66
- data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
- data/vendor/pygments-main/doc/docs/java.rst +0 -70
- data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
- data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
- data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
- data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
- data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
- data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
- data/vendor/pygments-main/doc/docs/styles.rst +0 -201
- data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
- data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
- data/vendor/pygments-main/doc/download.rst +0 -41
- data/vendor/pygments-main/doc/faq.rst +0 -139
- data/vendor/pygments-main/doc/index.rst +0 -54
- data/vendor/pygments-main/doc/languages.rst +0 -154
- data/vendor/pygments-main/doc/make.bat +0 -190
- data/vendor/pygments-main/doc/pygmentize.1 +0 -94
- data/vendor/pygments-main/external/autopygmentize +0 -101
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
- data/vendor/pygments-main/external/markdown-processor.py +0 -67
- data/vendor/pygments-main/external/moin-parser.py +0 -112
- data/vendor/pygments-main/external/pygments.bashcomp +0 -38
- data/vendor/pygments-main/external/rst-directive.py +0 -82
- data/vendor/pygments-main/pygmentize +0 -8
- data/vendor/pygments-main/requirements.txt +0 -5
- data/vendor/pygments-main/scripts/check_sources.py +0 -211
- data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
- data/vendor/pygments-main/scripts/epydoc.css +0 -280
- data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
- data/vendor/pygments-main/scripts/pylintrc +0 -301
- data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
- data/vendor/pygments-main/setup.cfg +0 -10
- data/vendor/pygments-main/setup.py +0 -77
- data/vendor/pygments-main/tox.ini +0 -7
- data/vendor/simplejson/.gitignore +0 -10
- data/vendor/simplejson/.travis.yml +0 -5
- data/vendor/simplejson/CHANGES.txt +0 -291
- data/vendor/simplejson/LICENSE.txt +0 -19
- data/vendor/simplejson/MANIFEST.in +0 -5
- data/vendor/simplejson/README.rst +0 -19
- data/vendor/simplejson/conf.py +0 -179
- data/vendor/simplejson/index.rst +0 -628
- data/vendor/simplejson/scripts/make_docs.py +0 -18
- data/vendor/simplejson/setup.py +0 -104
- data/vendor/simplejson/simplejson/__init__.py +0 -510
- data/vendor/simplejson/simplejson/_speedups.c +0 -2745
- data/vendor/simplejson/simplejson/decoder.py +0 -425
- data/vendor/simplejson/simplejson/encoder.py +0 -567
- data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
- data/vendor/simplejson/simplejson/scanner.py +0 -77
- data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
- data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
- data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
- data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
- data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
- data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
- data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
- data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
- data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
- data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
- data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
- data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
- data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
- data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
- data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
- data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
- data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
- data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
- data/vendor/simplejson/simplejson/tool.py +0 -39
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""
|
|
2
|
+
pygments.lexers.ooc
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
|
+
|
|
5
|
+
Lexers for the Ooc language.
|
|
6
|
+
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
8
|
+
:license: BSD, see LICENSE for details.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from pygments.lexer import RegexLexer, bygroups, words
|
|
12
|
+
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
|
13
|
+
Number, Punctuation
|
|
14
|
+
|
|
15
|
+
__all__ = ['OocLexer']
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class OocLexer(RegexLexer):
|
|
19
|
+
"""
|
|
20
|
+
For `Ooc <http://ooc-lang.org/>`_ source code
|
|
21
|
+
|
|
22
|
+
.. versionadded:: 1.2
|
|
23
|
+
"""
|
|
24
|
+
name = 'Ooc'
|
|
25
|
+
aliases = ['ooc']
|
|
26
|
+
filenames = ['*.ooc']
|
|
27
|
+
mimetypes = ['text/x-ooc']
|
|
28
|
+
|
|
29
|
+
tokens = {
|
|
30
|
+
'root': [
|
|
31
|
+
(words((
|
|
32
|
+
'class', 'interface', 'implement', 'abstract', 'extends', 'from',
|
|
33
|
+
'this', 'super', 'new', 'const', 'final', 'static', 'import',
|
|
34
|
+
'use', 'extern', 'inline', 'proto', 'break', 'continue',
|
|
35
|
+
'fallthrough', 'operator', 'if', 'else', 'for', 'while', 'do',
|
|
36
|
+
'switch', 'case', 'as', 'in', 'version', 'return', 'true',
|
|
37
|
+
'false', 'null'), prefix=r'\b', suffix=r'\b'),
|
|
38
|
+
Keyword),
|
|
39
|
+
(r'include\b', Keyword, 'include'),
|
|
40
|
+
(r'(cover)([ \t]+)(from)([ \t]+)(\w+[*@]?)',
|
|
41
|
+
bygroups(Keyword, Text, Keyword, Text, Name.Class)),
|
|
42
|
+
(r'(func)((?:[ \t]|\\\n)+)(~[a-z_]\w*)',
|
|
43
|
+
bygroups(Keyword, Text, Name.Function)),
|
|
44
|
+
(r'\bfunc\b', Keyword),
|
|
45
|
+
# Note: %= and ^= not listed on http://ooc-lang.org/syntax
|
|
46
|
+
(r'//.*', Comment),
|
|
47
|
+
(r'(?s)/\*.*?\*/', Comment.Multiline),
|
|
48
|
+
(r'(==?|\+=?|-[=>]?|\*=?|/=?|:=|!=?|%=?|\?|>{1,3}=?|<{1,3}=?|\.\.|'
|
|
49
|
+
r'&&?|\|\|?|\^=?)', Operator),
|
|
50
|
+
(r'(\.)([ \t]*)([a-z]\w*)', bygroups(Operator, Text,
|
|
51
|
+
Name.Function)),
|
|
52
|
+
(r'[A-Z][A-Z0-9_]+', Name.Constant),
|
|
53
|
+
(r'[A-Z]\w*([@*]|\[[ \t]*\])?', Name.Class),
|
|
54
|
+
|
|
55
|
+
(r'([a-z]\w*(?:~[a-z]\w*)?)((?:[ \t]|\\\n)*)(?=\()',
|
|
56
|
+
bygroups(Name.Function, Text)),
|
|
57
|
+
(r'[a-z]\w*', Name.Variable),
|
|
58
|
+
|
|
59
|
+
# : introduces types
|
|
60
|
+
(r'[:(){}\[\];,]', Punctuation),
|
|
61
|
+
|
|
62
|
+
(r'0x[0-9a-fA-F]+', Number.Hex),
|
|
63
|
+
(r'0c[0-9]+', Number.Oct),
|
|
64
|
+
(r'0b[01]+', Number.Bin),
|
|
65
|
+
(r'[0-9_]\.[0-9_]*(?!\.)', Number.Float),
|
|
66
|
+
(r'[0-9_]+', Number.Decimal),
|
|
67
|
+
|
|
68
|
+
(r'"(?:\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\"])*"',
|
|
69
|
+
String.Double),
|
|
70
|
+
(r"'(?:\\.|\\[0-9]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'",
|
|
71
|
+
String.Char),
|
|
72
|
+
(r'@', Punctuation), # pointer dereference
|
|
73
|
+
(r'\.', Punctuation), # imports or chain operator
|
|
74
|
+
|
|
75
|
+
(r'\\[ \t\n]', Text),
|
|
76
|
+
(r'[ \t]+', Text),
|
|
77
|
+
],
|
|
78
|
+
'include': [
|
|
79
|
+
(r'[\w/]+', Name),
|
|
80
|
+
(r',', Punctuation),
|
|
81
|
+
(r'[ \t]', Text),
|
|
82
|
+
(r'[;\n]', Text, '#pop'),
|
|
83
|
+
],
|
|
84
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""
|
|
2
|
+
pygments.lexers.other
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
4
|
+
|
|
5
|
+
Just export lexer classes previously contained in this module.
|
|
6
|
+
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
8
|
+
:license: BSD, see LICENSE for details.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from pygments.lexers.sql import SqlLexer, MySqlLexer, SqliteConsoleLexer
|
|
12
|
+
from pygments.lexers.shell import BashLexer, BashSessionLexer, BatchLexer, \
|
|
13
|
+
TcshLexer
|
|
14
|
+
from pygments.lexers.robotframework import RobotFrameworkLexer
|
|
15
|
+
from pygments.lexers.testing import GherkinLexer
|
|
16
|
+
from pygments.lexers.esoteric import BrainfuckLexer, BefungeLexer, RedcodeLexer
|
|
17
|
+
from pygments.lexers.prolog import LogtalkLexer
|
|
18
|
+
from pygments.lexers.snobol import SnobolLexer
|
|
19
|
+
from pygments.lexers.rebol import RebolLexer
|
|
20
|
+
from pygments.lexers.configs import KconfigLexer, Cfengine3Lexer
|
|
21
|
+
from pygments.lexers.modeling import ModelicaLexer
|
|
22
|
+
from pygments.lexers.scripting import AppleScriptLexer, MOOCodeLexer, \
|
|
23
|
+
HybrisLexer
|
|
24
|
+
from pygments.lexers.graphics import PostScriptLexer, GnuplotLexer, \
|
|
25
|
+
AsymptoteLexer, PovrayLexer
|
|
26
|
+
from pygments.lexers.business import ABAPLexer, OpenEdgeLexer, \
|
|
27
|
+
GoodDataCLLexer, MaqlLexer
|
|
28
|
+
from pygments.lexers.automation import AutoItLexer, AutohotkeyLexer
|
|
29
|
+
from pygments.lexers.dsls import ProtoBufLexer, BroLexer, PuppetLexer, \
|
|
30
|
+
MscgenLexer, VGLLexer
|
|
31
|
+
from pygments.lexers.basic import CbmBasicV2Lexer
|
|
32
|
+
from pygments.lexers.pawn import SourcePawnLexer, PawnLexer
|
|
33
|
+
from pygments.lexers.ecl import ECLLexer
|
|
34
|
+
from pygments.lexers.urbi import UrbiscriptLexer
|
|
35
|
+
from pygments.lexers.smalltalk import SmalltalkLexer, NewspeakLexer
|
|
36
|
+
from pygments.lexers.installers import NSISLexer, RPMSpecLexer
|
|
37
|
+
from pygments.lexers.textedit import AwkLexer
|
|
38
|
+
from pygments.lexers.smv import NuSMVLexer
|
|
39
|
+
|
|
40
|
+
__all__ = []
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"""
|
|
2
|
+
pygments.lexers.parasail
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
|
+
|
|
5
|
+
Lexer for ParaSail.
|
|
6
|
+
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
8
|
+
:license: BSD, see LICENSE for details.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import re
|
|
12
|
+
|
|
13
|
+
from pygments.lexer import RegexLexer, include
|
|
14
|
+
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
|
15
|
+
Number, Punctuation, Literal
|
|
16
|
+
|
|
17
|
+
__all__ = ['ParaSailLexer']
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ParaSailLexer(RegexLexer):
|
|
21
|
+
"""
|
|
22
|
+
For `ParaSail <http://www.parasail-lang.org>`_ source code.
|
|
23
|
+
|
|
24
|
+
.. versionadded:: 2.1
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
name = 'ParaSail'
|
|
28
|
+
aliases = ['parasail']
|
|
29
|
+
filenames = ['*.psi', '*.psl']
|
|
30
|
+
mimetypes = ['text/x-parasail']
|
|
31
|
+
|
|
32
|
+
flags = re.MULTILINE
|
|
33
|
+
|
|
34
|
+
tokens = {
|
|
35
|
+
'root': [
|
|
36
|
+
(r'[^\S\n]+', Text),
|
|
37
|
+
(r'//.*?\n', Comment.Single),
|
|
38
|
+
(r'\b(and|or|xor)=', Operator.Word),
|
|
39
|
+
(r'\b(and(\s+then)?|or(\s+else)?|xor|rem|mod|'
|
|
40
|
+
r'(is|not)\s+null)\b',
|
|
41
|
+
Operator.Word),
|
|
42
|
+
# Keywords
|
|
43
|
+
(r'\b(abs|abstract|all|block|class|concurrent|const|continue|'
|
|
44
|
+
r'each|end|exit|extends|exports|forward|func|global|implements|'
|
|
45
|
+
r'import|in|interface|is|lambda|locked|new|not|null|of|op|'
|
|
46
|
+
r'optional|private|queued|ref|return|reverse|separate|some|'
|
|
47
|
+
r'type|until|var|with|'
|
|
48
|
+
# Control flow
|
|
49
|
+
r'if|then|else|elsif|case|for|while|loop)\b',
|
|
50
|
+
Keyword.Reserved),
|
|
51
|
+
(r'(abstract\s+)?(interface|class|op|func|type)',
|
|
52
|
+
Keyword.Declaration),
|
|
53
|
+
# Literals
|
|
54
|
+
(r'"[^"]*"', String),
|
|
55
|
+
(r'\\[\'ntrf"0]', String.Escape),
|
|
56
|
+
(r'#[a-zA-Z]\w*', Literal), # Enumeration
|
|
57
|
+
include('numbers'),
|
|
58
|
+
(r"'[^']'", String.Char),
|
|
59
|
+
(r'[a-zA-Z]\w*', Name),
|
|
60
|
+
# Operators and Punctuation
|
|
61
|
+
(r'(<==|==>|<=>|\*\*=|<\|=|<<=|>>=|==|!=|=\?|<=|>=|'
|
|
62
|
+
r'\*\*|<<|>>|=>|:=|\+=|-=|\*=|\|=|\||/=|\+|-|\*|/|'
|
|
63
|
+
r'\.\.|<\.\.|\.\.<|<\.\.<)',
|
|
64
|
+
Operator),
|
|
65
|
+
(r'(<|>|\[|\]|\(|\)|\||:|;|,|.|\{|\}|->)',
|
|
66
|
+
Punctuation),
|
|
67
|
+
(r'\n+', Text),
|
|
68
|
+
],
|
|
69
|
+
'numbers': [
|
|
70
|
+
(r'\d[0-9_]*#[0-9a-fA-F][0-9a-fA-F_]*#', Number.Hex), # any base
|
|
71
|
+
(r'0[xX][0-9a-fA-F][0-9a-fA-F_]*', Number.Hex), # C-like hex
|
|
72
|
+
(r'0[bB][01][01_]*', Number.Bin), # C-like bin
|
|
73
|
+
(r'\d[0-9_]*\.\d[0-9_]*[eE][+-]\d[0-9_]*', # float exp
|
|
74
|
+
Number.Float),
|
|
75
|
+
(r'\d[0-9_]*\.\d[0-9_]*', Number.Float), # float
|
|
76
|
+
(r'\d[0-9_]*', Number.Integer), # integer
|
|
77
|
+
],
|
|
78
|
+
}
|
|
@@ -0,0 +1,799 @@
|
|
|
1
|
+
"""
|
|
2
|
+
pygments.lexers.parsers
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
|
+
|
|
5
|
+
Lexers for parser generators.
|
|
6
|
+
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
8
|
+
:license: BSD, see LICENSE for details.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import re
|
|
12
|
+
|
|
13
|
+
from pygments.lexer import RegexLexer, DelegatingLexer, \
|
|
14
|
+
include, bygroups, using
|
|
15
|
+
from pygments.token import Punctuation, Other, Text, Comment, Operator, \
|
|
16
|
+
Keyword, Name, String, Number, Whitespace
|
|
17
|
+
from pygments.lexers.jvm import JavaLexer
|
|
18
|
+
from pygments.lexers.c_cpp import CLexer, CppLexer
|
|
19
|
+
from pygments.lexers.objective import ObjectiveCLexer
|
|
20
|
+
from pygments.lexers.d import DLexer
|
|
21
|
+
from pygments.lexers.dotnet import CSharpLexer
|
|
22
|
+
from pygments.lexers.ruby import RubyLexer
|
|
23
|
+
from pygments.lexers.python import PythonLexer
|
|
24
|
+
from pygments.lexers.perl import PerlLexer
|
|
25
|
+
|
|
26
|
+
__all__ = ['RagelLexer', 'RagelEmbeddedLexer', 'RagelCLexer', 'RagelDLexer',
|
|
27
|
+
'RagelCppLexer', 'RagelObjectiveCLexer', 'RagelRubyLexer',
|
|
28
|
+
'RagelJavaLexer', 'AntlrLexer', 'AntlrPythonLexer',
|
|
29
|
+
'AntlrPerlLexer', 'AntlrRubyLexer', 'AntlrCppLexer',
|
|
30
|
+
'AntlrCSharpLexer', 'AntlrObjectiveCLexer',
|
|
31
|
+
'AntlrJavaLexer', 'AntlrActionScriptLexer',
|
|
32
|
+
'TreetopLexer', 'EbnfLexer']
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class RagelLexer(RegexLexer):
|
|
36
|
+
"""
|
|
37
|
+
A pure `Ragel <http://www.complang.org/ragel/>`_ lexer. Use this for
|
|
38
|
+
fragments of Ragel. For ``.rl`` files, use RagelEmbeddedLexer instead
|
|
39
|
+
(or one of the language-specific subclasses).
|
|
40
|
+
|
|
41
|
+
.. versionadded:: 1.1
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
name = 'Ragel'
|
|
45
|
+
aliases = ['ragel']
|
|
46
|
+
filenames = []
|
|
47
|
+
|
|
48
|
+
tokens = {
|
|
49
|
+
'whitespace': [
|
|
50
|
+
(r'\s+', Whitespace)
|
|
51
|
+
],
|
|
52
|
+
'comments': [
|
|
53
|
+
(r'\#.*$', Comment),
|
|
54
|
+
],
|
|
55
|
+
'keywords': [
|
|
56
|
+
(r'(access|action|alphtype)\b', Keyword),
|
|
57
|
+
(r'(getkey|write|machine|include)\b', Keyword),
|
|
58
|
+
(r'(any|ascii|extend|alpha|digit|alnum|lower|upper)\b', Keyword),
|
|
59
|
+
(r'(xdigit|cntrl|graph|print|punct|space|zlen|empty)\b', Keyword)
|
|
60
|
+
],
|
|
61
|
+
'numbers': [
|
|
62
|
+
(r'0x[0-9A-Fa-f]+', Number.Hex),
|
|
63
|
+
(r'[+-]?[0-9]+', Number.Integer),
|
|
64
|
+
],
|
|
65
|
+
'literals': [
|
|
66
|
+
(r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
|
|
67
|
+
(r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
|
|
68
|
+
(r'\[(\\\\|\\[^\\]|[^\\\]])*\]', String), # square bracket literals
|
|
69
|
+
(r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/', String.Regex), # regular expressions
|
|
70
|
+
],
|
|
71
|
+
'identifiers': [
|
|
72
|
+
(r'[a-zA-Z_]\w*', Name.Variable),
|
|
73
|
+
],
|
|
74
|
+
'operators': [
|
|
75
|
+
(r',', Operator), # Join
|
|
76
|
+
(r'\||&|--?', Operator), # Union, Intersection and Subtraction
|
|
77
|
+
(r'\.|<:|:>>?', Operator), # Concatention
|
|
78
|
+
(r':', Operator), # Label
|
|
79
|
+
(r'->', Operator), # Epsilon Transition
|
|
80
|
+
(r'(>|\$|%|<|@|<>)(/|eof\b)', Operator), # EOF Actions
|
|
81
|
+
(r'(>|\$|%|<|@|<>)(!|err\b)', Operator), # Global Error Actions
|
|
82
|
+
(r'(>|\$|%|<|@|<>)(\^|lerr\b)', Operator), # Local Error Actions
|
|
83
|
+
(r'(>|\$|%|<|@|<>)(~|to\b)', Operator), # To-State Actions
|
|
84
|
+
(r'(>|\$|%|<|@|<>)(\*|from\b)', Operator), # From-State Actions
|
|
85
|
+
(r'>|@|\$|%', Operator), # Transition Actions and Priorities
|
|
86
|
+
(r'\*|\?|\+|\{[0-9]*,[0-9]*\}', Operator), # Repetition
|
|
87
|
+
(r'!|\^', Operator), # Negation
|
|
88
|
+
(r'\(|\)', Operator), # Grouping
|
|
89
|
+
],
|
|
90
|
+
'root': [
|
|
91
|
+
include('literals'),
|
|
92
|
+
include('whitespace'),
|
|
93
|
+
include('comments'),
|
|
94
|
+
include('keywords'),
|
|
95
|
+
include('numbers'),
|
|
96
|
+
include('identifiers'),
|
|
97
|
+
include('operators'),
|
|
98
|
+
(r'\{', Punctuation, 'host'),
|
|
99
|
+
(r'=', Operator),
|
|
100
|
+
(r';', Punctuation),
|
|
101
|
+
],
|
|
102
|
+
'host': [
|
|
103
|
+
(r'(' + r'|'.join(( # keep host code in largest possible chunks
|
|
104
|
+
r'[^{}\'"/#]+', # exclude unsafe characters
|
|
105
|
+
r'[^\\]\\[{}]', # allow escaped { or }
|
|
106
|
+
|
|
107
|
+
# strings and comments may safely contain unsafe characters
|
|
108
|
+
r'"(\\\\|\\[^\\]|[^"\\])*"',
|
|
109
|
+
r"'(\\\\|\\[^\\]|[^'\\])*'",
|
|
110
|
+
r'//.*$\n?', # single line comment
|
|
111
|
+
r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
|
|
112
|
+
r'\#.*$\n?', # ruby comment
|
|
113
|
+
|
|
114
|
+
# regular expression: There's no reason for it to start
|
|
115
|
+
# with a * and this stops confusion with comments.
|
|
116
|
+
r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
|
|
117
|
+
|
|
118
|
+
# / is safe now that we've handled regex and javadoc comments
|
|
119
|
+
r'/',
|
|
120
|
+
)) + r')+', Other),
|
|
121
|
+
|
|
122
|
+
(r'\{', Punctuation, '#push'),
|
|
123
|
+
(r'\}', Punctuation, '#pop'),
|
|
124
|
+
],
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class RagelEmbeddedLexer(RegexLexer):
|
|
129
|
+
"""
|
|
130
|
+
A lexer for `Ragel`_ embedded in a host language file.
|
|
131
|
+
|
|
132
|
+
This will only highlight Ragel statements. If you want host language
|
|
133
|
+
highlighting then call the language-specific Ragel lexer.
|
|
134
|
+
|
|
135
|
+
.. versionadded:: 1.1
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
name = 'Embedded Ragel'
|
|
139
|
+
aliases = ['ragel-em']
|
|
140
|
+
filenames = ['*.rl']
|
|
141
|
+
|
|
142
|
+
tokens = {
|
|
143
|
+
'root': [
|
|
144
|
+
(r'(' + r'|'.join(( # keep host code in largest possible chunks
|
|
145
|
+
r'[^%\'"/#]+', # exclude unsafe characters
|
|
146
|
+
r'%(?=[^%]|$)', # a single % sign is okay, just not 2 of them
|
|
147
|
+
|
|
148
|
+
# strings and comments may safely contain unsafe characters
|
|
149
|
+
r'"(\\\\|\\[^\\]|[^"\\])*"',
|
|
150
|
+
r"'(\\\\|\\[^\\]|[^'\\])*'",
|
|
151
|
+
r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
|
|
152
|
+
r'//.*$\n?', # single line comment
|
|
153
|
+
r'\#.*$\n?', # ruby/ragel comment
|
|
154
|
+
r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/', # regular expression
|
|
155
|
+
|
|
156
|
+
# / is safe now that we've handled regex and javadoc comments
|
|
157
|
+
r'/',
|
|
158
|
+
)) + r')+', Other),
|
|
159
|
+
|
|
160
|
+
# Single Line FSM.
|
|
161
|
+
# Please don't put a quoted newline in a single line FSM.
|
|
162
|
+
# That's just mean. It will break this.
|
|
163
|
+
(r'(%%)(?![{%])(.*)($|;)(\n?)', bygroups(Punctuation,
|
|
164
|
+
using(RagelLexer),
|
|
165
|
+
Punctuation, Text)),
|
|
166
|
+
|
|
167
|
+
# Multi Line FSM.
|
|
168
|
+
(r'(%%%%|%%)\{', Punctuation, 'multi-line-fsm'),
|
|
169
|
+
],
|
|
170
|
+
'multi-line-fsm': [
|
|
171
|
+
(r'(' + r'|'.join(( # keep ragel code in largest possible chunks.
|
|
172
|
+
r'(' + r'|'.join((
|
|
173
|
+
r'[^}\'"\[/#]', # exclude unsafe characters
|
|
174
|
+
r'\}(?=[^%]|$)', # } is okay as long as it's not followed by %
|
|
175
|
+
r'\}%(?=[^%]|$)', # ...well, one %'s okay, just not two...
|
|
176
|
+
r'[^\\]\\[{}]', # ...and } is okay if it's escaped
|
|
177
|
+
|
|
178
|
+
# allow / if it's preceded with one of these symbols
|
|
179
|
+
# (ragel EOF actions)
|
|
180
|
+
r'(>|\$|%|<|@|<>)/',
|
|
181
|
+
|
|
182
|
+
# specifically allow regex followed immediately by *
|
|
183
|
+
# so it doesn't get mistaken for a comment
|
|
184
|
+
r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/\*',
|
|
185
|
+
|
|
186
|
+
# allow / as long as it's not followed by another / or by a *
|
|
187
|
+
r'/(?=[^/*]|$)',
|
|
188
|
+
|
|
189
|
+
# We want to match as many of these as we can in one block.
|
|
190
|
+
# Not sure if we need the + sign here,
|
|
191
|
+
# does it help performance?
|
|
192
|
+
)) + r')+',
|
|
193
|
+
|
|
194
|
+
# strings and comments may safely contain unsafe characters
|
|
195
|
+
r'"(\\\\|\\[^\\]|[^"\\])*"',
|
|
196
|
+
r"'(\\\\|\\[^\\]|[^'\\])*'",
|
|
197
|
+
r"\[(\\\\|\\[^\\]|[^\]\\])*\]", # square bracket literal
|
|
198
|
+
r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
|
|
199
|
+
r'//.*$\n?', # single line comment
|
|
200
|
+
r'\#.*$\n?', # ruby/ragel comment
|
|
201
|
+
)) + r')+', using(RagelLexer)),
|
|
202
|
+
|
|
203
|
+
(r'\}%%', Punctuation, '#pop'),
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
def analyse_text(text):
|
|
208
|
+
return '@LANG: indep' in text
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class RagelRubyLexer(DelegatingLexer):
|
|
212
|
+
"""
|
|
213
|
+
A lexer for `Ragel`_ in a Ruby host file.
|
|
214
|
+
|
|
215
|
+
.. versionadded:: 1.1
|
|
216
|
+
"""
|
|
217
|
+
|
|
218
|
+
name = 'Ragel in Ruby Host'
|
|
219
|
+
aliases = ['ragel-ruby', 'ragel-rb']
|
|
220
|
+
filenames = ['*.rl']
|
|
221
|
+
|
|
222
|
+
def __init__(self, **options):
|
|
223
|
+
super().__init__(RubyLexer, RagelEmbeddedLexer, **options)
|
|
224
|
+
|
|
225
|
+
def analyse_text(text):
|
|
226
|
+
return '@LANG: ruby' in text
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class RagelCLexer(DelegatingLexer):
|
|
230
|
+
"""
|
|
231
|
+
A lexer for `Ragel`_ in a C host file.
|
|
232
|
+
|
|
233
|
+
.. versionadded:: 1.1
|
|
234
|
+
"""
|
|
235
|
+
|
|
236
|
+
name = 'Ragel in C Host'
|
|
237
|
+
aliases = ['ragel-c']
|
|
238
|
+
filenames = ['*.rl']
|
|
239
|
+
|
|
240
|
+
def __init__(self, **options):
|
|
241
|
+
super().__init__(CLexer, RagelEmbeddedLexer, **options)
|
|
242
|
+
|
|
243
|
+
def analyse_text(text):
|
|
244
|
+
return '@LANG: c' in text
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
class RagelDLexer(DelegatingLexer):
|
|
248
|
+
"""
|
|
249
|
+
A lexer for `Ragel`_ in a D host file.
|
|
250
|
+
|
|
251
|
+
.. versionadded:: 1.1
|
|
252
|
+
"""
|
|
253
|
+
|
|
254
|
+
name = 'Ragel in D Host'
|
|
255
|
+
aliases = ['ragel-d']
|
|
256
|
+
filenames = ['*.rl']
|
|
257
|
+
|
|
258
|
+
def __init__(self, **options):
|
|
259
|
+
super().__init__(DLexer, RagelEmbeddedLexer, **options)
|
|
260
|
+
|
|
261
|
+
def analyse_text(text):
|
|
262
|
+
return '@LANG: d' in text
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
class RagelCppLexer(DelegatingLexer):
|
|
266
|
+
"""
|
|
267
|
+
A lexer for `Ragel`_ in a CPP host file.
|
|
268
|
+
|
|
269
|
+
.. versionadded:: 1.1
|
|
270
|
+
"""
|
|
271
|
+
|
|
272
|
+
name = 'Ragel in CPP Host'
|
|
273
|
+
aliases = ['ragel-cpp']
|
|
274
|
+
filenames = ['*.rl']
|
|
275
|
+
|
|
276
|
+
def __init__(self, **options):
|
|
277
|
+
super().__init__(CppLexer, RagelEmbeddedLexer, **options)
|
|
278
|
+
|
|
279
|
+
def analyse_text(text):
|
|
280
|
+
return '@LANG: c++' in text
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
class RagelObjectiveCLexer(DelegatingLexer):
|
|
284
|
+
"""
|
|
285
|
+
A lexer for `Ragel`_ in an Objective C host file.
|
|
286
|
+
|
|
287
|
+
.. versionadded:: 1.1
|
|
288
|
+
"""
|
|
289
|
+
|
|
290
|
+
name = 'Ragel in Objective C Host'
|
|
291
|
+
aliases = ['ragel-objc']
|
|
292
|
+
filenames = ['*.rl']
|
|
293
|
+
|
|
294
|
+
def __init__(self, **options):
|
|
295
|
+
super().__init__(ObjectiveCLexer, RagelEmbeddedLexer, **options)
|
|
296
|
+
|
|
297
|
+
def analyse_text(text):
|
|
298
|
+
return '@LANG: objc' in text
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
class RagelJavaLexer(DelegatingLexer):
|
|
302
|
+
"""
|
|
303
|
+
A lexer for `Ragel`_ in a Java host file.
|
|
304
|
+
|
|
305
|
+
.. versionadded:: 1.1
|
|
306
|
+
"""
|
|
307
|
+
|
|
308
|
+
name = 'Ragel in Java Host'
|
|
309
|
+
aliases = ['ragel-java']
|
|
310
|
+
filenames = ['*.rl']
|
|
311
|
+
|
|
312
|
+
def __init__(self, **options):
|
|
313
|
+
super().__init__(JavaLexer, RagelEmbeddedLexer, **options)
|
|
314
|
+
|
|
315
|
+
def analyse_text(text):
|
|
316
|
+
return '@LANG: java' in text
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
class AntlrLexer(RegexLexer):
|
|
320
|
+
"""
|
|
321
|
+
Generic `ANTLR`_ Lexer.
|
|
322
|
+
Should not be called directly, instead
|
|
323
|
+
use DelegatingLexer for your target language.
|
|
324
|
+
|
|
325
|
+
.. versionadded:: 1.1
|
|
326
|
+
|
|
327
|
+
.. _ANTLR: http://www.antlr.org/
|
|
328
|
+
"""
|
|
329
|
+
|
|
330
|
+
name = 'ANTLR'
|
|
331
|
+
aliases = ['antlr']
|
|
332
|
+
filenames = []
|
|
333
|
+
|
|
334
|
+
_id = r'[A-Za-z]\w*'
|
|
335
|
+
_TOKEN_REF = r'[A-Z]\w*'
|
|
336
|
+
_RULE_REF = r'[a-z]\w*'
|
|
337
|
+
_STRING_LITERAL = r'\'(?:\\\\|\\\'|[^\']*)\''
|
|
338
|
+
_INT = r'[0-9]+'
|
|
339
|
+
|
|
340
|
+
tokens = {
|
|
341
|
+
'whitespace': [
|
|
342
|
+
(r'\s+', Whitespace),
|
|
343
|
+
],
|
|
344
|
+
'comments': [
|
|
345
|
+
(r'//.*$', Comment),
|
|
346
|
+
(r'/\*(.|\n)*?\*/', Comment),
|
|
347
|
+
],
|
|
348
|
+
'root': [
|
|
349
|
+
include('whitespace'),
|
|
350
|
+
include('comments'),
|
|
351
|
+
|
|
352
|
+
(r'(lexer|parser|tree)?(\s*)(grammar\b)(\s*)(' + _id + ')(;)',
|
|
353
|
+
bygroups(Keyword, Whitespace, Keyword, Whitespace, Name.Class,
|
|
354
|
+
Punctuation)),
|
|
355
|
+
# optionsSpec
|
|
356
|
+
(r'options\b', Keyword, 'options'),
|
|
357
|
+
# tokensSpec
|
|
358
|
+
(r'tokens\b', Keyword, 'tokens'),
|
|
359
|
+
# attrScope
|
|
360
|
+
(r'(scope)(\s*)(' + _id + r')(\s*)(\{)',
|
|
361
|
+
bygroups(Keyword, Whitespace, Name.Variable, Whitespace,
|
|
362
|
+
Punctuation), 'action'),
|
|
363
|
+
# exception
|
|
364
|
+
(r'(catch|finally)\b', Keyword, 'exception'),
|
|
365
|
+
# action
|
|
366
|
+
(r'(@' + _id + r')(\s*)(::)?(\s*)(' + _id + r')(\s*)(\{)',
|
|
367
|
+
bygroups(Name.Label, Whitespace, Punctuation, Whitespace,
|
|
368
|
+
Name.Label, Whitespace, Punctuation), 'action'),
|
|
369
|
+
# rule
|
|
370
|
+
(r'((?:protected|private|public|fragment)\b)?(\s*)(' + _id + ')(!)?',
|
|
371
|
+
bygroups(Keyword, Whitespace, Name.Label, Punctuation),
|
|
372
|
+
('rule-alts', 'rule-prelims')),
|
|
373
|
+
],
|
|
374
|
+
'exception': [
|
|
375
|
+
(r'\n', Whitespace, '#pop'),
|
|
376
|
+
(r'\s', Whitespace),
|
|
377
|
+
include('comments'),
|
|
378
|
+
|
|
379
|
+
(r'\[', Punctuation, 'nested-arg-action'),
|
|
380
|
+
(r'\{', Punctuation, 'action'),
|
|
381
|
+
],
|
|
382
|
+
'rule-prelims': [
|
|
383
|
+
include('whitespace'),
|
|
384
|
+
include('comments'),
|
|
385
|
+
|
|
386
|
+
(r'returns\b', Keyword),
|
|
387
|
+
(r'\[', Punctuation, 'nested-arg-action'),
|
|
388
|
+
(r'\{', Punctuation, 'action'),
|
|
389
|
+
# throwsSpec
|
|
390
|
+
(r'(throws)(\s+)(' + _id + ')',
|
|
391
|
+
bygroups(Keyword, Whitespace, Name.Label)),
|
|
392
|
+
(r'(,)(\s*)(' + _id + ')',
|
|
393
|
+
bygroups(Punctuation, Whitespace, Name.Label)), # Additional throws
|
|
394
|
+
# optionsSpec
|
|
395
|
+
(r'options\b', Keyword, 'options'),
|
|
396
|
+
# ruleScopeSpec - scope followed by target language code or name of action
|
|
397
|
+
# TODO finish implementing other possibilities for scope
|
|
398
|
+
# L173 ANTLRv3.g from ANTLR book
|
|
399
|
+
(r'(scope)(\s+)(\{)', bygroups(Keyword, Whitespace, Punctuation),
|
|
400
|
+
'action'),
|
|
401
|
+
(r'(scope)(\s+)(' + _id + r')(\s*)(;)',
|
|
402
|
+
bygroups(Keyword, Whitespace, Name.Label, Whitespace, Punctuation)),
|
|
403
|
+
# ruleAction
|
|
404
|
+
(r'(@' + _id + r')(\s*)(\{)',
|
|
405
|
+
bygroups(Name.Label, Whitespace, Punctuation), 'action'),
|
|
406
|
+
# finished prelims, go to rule alts!
|
|
407
|
+
(r':', Punctuation, '#pop')
|
|
408
|
+
],
|
|
409
|
+
'rule-alts': [
|
|
410
|
+
include('whitespace'),
|
|
411
|
+
include('comments'),
|
|
412
|
+
|
|
413
|
+
# These might need to go in a separate 'block' state triggered by (
|
|
414
|
+
(r'options\b', Keyword, 'options'),
|
|
415
|
+
(r':', Punctuation),
|
|
416
|
+
|
|
417
|
+
# literals
|
|
418
|
+
(r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
|
|
419
|
+
(r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
|
|
420
|
+
(r'<<([^>]|>[^>])>>', String),
|
|
421
|
+
# identifiers
|
|
422
|
+
# Tokens start with capital letter.
|
|
423
|
+
(r'\$?[A-Z_]\w*', Name.Constant),
|
|
424
|
+
# Rules start with small letter.
|
|
425
|
+
(r'\$?[a-z_]\w*', Name.Variable),
|
|
426
|
+
# operators
|
|
427
|
+
(r'(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)', Operator),
|
|
428
|
+
(r',', Punctuation),
|
|
429
|
+
(r'\[', Punctuation, 'nested-arg-action'),
|
|
430
|
+
(r'\{', Punctuation, 'action'),
|
|
431
|
+
(r';', Punctuation, '#pop')
|
|
432
|
+
],
|
|
433
|
+
'tokens': [
|
|
434
|
+
include('whitespace'),
|
|
435
|
+
include('comments'),
|
|
436
|
+
(r'\{', Punctuation),
|
|
437
|
+
(r'(' + _TOKEN_REF + r')(\s*)(=)?(\s*)(' + _STRING_LITERAL
|
|
438
|
+
+ r')?(\s*)(;)',
|
|
439
|
+
bygroups(Name.Label, Whitespace, Punctuation, Whitespace,
|
|
440
|
+
String, Whitespace, Punctuation)),
|
|
441
|
+
(r'\}', Punctuation, '#pop'),
|
|
442
|
+
],
|
|
443
|
+
'options': [
|
|
444
|
+
include('whitespace'),
|
|
445
|
+
include('comments'),
|
|
446
|
+
(r'\{', Punctuation),
|
|
447
|
+
(r'(' + _id + r')(\s*)(=)(\s*)(' +
|
|
448
|
+
'|'.join((_id, _STRING_LITERAL, _INT, r'\*')) + r')(\s*)(;)',
|
|
449
|
+
bygroups(Name.Variable, Whitespace, Punctuation, Whitespace,
|
|
450
|
+
Text, Whitespace, Punctuation)),
|
|
451
|
+
(r'\}', Punctuation, '#pop'),
|
|
452
|
+
],
|
|
453
|
+
'action': [
|
|
454
|
+
(r'(' + r'|'.join(( # keep host code in largest possible chunks
|
|
455
|
+
r'[^${}\'"/\\]+', # exclude unsafe characters
|
|
456
|
+
|
|
457
|
+
# strings and comments may safely contain unsafe characters
|
|
458
|
+
r'"(\\\\|\\[^\\]|[^"\\])*"',
|
|
459
|
+
r"'(\\\\|\\[^\\]|[^'\\])*'",
|
|
460
|
+
r'//.*$\n?', # single line comment
|
|
461
|
+
r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
|
|
462
|
+
|
|
463
|
+
# regular expression: There's no reason for it to start
|
|
464
|
+
# with a * and this stops confusion with comments.
|
|
465
|
+
r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
|
|
466
|
+
|
|
467
|
+
# backslashes are okay, as long as we are not backslashing a %
|
|
468
|
+
r'\\(?!%)',
|
|
469
|
+
|
|
470
|
+
# Now that we've handled regex and javadoc comments
|
|
471
|
+
# it's safe to let / through.
|
|
472
|
+
r'/',
|
|
473
|
+
)) + r')+', Other),
|
|
474
|
+
(r'(\\)(%)', bygroups(Punctuation, Other)),
|
|
475
|
+
(r'(\$[a-zA-Z]+)(\.?)(text|value)?',
|
|
476
|
+
bygroups(Name.Variable, Punctuation, Name.Property)),
|
|
477
|
+
(r'\{', Punctuation, '#push'),
|
|
478
|
+
(r'\}', Punctuation, '#pop'),
|
|
479
|
+
],
|
|
480
|
+
'nested-arg-action': [
|
|
481
|
+
(r'(' + r'|'.join(( # keep host code in largest possible chunks.
|
|
482
|
+
r'[^$\[\]\'"/]+', # exclude unsafe characters
|
|
483
|
+
|
|
484
|
+
# strings and comments may safely contain unsafe characters
|
|
485
|
+
r'"(\\\\|\\[^\\]|[^"\\])*"',
|
|
486
|
+
r"'(\\\\|\\[^\\]|[^'\\])*'",
|
|
487
|
+
r'//.*$\n?', # single line comment
|
|
488
|
+
r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
|
|
489
|
+
|
|
490
|
+
# regular expression: There's no reason for it to start
|
|
491
|
+
# with a * and this stops confusion with comments.
|
|
492
|
+
r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
|
|
493
|
+
|
|
494
|
+
# Now that we've handled regex and javadoc comments
|
|
495
|
+
# it's safe to let / through.
|
|
496
|
+
r'/',
|
|
497
|
+
)) + r')+', Other),
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
(r'\[', Punctuation, '#push'),
|
|
501
|
+
(r'\]', Punctuation, '#pop'),
|
|
502
|
+
(r'(\$[a-zA-Z]+)(\.?)(text|value)?',
|
|
503
|
+
bygroups(Name.Variable, Punctuation, Name.Property)),
|
|
504
|
+
(r'(\\\\|\\\]|\\\[|[^\[\]])+', Other),
|
|
505
|
+
]
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
def analyse_text(text):
|
|
509
|
+
return re.search(r'^\s*grammar\s+[a-zA-Z0-9]+\s*;', text, re.M)
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
# http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets
|
|
513
|
+
|
|
514
|
+
class AntlrCppLexer(DelegatingLexer):
|
|
515
|
+
"""
|
|
516
|
+
`ANTLR`_ with CPP Target
|
|
517
|
+
|
|
518
|
+
.. versionadded:: 1.1
|
|
519
|
+
"""
|
|
520
|
+
|
|
521
|
+
name = 'ANTLR With CPP Target'
|
|
522
|
+
aliases = ['antlr-cpp']
|
|
523
|
+
filenames = ['*.G', '*.g']
|
|
524
|
+
|
|
525
|
+
def __init__(self, **options):
|
|
526
|
+
super().__init__(CppLexer, AntlrLexer, **options)
|
|
527
|
+
|
|
528
|
+
def analyse_text(text):
|
|
529
|
+
return AntlrLexer.analyse_text(text) and \
|
|
530
|
+
re.search(r'^\s*language\s*=\s*C\s*;', text, re.M)
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
class AntlrObjectiveCLexer(DelegatingLexer):
|
|
534
|
+
"""
|
|
535
|
+
`ANTLR`_ with Objective-C Target
|
|
536
|
+
|
|
537
|
+
.. versionadded:: 1.1
|
|
538
|
+
"""
|
|
539
|
+
|
|
540
|
+
name = 'ANTLR With ObjectiveC Target'
|
|
541
|
+
aliases = ['antlr-objc']
|
|
542
|
+
filenames = ['*.G', '*.g']
|
|
543
|
+
|
|
544
|
+
def __init__(self, **options):
|
|
545
|
+
super().__init__(ObjectiveCLexer, AntlrLexer, **options)
|
|
546
|
+
|
|
547
|
+
def analyse_text(text):
|
|
548
|
+
return AntlrLexer.analyse_text(text) and \
|
|
549
|
+
re.search(r'^\s*language\s*=\s*ObjC\s*;', text)
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
class AntlrCSharpLexer(DelegatingLexer):
|
|
553
|
+
"""
|
|
554
|
+
`ANTLR`_ with C# Target
|
|
555
|
+
|
|
556
|
+
.. versionadded:: 1.1
|
|
557
|
+
"""
|
|
558
|
+
|
|
559
|
+
name = 'ANTLR With C# Target'
|
|
560
|
+
aliases = ['antlr-csharp', 'antlr-c#']
|
|
561
|
+
filenames = ['*.G', '*.g']
|
|
562
|
+
|
|
563
|
+
def __init__(self, **options):
|
|
564
|
+
super().__init__(CSharpLexer, AntlrLexer, **options)
|
|
565
|
+
|
|
566
|
+
def analyse_text(text):
|
|
567
|
+
return AntlrLexer.analyse_text(text) and \
|
|
568
|
+
re.search(r'^\s*language\s*=\s*CSharp2\s*;', text, re.M)
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
class AntlrPythonLexer(DelegatingLexer):
|
|
572
|
+
"""
|
|
573
|
+
`ANTLR`_ with Python Target
|
|
574
|
+
|
|
575
|
+
.. versionadded:: 1.1
|
|
576
|
+
"""
|
|
577
|
+
|
|
578
|
+
name = 'ANTLR With Python Target'
|
|
579
|
+
aliases = ['antlr-python']
|
|
580
|
+
filenames = ['*.G', '*.g']
|
|
581
|
+
|
|
582
|
+
def __init__(self, **options):
|
|
583
|
+
super().__init__(PythonLexer, AntlrLexer, **options)
|
|
584
|
+
|
|
585
|
+
def analyse_text(text):
|
|
586
|
+
return AntlrLexer.analyse_text(text) and \
|
|
587
|
+
re.search(r'^\s*language\s*=\s*Python\s*;', text, re.M)
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
class AntlrJavaLexer(DelegatingLexer):
|
|
591
|
+
"""
|
|
592
|
+
`ANTLR`_ with Java Target
|
|
593
|
+
|
|
594
|
+
.. versionadded:: 1.
|
|
595
|
+
"""
|
|
596
|
+
|
|
597
|
+
name = 'ANTLR With Java Target'
|
|
598
|
+
aliases = ['antlr-java']
|
|
599
|
+
filenames = ['*.G', '*.g']
|
|
600
|
+
|
|
601
|
+
def __init__(self, **options):
|
|
602
|
+
super().__init__(JavaLexer, AntlrLexer, **options)
|
|
603
|
+
|
|
604
|
+
def analyse_text(text):
|
|
605
|
+
# Antlr language is Java by default
|
|
606
|
+
return AntlrLexer.analyse_text(text) and 0.9
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
class AntlrRubyLexer(DelegatingLexer):
|
|
610
|
+
"""
|
|
611
|
+
`ANTLR`_ with Ruby Target
|
|
612
|
+
|
|
613
|
+
.. versionadded:: 1.1
|
|
614
|
+
"""
|
|
615
|
+
|
|
616
|
+
name = 'ANTLR With Ruby Target'
|
|
617
|
+
aliases = ['antlr-ruby', 'antlr-rb']
|
|
618
|
+
filenames = ['*.G', '*.g']
|
|
619
|
+
|
|
620
|
+
def __init__(self, **options):
|
|
621
|
+
super().__init__(RubyLexer, AntlrLexer, **options)
|
|
622
|
+
|
|
623
|
+
def analyse_text(text):
|
|
624
|
+
return AntlrLexer.analyse_text(text) and \
|
|
625
|
+
re.search(r'^\s*language\s*=\s*Ruby\s*;', text, re.M)
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
class AntlrPerlLexer(DelegatingLexer):
|
|
629
|
+
"""
|
|
630
|
+
`ANTLR`_ with Perl Target
|
|
631
|
+
|
|
632
|
+
.. versionadded:: 1.1
|
|
633
|
+
"""
|
|
634
|
+
|
|
635
|
+
name = 'ANTLR With Perl Target'
|
|
636
|
+
aliases = ['antlr-perl']
|
|
637
|
+
filenames = ['*.G', '*.g']
|
|
638
|
+
|
|
639
|
+
def __init__(self, **options):
|
|
640
|
+
super().__init__(PerlLexer, AntlrLexer, **options)
|
|
641
|
+
|
|
642
|
+
def analyse_text(text):
|
|
643
|
+
return AntlrLexer.analyse_text(text) and \
|
|
644
|
+
re.search(r'^\s*language\s*=\s*Perl5\s*;', text, re.M)
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
class AntlrActionScriptLexer(DelegatingLexer):
|
|
648
|
+
"""
|
|
649
|
+
`ANTLR`_ with ActionScript Target
|
|
650
|
+
|
|
651
|
+
.. versionadded:: 1.1
|
|
652
|
+
"""
|
|
653
|
+
|
|
654
|
+
name = 'ANTLR With ActionScript Target'
|
|
655
|
+
aliases = ['antlr-as', 'antlr-actionscript']
|
|
656
|
+
filenames = ['*.G', '*.g']
|
|
657
|
+
|
|
658
|
+
def __init__(self, **options):
|
|
659
|
+
from pygments.lexers.actionscript import ActionScriptLexer
|
|
660
|
+
super().__init__(ActionScriptLexer, AntlrLexer, **options)
|
|
661
|
+
|
|
662
|
+
def analyse_text(text):
|
|
663
|
+
return AntlrLexer.analyse_text(text) and \
|
|
664
|
+
re.search(r'^\s*language\s*=\s*ActionScript\s*;', text, re.M)
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
class TreetopBaseLexer(RegexLexer):
|
|
668
|
+
"""
|
|
669
|
+
A base lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.
|
|
670
|
+
Not for direct use; use TreetopLexer instead.
|
|
671
|
+
|
|
672
|
+
.. versionadded:: 1.6
|
|
673
|
+
"""
|
|
674
|
+
|
|
675
|
+
tokens = {
|
|
676
|
+
'root': [
|
|
677
|
+
include('space'),
|
|
678
|
+
(r'require[ \t]+[^\n\r]+[\n\r]', Other),
|
|
679
|
+
(r'module\b', Keyword.Namespace, 'module'),
|
|
680
|
+
(r'grammar\b', Keyword, 'grammar'),
|
|
681
|
+
],
|
|
682
|
+
'module': [
|
|
683
|
+
include('space'),
|
|
684
|
+
include('end'),
|
|
685
|
+
(r'module\b', Keyword, '#push'),
|
|
686
|
+
(r'grammar\b', Keyword, 'grammar'),
|
|
687
|
+
(r'[A-Z]\w*(?:::[A-Z]\w*)*', Name.Namespace),
|
|
688
|
+
],
|
|
689
|
+
'grammar': [
|
|
690
|
+
include('space'),
|
|
691
|
+
include('end'),
|
|
692
|
+
(r'rule\b', Keyword, 'rule'),
|
|
693
|
+
(r'include\b', Keyword, 'include'),
|
|
694
|
+
(r'[A-Z]\w*', Name),
|
|
695
|
+
],
|
|
696
|
+
'include': [
|
|
697
|
+
include('space'),
|
|
698
|
+
(r'[A-Z]\w*(?:::[A-Z]\w*)*', Name.Class, '#pop'),
|
|
699
|
+
],
|
|
700
|
+
'rule': [
|
|
701
|
+
include('space'),
|
|
702
|
+
include('end'),
|
|
703
|
+
(r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
|
|
704
|
+
(r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
|
|
705
|
+
(r'([A-Za-z_]\w*)(:)', bygroups(Name.Label, Punctuation)),
|
|
706
|
+
(r'[A-Za-z_]\w*', Name),
|
|
707
|
+
(r'[()]', Punctuation),
|
|
708
|
+
(r'[?+*/&!~]', Operator),
|
|
709
|
+
(r'\[(?:\\.|\[:\^?[a-z]+:\]|[^\\\]])+\]', String.Regex),
|
|
710
|
+
(r'([0-9]*)(\.\.)([0-9]*)',
|
|
711
|
+
bygroups(Number.Integer, Operator, Number.Integer)),
|
|
712
|
+
(r'(<)([^>]+)(>)', bygroups(Punctuation, Name.Class, Punctuation)),
|
|
713
|
+
(r'\{', Punctuation, 'inline_module'),
|
|
714
|
+
(r'\.', String.Regex),
|
|
715
|
+
],
|
|
716
|
+
'inline_module': [
|
|
717
|
+
(r'\{', Other, 'ruby'),
|
|
718
|
+
(r'\}', Punctuation, '#pop'),
|
|
719
|
+
(r'[^{}]+', Other),
|
|
720
|
+
],
|
|
721
|
+
'ruby': [
|
|
722
|
+
(r'\{', Other, '#push'),
|
|
723
|
+
(r'\}', Other, '#pop'),
|
|
724
|
+
(r'[^{}]+', Other),
|
|
725
|
+
],
|
|
726
|
+
'space': [
|
|
727
|
+
(r'[ \t\n\r]+', Whitespace),
|
|
728
|
+
(r'#[^\n]*', Comment.Single),
|
|
729
|
+
],
|
|
730
|
+
'end': [
|
|
731
|
+
(r'end\b', Keyword, '#pop'),
|
|
732
|
+
],
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
class TreetopLexer(DelegatingLexer):
|
|
737
|
+
"""
|
|
738
|
+
A lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.
|
|
739
|
+
|
|
740
|
+
.. versionadded:: 1.6
|
|
741
|
+
"""
|
|
742
|
+
|
|
743
|
+
name = 'Treetop'
|
|
744
|
+
aliases = ['treetop']
|
|
745
|
+
filenames = ['*.treetop', '*.tt']
|
|
746
|
+
|
|
747
|
+
def __init__(self, **options):
|
|
748
|
+
super().__init__(RubyLexer, TreetopBaseLexer, **options)
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
class EbnfLexer(RegexLexer):
|
|
752
|
+
"""
|
|
753
|
+
Lexer for `ISO/IEC 14977 EBNF
|
|
754
|
+
<http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form>`_
|
|
755
|
+
grammars.
|
|
756
|
+
|
|
757
|
+
.. versionadded:: 2.0
|
|
758
|
+
"""
|
|
759
|
+
|
|
760
|
+
name = 'EBNF'
|
|
761
|
+
aliases = ['ebnf']
|
|
762
|
+
filenames = ['*.ebnf']
|
|
763
|
+
mimetypes = ['text/x-ebnf']
|
|
764
|
+
|
|
765
|
+
tokens = {
|
|
766
|
+
'root': [
|
|
767
|
+
include('whitespace'),
|
|
768
|
+
include('comment_start'),
|
|
769
|
+
include('identifier'),
|
|
770
|
+
(r'=', Operator, 'production'),
|
|
771
|
+
],
|
|
772
|
+
'production': [
|
|
773
|
+
include('whitespace'),
|
|
774
|
+
include('comment_start'),
|
|
775
|
+
include('identifier'),
|
|
776
|
+
(r'"[^"]*"', String.Double),
|
|
777
|
+
(r"'[^']*'", String.Single),
|
|
778
|
+
(r'(\?[^?]*\?)', Name.Entity),
|
|
779
|
+
(r'[\[\]{}(),|]', Punctuation),
|
|
780
|
+
(r'-', Operator),
|
|
781
|
+
(r';', Punctuation, '#pop'),
|
|
782
|
+
(r'\.', Punctuation, '#pop'),
|
|
783
|
+
],
|
|
784
|
+
'whitespace': [
|
|
785
|
+
(r'\s+', Text),
|
|
786
|
+
],
|
|
787
|
+
'comment_start': [
|
|
788
|
+
(r'\(\*', Comment.Multiline, 'comment'),
|
|
789
|
+
],
|
|
790
|
+
'comment': [
|
|
791
|
+
(r'[^*)]', Comment.Multiline),
|
|
792
|
+
include('comment_start'),
|
|
793
|
+
(r'\*\)', Comment.Multiline, '#pop'),
|
|
794
|
+
(r'[*)]', Comment.Multiline),
|
|
795
|
+
],
|
|
796
|
+
'identifier': [
|
|
797
|
+
(r'([a-zA-Z][\w \-]*)', Keyword),
|
|
798
|
+
],
|
|
799
|
+
}
|