rouge 3.17.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 +7 -0
- data/Gemfile +40 -0
- data/LICENSE +186 -0
- data/bin/rougify +18 -0
- data/lib/rouge.rb +93 -0
- data/lib/rouge/cli.rb +498 -0
- data/lib/rouge/demos/abap +6 -0
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/apache +21 -0
- data/lib/rouge/demos/apex +9 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/applescript +2 -0
- data/lib/rouge/demos/armasm +12 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/batchfile +3 -0
- data/lib/rouge/demos/bbcbasic +6 -0
- data/lib/rouge/demos/biml +38 -0
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/bsl +7 -0
- data/lib/rouge/demos/c +8 -0
- data/lib/rouge/demos/ceylon +7 -0
- data/lib/rouge/demos/cfscript +18 -0
- data/lib/rouge/demos/clean +6 -0
- data/lib/rouge/demos/clojure +5 -0
- data/lib/rouge/demos/cmake +7 -0
- data/lib/rouge/demos/cmhg +8 -0
- data/lib/rouge/demos/coffeescript +5 -0
- data/lib/rouge/demos/common_lisp +1 -0
- data/lib/rouge/demos/conf +4 -0
- data/lib/rouge/demos/console +6 -0
- data/lib/rouge/demos/coq +13 -0
- data/lib/rouge/demos/cpp +8 -0
- data/lib/rouge/demos/crystal +45 -0
- data/lib/rouge/demos/csharp +5 -0
- data/lib/rouge/demos/css +4 -0
- data/lib/rouge/demos/csvs +8 -0
- data/lib/rouge/demos/cuda +11 -0
- data/lib/rouge/demos/cython +6 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/dart +6 -0
- data/lib/rouge/demos/diff +7 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/docker +9 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/eex +1 -0
- data/lib/rouge/demos/eiffel +30 -0
- data/lib/rouge/demos/elixir +1 -0
- data/lib/rouge/demos/elm +4 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/erb +1 -0
- data/lib/rouge/demos/erlang +7 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/factor +5 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/fsharp +12 -0
- data/lib/rouge/demos/gdscript +18 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/gherkin +17 -0
- data/lib/rouge/demos/glsl +14 -0
- data/lib/rouge/demos/go +7 -0
- data/lib/rouge/demos/gradle +10 -0
- data/lib/rouge/demos/graphql +17 -0
- data/lib/rouge/demos/groovy +9 -0
- data/lib/rouge/demos/hack +5 -0
- data/lib/rouge/demos/haml +5 -0
- data/lib/rouge/demos/handlebars +7 -0
- data/lib/rouge/demos/haskell +6 -0
- data/lib/rouge/demos/haxe +5 -0
- data/lib/rouge/demos/hcl +7 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/hql +5 -0
- data/lib/rouge/demos/html +8 -0
- data/lib/rouge/demos/http +14 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/idlang +8 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/ini +4 -0
- data/lib/rouge/demos/io +11 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/java +5 -0
- data/lib/rouge/demos/javascript +1 -0
- data/lib/rouge/demos/jinja +9 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/json +1 -0
- data/lib/rouge/demos/json-doc +1 -0
- data/lib/rouge/demos/jsonnet +28 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/jsx +17 -0
- data/lib/rouge/demos/julia +11 -0
- data/lib/rouge/demos/kotlin +3 -0
- data/lib/rouge/demos/lasso +12 -0
- data/lib/rouge/demos/liquid +10 -0
- data/lib/rouge/demos/literate_coffeescript +3 -0
- data/lib/rouge/demos/literate_haskell +7 -0
- data/lib/rouge/demos/llvm +20 -0
- data/lib/rouge/demos/lua +12 -0
- data/lib/rouge/demos/lustre +6 -0
- data/lib/rouge/demos/lutin +18 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/demos/make +6 -0
- data/lib/rouge/demos/markdown +4 -0
- data/lib/rouge/demos/mason +22 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/minizinc +23 -0
- data/lib/rouge/demos/moonscript +16 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/mxml +22 -0
- data/lib/rouge/demos/nasm +26 -0
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/nginx +5 -0
- data/lib/rouge/demos/nim +27 -0
- data/lib/rouge/demos/nix +19 -0
- data/lib/rouge/demos/objective_c +18 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/demos/ocaml +12 -0
- data/lib/rouge/demos/openedge +4 -0
- data/lib/rouge/demos/opentype_feature_file +6 -0
- data/lib/rouge/demos/pascal +14 -0
- data/lib/rouge/demos/perl +5 -0
- data/lib/rouge/demos/php +3 -0
- data/lib/rouge/demos/plaintext +1 -0
- data/lib/rouge/demos/plist +11 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/powershell +13 -0
- data/lib/rouge/demos/praat +26 -0
- data/lib/rouge/demos/prolog +9 -0
- data/lib/rouge/demos/prometheus +9 -0
- data/lib/rouge/demos/properties +7 -0
- data/lib/rouge/demos/protobuf +5 -0
- data/lib/rouge/demos/puppet +6 -0
- data/lib/rouge/demos/python +6 -0
- data/lib/rouge/demos/q +8 -0
- data/lib/rouge/demos/qml +9 -0
- data/lib/rouge/demos/r +8 -0
- data/lib/rouge/demos/racket +24 -0
- data/lib/rouge/demos/reasonml +12 -0
- data/lib/rouge/demos/robot_framework +27 -0
- data/lib/rouge/demos/ruby +9 -0
- data/lib/rouge/demos/rust +12 -0
- data/lib/rouge/demos/sas +13 -0
- data/lib/rouge/demos/sass +3 -0
- data/lib/rouge/demos/scala +3 -0
- data/lib/rouge/demos/scheme +4 -0
- data/lib/rouge/demos/scss +5 -0
- data/lib/rouge/demos/sed +4 -0
- data/lib/rouge/demos/shell +2 -0
- data/lib/rouge/demos/sieve +10 -0
- data/lib/rouge/demos/slice +10 -0
- data/lib/rouge/demos/slim +17 -0
- data/lib/rouge/demos/smalltalk +6 -0
- data/lib/rouge/demos/smarty +12 -0
- data/lib/rouge/demos/sml +4 -0
- data/lib/rouge/demos/sparql +6 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/sql +1 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/swift +5 -0
- data/lib/rouge/demos/tap +5 -0
- data/lib/rouge/demos/tcl +1 -0
- data/lib/rouge/demos/terraform +16 -0
- data/lib/rouge/demos/tex +1 -0
- data/lib/rouge/demos/toml +9 -0
- data/lib/rouge/demos/tsx +17 -0
- data/lib/rouge/demos/ttcn3 +6 -0
- data/lib/rouge/demos/tulip +13 -0
- data/lib/rouge/demos/turtle +26 -0
- data/lib/rouge/demos/twig +9 -0
- data/lib/rouge/demos/typescript +1 -0
- data/lib/rouge/demos/vala +8 -0
- data/lib/rouge/demos/vb +4 -0
- data/lib/rouge/demos/vcl +12 -0
- data/lib/rouge/demos/verilog +27 -0
- data/lib/rouge/demos/vhdl +23 -0
- data/lib/rouge/demos/viml +14 -0
- data/lib/rouge/demos/vue +11 -0
- data/lib/rouge/demos/wollok +11 -0
- data/lib/rouge/demos/xml +2 -0
- data/lib/rouge/demos/xojo +14 -0
- data/lib/rouge/demos/xpath +2 -0
- data/lib/rouge/demos/xquery +22 -0
- data/lib/rouge/demos/yaml +4 -0
- data/lib/rouge/formatter.rb +112 -0
- data/lib/rouge/formatters/html.rb +56 -0
- data/lib/rouge/formatters/html_inline.rb +31 -0
- data/lib/rouge/formatters/html_legacy.rb +45 -0
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +23 -0
- data/lib/rouge/formatters/html_pygments.rb +18 -0
- data/lib/rouge/formatters/html_table.rb +51 -0
- data/lib/rouge/formatters/null.rb +20 -0
- data/lib/rouge/formatters/terminal256.rb +198 -0
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guesser.rb +57 -0
- data/lib/rouge/guessers/disambiguation.rb +136 -0
- data/lib/rouge/guessers/filename.rb +27 -0
- data/lib/rouge/guessers/glob_mapping.rb +45 -0
- data/lib/rouge/guessers/mimetype.rb +16 -0
- data/lib/rouge/guessers/modeline.rb +46 -0
- data/lib/rouge/guessers/source.rb +31 -0
- data/lib/rouge/guessers/util.rb +34 -0
- data/lib/rouge/lexer.rb +516 -0
- data/lib/rouge/lexers/abap.rb +240 -0
- data/lib/rouge/lexers/actionscript.rb +196 -0
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +73 -0
- data/lib/rouge/lexers/apache/keywords.yml +764 -0
- data/lib/rouge/lexers/apex.rb +126 -0
- data/lib/rouge/lexers/apiblueprint.rb +49 -0
- data/lib/rouge/lexers/apple_script.rb +370 -0
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +162 -0
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +43 -0
- data/lib/rouge/lexers/bpf.rb +118 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +82 -0
- data/lib/rouge/lexers/c.rb +190 -0
- data/lib/rouge/lexers/ceylon.rb +96 -0
- data/lib/rouge/lexers/cfscript.rb +154 -0
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/clojure.rb +113 -0
- data/lib/rouge/lexers/cmake.rb +207 -0
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +215 -0
- data/lib/rouge/lexers/common_lisp.rb +346 -0
- data/lib/rouge/lexers/conf.rb +25 -0
- data/lib/rouge/lexers/console.rb +174 -0
- data/lib/rouge/lexers/coq.rb +191 -0
- data/lib/rouge/lexers/cpp.rb +82 -0
- data/lib/rouge/lexers/crystal.rb +430 -0
- data/lib/rouge/lexers/csharp.rb +114 -0
- data/lib/rouge/lexers/css.rb +274 -0
- data/lib/rouge/lexers/csvs.rb +44 -0
- data/lib/rouge/lexers/cuda.rb +35 -0
- data/lib/rouge/lexers/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +177 -0
- data/lib/rouge/lexers/dart.rb +105 -0
- data/lib/rouge/lexers/diff.rb +37 -0
- data/lib/rouge/lexers/digdag.rb +70 -0
- data/lib/rouge/lexers/docker.rb +51 -0
- data/lib/rouge/lexers/dot.rb +69 -0
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/eex.rb +52 -0
- data/lib/rouge/lexers/eiffel.rb +66 -0
- data/lib/rouge/lexers/elixir.rb +149 -0
- data/lib/rouge/lexers/elm.rb +90 -0
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +53 -0
- data/lib/rouge/lexers/erlang.rb +115 -0
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +303 -0
- data/lib/rouge/lexers/fortran.rb +178 -0
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +119 -0
- data/lib/rouge/lexers/gdscript.rb +171 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/gherkin.rb +140 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
- data/lib/rouge/lexers/glsl.rb +132 -0
- data/lib/rouge/lexers/go.rb +175 -0
- data/lib/rouge/lexers/gradle.rb +38 -0
- data/lib/rouge/lexers/graphql.rb +261 -0
- data/lib/rouge/lexers/groovy.rb +111 -0
- data/lib/rouge/lexers/hack.rb +49 -0
- data/lib/rouge/lexers/haml.rb +226 -0
- data/lib/rouge/lexers/handlebars.rb +91 -0
- data/lib/rouge/lexers/haskell.rb +199 -0
- data/lib/rouge/lexers/haxe.rb +246 -0
- data/lib/rouge/lexers/hcl.rb +163 -0
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/hql.rb +139 -0
- data/lib/rouge/lexers/html.rb +141 -0
- data/lib/rouge/lexers/http.rb +81 -0
- data/lib/rouge/lexers/hylang.rb +94 -0
- data/lib/rouge/lexers/idlang.rb +312 -0
- data/lib/rouge/lexers/igorpro.rb +664 -0
- data/lib/rouge/lexers/ini.rb +54 -0
- data/lib/rouge/lexers/io.rb +69 -0
- data/lib/rouge/lexers/irb.rb +67 -0
- data/lib/rouge/lexers/java.rb +91 -0
- data/lib/rouge/lexers/javascript.rb +279 -0
- data/lib/rouge/lexers/jinja.rb +154 -0
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/json.rb +69 -0
- data/lib/rouge/lexers/json_doc.rb +25 -0
- data/lib/rouge/lexers/jsonnet.rb +152 -0
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +104 -0
- data/lib/rouge/lexers/julia.rb +290 -0
- data/lib/rouge/lexers/kotlin.rb +127 -0
- data/lib/rouge/lexers/lasso.rb +215 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/liquid.rb +285 -0
- data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
- data/lib/rouge/lexers/literate_haskell.rb +37 -0
- data/lib/rouge/lexers/llvm.rb +97 -0
- data/lib/rouge/lexers/lua.rb +164 -0
- data/lib/rouge/lexers/lua/builtins.rb +24 -0
- data/lib/rouge/lexers/lustre.rb +79 -0
- data/lib/rouge/lexers/lutin.rb +33 -0
- data/lib/rouge/lexers/m68k.rb +143 -0
- data/lib/rouge/lexers/magik.rb +127 -0
- data/lib/rouge/lexers/make.rb +135 -0
- data/lib/rouge/lexers/markdown.rb +182 -0
- data/lib/rouge/lexers/mason.rb +110 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +81 -0
- data/lib/rouge/lexers/matlab/builtins.yml +3515 -0
- data/lib/rouge/lexers/minizinc.rb +87 -0
- data/lib/rouge/lexers/moonscript.rb +115 -0
- data/lib/rouge/lexers/mosel.rb +232 -0
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +69 -0
- data/lib/rouge/lexers/nasm.rb +72 -0
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +72 -0
- data/lib/rouge/lexers/nim.rb +154 -0
- data/lib/rouge/lexers/nix.rb +211 -0
- data/lib/rouge/lexers/objective_c.rb +21 -0
- data/lib/rouge/lexers/objective_c/common.rb +184 -0
- data/lib/rouge/lexers/objective_cpp.rb +31 -0
- data/lib/rouge/lexers/ocaml.rb +65 -0
- data/lib/rouge/lexers/ocaml/common.rb +53 -0
- data/lib/rouge/lexers/openedge.rb +429 -0
- data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
- data/lib/rouge/lexers/pascal.rb +67 -0
- data/lib/rouge/lexers/perl.rb +231 -0
- data/lib/rouge/lexers/php.rb +216 -0
- data/lib/rouge/lexers/php/builtins.rb +203 -0
- data/lib/rouge/lexers/plain_text.rb +27 -0
- data/lib/rouge/lexers/plist.rb +47 -0
- data/lib/rouge/lexers/pony.rb +94 -0
- data/lib/rouge/lexers/powershell.rb +230 -0
- data/lib/rouge/lexers/praat.rb +351 -0
- data/lib/rouge/lexers/prolog.rb +67 -0
- data/lib/rouge/lexers/prometheus.rb +123 -0
- data/lib/rouge/lexers/properties.rb +52 -0
- data/lib/rouge/lexers/protobuf.rb +71 -0
- data/lib/rouge/lexers/puppet.rb +129 -0
- data/lib/rouge/lexers/python.rb +248 -0
- data/lib/rouge/lexers/q.rb +126 -0
- data/lib/rouge/lexers/qml.rb +74 -0
- data/lib/rouge/lexers/r.rb +89 -0
- data/lib/rouge/lexers/racket.rb +545 -0
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/robot_framework.rb +249 -0
- data/lib/rouge/lexers/ruby.rb +444 -0
- data/lib/rouge/lexers/rust.rb +193 -0
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +75 -0
- data/lib/rouge/lexers/sass/common.rb +181 -0
- data/lib/rouge/lexers/scala.rb +169 -0
- data/lib/rouge/lexers/scheme.rb +113 -0
- data/lib/rouge/lexers/scss.rb +35 -0
- data/lib/rouge/lexers/sed.rb +173 -0
- data/lib/rouge/lexers/shell.rb +201 -0
- data/lib/rouge/lexers/sieve.rb +97 -0
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/slim.rb +229 -0
- data/lib/rouge/lexers/smalltalk.rb +117 -0
- data/lib/rouge/lexers/smarty.rb +81 -0
- data/lib/rouge/lexers/sml.rb +345 -0
- data/lib/rouge/lexers/sparql.rb +129 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sql.rb +161 -0
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +186 -0
- data/lib/rouge/lexers/tap.rb +89 -0
- data/lib/rouge/lexers/tcl.rb +193 -0
- data/lib/rouge/lexers/terraform.rb +113 -0
- data/lib/rouge/lexers/tex.rb +70 -0
- data/lib/rouge/lexers/toml.rb +106 -0
- data/lib/rouge/lexers/tsx.rb +20 -0
- data/lib/rouge/lexers/ttcn3.rb +119 -0
- data/lib/rouge/lexers/tulip.rb +108 -0
- data/lib/rouge/lexers/turtle.rb +61 -0
- data/lib/rouge/lexers/twig.rb +40 -0
- data/lib/rouge/lexers/typescript.rb +30 -0
- data/lib/rouge/lexers/typescript/common.rb +34 -0
- data/lib/rouge/lexers/vala.rb +78 -0
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/vb.rb +165 -0
- data/lib/rouge/lexers/verilog.rb +163 -0
- data/lib/rouge/lexers/vhdl.rb +98 -0
- data/lib/rouge/lexers/viml.rb +102 -0
- data/lib/rouge/lexers/viml/keywords.rb +14 -0
- data/lib/rouge/lexers/vue.rb +124 -0
- data/lib/rouge/lexers/wollok.rb +104 -0
- data/lib/rouge/lexers/xml.rb +54 -0
- data/lib/rouge/lexers/xojo.rb +61 -0
- data/lib/rouge/lexers/xpath.rb +332 -0
- data/lib/rouge/lexers/xquery.rb +145 -0
- data/lib/rouge/lexers/yaml.rb +376 -0
- data/lib/rouge/plugins/redcarpet.rb +37 -0
- data/lib/rouge/regex_lexer.rb +443 -0
- data/lib/rouge/template_lexer.rb +21 -0
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/text_analyzer.rb +50 -0
- data/lib/rouge/theme.rb +218 -0
- data/lib/rouge/themes/base16.rb +131 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/colorful.rb +68 -0
- data/lib/rouge/themes/github.rb +72 -0
- data/lib/rouge/themes/gruvbox.rb +168 -0
- data/lib/rouge/themes/igor_pro.rb +21 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/molokai.rb +83 -0
- data/lib/rouge/themes/monokai.rb +93 -0
- data/lib/rouge/themes/monokai_sublime.rb +93 -0
- data/lib/rouge/themes/pastie.rb +70 -0
- data/lib/rouge/themes/thankful_eyes.rb +75 -0
- data/lib/rouge/themes/tulip.rb +70 -0
- data/lib/rouge/token.rb +191 -0
- data/lib/rouge/util.rb +102 -0
- data/lib/rouge/version.rb +8 -0
- data/rouge.gemspec +26 -0
- metadata +476 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class BBCBASIC < RegexLexer
|
|
7
|
+
title "BBCBASIC"
|
|
8
|
+
desc "BBC BASIC syntax"
|
|
9
|
+
tag 'bbcbasic'
|
|
10
|
+
filenames '*,fd1'
|
|
11
|
+
|
|
12
|
+
def self.punctuation
|
|
13
|
+
@punctuation ||= %w(
|
|
14
|
+
[,;'~] SPC TAB
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.function
|
|
19
|
+
@function ||= %w(
|
|
20
|
+
ABS ACS ADVAL ASC ASN ATN BEATS BEAT BGET# CHR\$ COS COUNT DEG DIM
|
|
21
|
+
EOF# ERL ERR EVAL EXP EXT# FN GET\$# GET\$ GET HIMEM INKEY\$ INKEY
|
|
22
|
+
INSTR INT LEFT\$ LEN LN LOG LOMEM MID\$ OPENIN OPENOUT OPENUP PAGE
|
|
23
|
+
POINT POS PTR# RAD REPORT\$ RIGHT\$ RND SGN SIN SQR STR\$ STRING\$ SUM
|
|
24
|
+
SUMLEN TAN TEMPO TIME\$ TIME TOP USR VAL VPOS
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.statement
|
|
29
|
+
@statement ||= %w(
|
|
30
|
+
BEATS BPUT# CALL CASE CHAIN CLEAR CLG CLOSE# CLS COLOR COLOUR DATA
|
|
31
|
+
ELSE ENDCASE ENDIF ENDPROC ENDWHILE END ENVELOPE FOR GCOL GOSUB GOTO
|
|
32
|
+
IF INSTALL LET LIBRARY MODE NEXT OFF OF ON ORIGIN OSCI OTHERWISE
|
|
33
|
+
OVERLAY PLOT PRINT# PRINT PROC QUIT READ REPEAT REPORT RETURN SOUND
|
|
34
|
+
STEP STEREO STOP SWAP SYS THEN TINT TO VDU VOICES VOICE UNTIL WAIT
|
|
35
|
+
WHEN WHILE WIDTH
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.operator
|
|
40
|
+
@operator ||= %w(
|
|
41
|
+
<< <= <> < >= >>> >> > [-!$()*+/=?^|] AND DIV EOR MOD NOT OR
|
|
42
|
+
)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.constant
|
|
46
|
+
@constant ||= %w(
|
|
47
|
+
FALSE TRUE
|
|
48
|
+
)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
state :expression do
|
|
52
|
+
rule %r/#{BBCBASIC.function.join('|')}/o, Name::Builtin # function or pseudo-variable
|
|
53
|
+
rule %r/#{BBCBASIC.operator.join('|')}/o, Operator
|
|
54
|
+
rule %r/#{BBCBASIC.constant.join('|')}/o, Name::Constant
|
|
55
|
+
rule %r/"[^"]*"/o, Literal::String
|
|
56
|
+
rule %r/[a-z_`][\w`]*[$%]?/io, Name::Variable
|
|
57
|
+
rule %r/@%/o, Name::Variable
|
|
58
|
+
rule %r/[\d.]+/o, Literal::Number
|
|
59
|
+
rule %r/%[01]+/o, Literal::Number::Bin
|
|
60
|
+
rule %r/&[\h]+/o, Literal::Number::Hex
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
state :root do
|
|
64
|
+
rule %r/(:+)( *)(\*)(.*)/ do
|
|
65
|
+
groups Punctuation, Text, Keyword, Text # CLI command
|
|
66
|
+
end
|
|
67
|
+
rule %r/(\n+ *)(\*)(.*)/ do
|
|
68
|
+
groups Text, Keyword, Text # CLI command
|
|
69
|
+
end
|
|
70
|
+
rule %r/(ELSE|OTHERWISE|REPEAT|THEN)( *)(\*)(.*)/ do
|
|
71
|
+
groups Keyword, Text, Keyword, Text # CLI command
|
|
72
|
+
end
|
|
73
|
+
rule %r/[ \n]+/o, Text
|
|
74
|
+
rule %r/:+/o, Punctuation
|
|
75
|
+
rule %r/[\[]/o, Keyword, :assembly1
|
|
76
|
+
rule %r/REM *>.*/o, Comment::Special
|
|
77
|
+
rule %r/REM.*/o, Comment
|
|
78
|
+
rule %r/(?:#{BBCBASIC.statement.join('|')}|CIRCLE(?: *FILL)?|DEF *(?:FN|PROC)|DRAW(?: *BY)?|DIM(?!\()|ELLIPSE(?: *FILL)?|ERROR(?: *EXT)?|FILL(?: *BY)?|INPUT(?:#| *LINE)?|LINE(?: *INPUT)?|LOCAL(?: *DATA| *ERROR)?|MOUSE(?: *COLOUR| *OFF| *ON| *RECTANGLE| *STEP| *TO)?|MOVE(?: *BY)?|ON(?! *ERROR)|ON *ERROR *(?:LOCAL|OFF)?|POINT(?: *BY)?(?!\()|RECTANGE(?: *FILL)?|RESTORE(?: *DATA| *ERROR)?|TRACE(?: *CLOSE| *ENDPROC| *OFF| *STEP(?: *FN| *ON| *PROC)?| *TO)?)/o, Keyword
|
|
79
|
+
mixin :expression
|
|
80
|
+
rule %r/#{BBCBASIC.punctuation.join('|')}/o, Punctuation
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Assembly statements are parsed as
|
|
84
|
+
# {label} {directive|opcode |']' {expressions}} {comment}
|
|
85
|
+
# Technically, you don't need whitespace between opcodes and arguments,
|
|
86
|
+
# but this is rare in uncrunched source and trying to enumerate all
|
|
87
|
+
# possible opcodes here is impractical so we colour it as though
|
|
88
|
+
# the whitespace is required. Opcodes and directives can only easily be
|
|
89
|
+
# distinguished from the symbols that make up expressions by looking at
|
|
90
|
+
# their position within the statement. Similarly, ']' is treated as a
|
|
91
|
+
# keyword at the start of a statement or as punctuation elsewhere. This
|
|
92
|
+
# requires a two-state state machine.
|
|
93
|
+
|
|
94
|
+
state :assembly1 do
|
|
95
|
+
rule %r/ +/o, Text
|
|
96
|
+
rule %r/]/o, Keyword, :pop!
|
|
97
|
+
rule %r/[:\n]/o, Punctuation
|
|
98
|
+
rule %r/\.[a-z_`][\w`]*%? */io, Name::Label
|
|
99
|
+
rule %r/(?:REM|;)[^:\n]*/o, Comment
|
|
100
|
+
rule %r/[^ :\n]+/o, Keyword, :assembly2
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
state :assembly2 do
|
|
104
|
+
rule %r/ +/o, Text
|
|
105
|
+
rule %r/[:\n]/o, Punctuation, :pop!
|
|
106
|
+
rule %r/(?:REM|;)[^:\n]*/o, Comment, :pop!
|
|
107
|
+
mixin :expression
|
|
108
|
+
rule %r/[!#,@\[\]^{}]/, Punctuation
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
load_lexer 'xml.rb'
|
|
6
|
+
|
|
7
|
+
class BIML < XML
|
|
8
|
+
title "BIML"
|
|
9
|
+
desc "BIML, Business Intelligence Markup Language"
|
|
10
|
+
tag 'biml'
|
|
11
|
+
filenames '*.biml'
|
|
12
|
+
|
|
13
|
+
def self.detect?(text)
|
|
14
|
+
return true if text =~ /<\s*Biml\b/
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
prepend :root do
|
|
18
|
+
rule %r(<#\@\s*)m, Name::Tag, :directive_tag
|
|
19
|
+
|
|
20
|
+
rule %r(<#[=]?\s*)m, Name::Tag, :directive_as_csharp
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
prepend :attr do
|
|
24
|
+
#TODO: how to deal with embedded <# tags inside a attribute string
|
|
25
|
+
#rule %r("<#[=]?\s*)m, Name::Tag, :directive_as_csharp
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
state :directive_as_csharp do
|
|
29
|
+
rule %r/\s*#>\s*/m, Name::Tag, :pop!
|
|
30
|
+
rule %r(.*?(?=\s*#>\s*))m do
|
|
31
|
+
delegate CSharp
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
state :directive_tag do
|
|
36
|
+
rule %r/\s+/m, Text
|
|
37
|
+
rule %r/[\w.:-]+\s*=/m, Name::Attribute, :attr
|
|
38
|
+
rule %r/\w+\s*/m, Name::Attribute
|
|
39
|
+
rule %r(/?\s*#>), Name::Tag, :pop!
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class BPF < RegexLexer
|
|
7
|
+
title "BPF"
|
|
8
|
+
desc "BPF bytecode syntax"
|
|
9
|
+
tag 'bpf'
|
|
10
|
+
|
|
11
|
+
TYPE_KEYWORDS = %w(
|
|
12
|
+
u8 u16 u32 u64 ll
|
|
13
|
+
).join('|')
|
|
14
|
+
|
|
15
|
+
MISC_KEYWORDS = %w(
|
|
16
|
+
be16 be32 be64 exit lock map
|
|
17
|
+
).join('|')
|
|
18
|
+
|
|
19
|
+
state :root do
|
|
20
|
+
# Line numbers and hexadecimal output from bpftool/objdump
|
|
21
|
+
rule %r/(\d+)(:)(\s+)(\(\h{2}\))/i do
|
|
22
|
+
groups Generic::Lineno, Punctuation, Text::Whitespace, Generic
|
|
23
|
+
end
|
|
24
|
+
rule %r/(\d+)(:)(\s+)((?:\h{2} ){8})/i do
|
|
25
|
+
groups Generic::Lineno, Punctuation, Text::Whitespace, Generic
|
|
26
|
+
end
|
|
27
|
+
rule %r/(\d+)(:)(\s+)/i do
|
|
28
|
+
groups Generic::Lineno, Punctuation, Text::Whitespace
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Calls to helpers
|
|
32
|
+
rule %r/(call)(\s+)(\d+)/i do
|
|
33
|
+
groups Keyword, Text::Whitespace, Literal::Number::Integer
|
|
34
|
+
end
|
|
35
|
+
rule %r/(call)(\s+)(\w+)(#)(\d+)/i do
|
|
36
|
+
groups Keyword, Text::Whitespace, Name::Builtin, Punctuation, Literal::Number::Integer
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Unconditional jumps
|
|
40
|
+
rule %r/(goto)(\s*)(\+\d+)?(\s*)(<?\w+>?)/i do
|
|
41
|
+
groups Keyword, Text::Whitespace, Literal::Number::Integer, Text::Whitespace, Name::Label
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Conditional jumps
|
|
45
|
+
rule %r/(if)(\s+)([rw]\d+)(\s*)([s!=<>]+)(\s*)(0x\h+|[-]?\d+)(\s*)(goto)(\s*)(\+\d+)?(\s*)(<?\w+>?)/i do
|
|
46
|
+
groups Keyword, Text::Whitespace, Name, Text::Whitespace, Operator, Text::Whitespace, Literal::Number, Text::Whitespace, Keyword, Text::Whitespace, Literal::Number::Integer, Text::Whitespace, Name::Label
|
|
47
|
+
end
|
|
48
|
+
rule %r/(if)(\s+)([rw]\d+)(\s*)([s!=<>]+)(\s*)([rw]\d+)(\s*)(goto)(\s*)(\+\d+)?(\s*)(<?\w+>?)/i do
|
|
49
|
+
groups Keyword, Text::Whitespace, Name, Text::Whitespace, Operator, Text::Whitespace, Name, Text::Whitespace, Keyword, Text::Whitespace, Literal::Number::Integer, Text::Whitespace, Name::Label
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Dereferences
|
|
53
|
+
rule %r/(\*)(\s*)(\()(#{TYPE_KEYWORDS})(\s*)(\*)(\))/i do
|
|
54
|
+
groups Operator, Text::Whitespace, Punctuation, Keyword::Type, Text::Whitespace, Operator, Punctuation
|
|
55
|
+
push :address
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Operators
|
|
59
|
+
rule %r/[+-\/\*&|><^s]{0,3}=/i, Operator
|
|
60
|
+
|
|
61
|
+
# Registers
|
|
62
|
+
rule %r/([+-]?)([rw]\d+)/i do
|
|
63
|
+
groups Punctuation, Name
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Comments
|
|
67
|
+
rule %r/\/\//, Comment::Single, :linecomment
|
|
68
|
+
rule %r/\/\*/, Comment::Multiline, :multilinescomment
|
|
69
|
+
|
|
70
|
+
rule %r/#{MISC_KEYWORDS}/i, Keyword
|
|
71
|
+
|
|
72
|
+
# Literals and global objects (maps) refered by name
|
|
73
|
+
rule %r/(0x\h+|[-]?\d+)(\s*)(ll)?/i do
|
|
74
|
+
groups Literal::Number, Text::Whitespace, Keyword::Type
|
|
75
|
+
end
|
|
76
|
+
rule %r/(\w+)(\s*)(ll)/i do
|
|
77
|
+
groups Name, Text::Whitespace, Keyword::Type
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Labels
|
|
81
|
+
rule %r/(\w+)(\s*)(:)/i do
|
|
82
|
+
groups Name::Label, Text::Whitespace, Punctuation
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
rule %r{.}m, Text
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
state :address do
|
|
89
|
+
# Address is offset from register
|
|
90
|
+
rule %r/(\()([rw]\d+)(\s*)([+-])(\s*)(\d+)(\))/i do
|
|
91
|
+
groups Punctuation, Name, Text::Whitespace, Operator, Text::Whitespace, Literal::Number::Integer, Punctuation
|
|
92
|
+
pop!
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Address is array subscript
|
|
96
|
+
rule %r/(\w+)(\[)(\d+)(\])/i do
|
|
97
|
+
groups Name, Punctuation, Literal::Number::Integer, Punctuation
|
|
98
|
+
pop!
|
|
99
|
+
end
|
|
100
|
+
rule %r/(\w+)(\[)([rw]\d+)(\])/i do
|
|
101
|
+
groups Name, Punctuation, Name, Punctuation
|
|
102
|
+
pop!
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
state :linecomment do
|
|
107
|
+
rule %r/\n/, Comment::Single, :pop!
|
|
108
|
+
rule %r/.+/, Comment::Single
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
state :multilinescomment do
|
|
112
|
+
rule %r/\*\//, Comment::Multiline, :pop!
|
|
113
|
+
rule %r/([^\*\/]+)/, Comment::Multiline
|
|
114
|
+
rule %r/([\*\/])/, Comment::Multiline
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Brainfuck < RegexLexer
|
|
7
|
+
tag 'brainfuck'
|
|
8
|
+
filenames '*.b', '*.bf'
|
|
9
|
+
mimetypes 'text/x-brainfuck'
|
|
10
|
+
|
|
11
|
+
title "Brainfuck"
|
|
12
|
+
desc "The Brainfuck programming language"
|
|
13
|
+
|
|
14
|
+
start { push :bol }
|
|
15
|
+
|
|
16
|
+
state :bol do
|
|
17
|
+
rule %r/\s+/m, Text
|
|
18
|
+
rule %r/\[/, Comment::Multiline, :comment_multi
|
|
19
|
+
rule(//) { pop! }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
state :root do
|
|
23
|
+
rule %r/\]/, Error
|
|
24
|
+
rule %r/\[/, Punctuation, :loop
|
|
25
|
+
|
|
26
|
+
mixin :comment_single
|
|
27
|
+
mixin :commands
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
state :comment_multi do
|
|
31
|
+
rule %r/\[/, Comment::Multiline, :comment_multi
|
|
32
|
+
rule %r/\]/, Comment::Multiline, :pop!
|
|
33
|
+
rule %r/[^\[\]]+?/m, Comment::Multiline
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
state :comment_single do
|
|
37
|
+
rule %r/[^><+\-.,\[\]]+/, Comment::Single
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
state :loop do
|
|
41
|
+
rule %r/\[/, Punctuation, :loop
|
|
42
|
+
rule %r/\]/, Punctuation, :pop!
|
|
43
|
+
mixin :comment_single
|
|
44
|
+
mixin :commands
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
state :commands do
|
|
48
|
+
rule %r/[><]+/, Name::Builtin
|
|
49
|
+
rule %r/[+\-.,]+/, Name::Function
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Bsl < RegexLexer
|
|
7
|
+
title "1C (BSL)"
|
|
8
|
+
desc "The 1C:Enterprise programming language"
|
|
9
|
+
tag 'bsl'
|
|
10
|
+
filenames '*.bsl', '*.os'
|
|
11
|
+
|
|
12
|
+
KEYWORDS = /(?<=[^\wа-яё]|^)(?:
|
|
13
|
+
КонецПроцедуры | EndProcedure | КонецФункции | EndFunction
|
|
14
|
+
| Прервать | Break | Продолжить | Continue
|
|
15
|
+
| Возврат | Return | Если | If
|
|
16
|
+
| Иначе | Else | ИначеЕсли | ElsIf
|
|
17
|
+
| Тогда | Then | КонецЕсли | EndIf
|
|
18
|
+
| Попытка | Try | Исключение | Except
|
|
19
|
+
| КонецПопытки | EndTry | Raise | ВызватьИсключение
|
|
20
|
+
| Пока | While | Для | For
|
|
21
|
+
| Каждого | Each | Из | In
|
|
22
|
+
| По | To | Цикл | Do
|
|
23
|
+
| КонецЦикла | EndDo | НЕ | NOT
|
|
24
|
+
| И | AND | ИЛИ | OR
|
|
25
|
+
| Новый | New | Процедура | Procedure
|
|
26
|
+
| Функция | Function | Перем | Var
|
|
27
|
+
| Экспорт | Export | Знач | Val
|
|
28
|
+
)(?=[^\wа-яё]|$)/ix
|
|
29
|
+
|
|
30
|
+
BUILTINS = /(?<=[^\wа-яё]|^)(?:
|
|
31
|
+
СтрДлина|StrLen|СокрЛ|TrimL|СокрП|TrimR|СокрЛП|TrimAll|Лев|Left|Прав|Right|Сред|Mid|СтрНайти|StrFind|ВРег|Upper|НРег|Lower|ТРег|Title|Символ|Char|КодСимвола|CharCode|ПустаяСтрока|IsBlankString|СтрЗаменить|StrReplace|СтрЧислоСтрок|StrLineCount|СтрПолучитьСтроку|StrGetLine|СтрЧислоВхождений|StrOccurrenceCount|СтрСравнить|StrCompare|СтрНачинаетсяС|StrStartWith|СтрЗаканчиваетсяНа|StrEndsWith|СтрРазделить|StrSplit|СтрСоединить|StrConcat
|
|
32
|
+
| Цел|Int|Окр|Round|ACos|ACos|ASin|ASin|ATan|ATan|Cos|Cos|Exp|Exp|Log|Log|Log10|Log10|Pow|Pow|Sin|Sin|Sqrt|Sqrt|Tan|Tan
|
|
33
|
+
| Год|Year|Месяц|Month|День|Day|Час|Hour|Минута|Minute|Секунда|Second|НачалоГода|BegOfYear|НачалоДня|BegOfDay|НачалоКвартала|BegOfQuarter|НачалоМесяца|BegOfMonth|НачалоМинуты|BegOfMinute|НачалоНедели|BegOfWeek|НачалоЧаса|BegOfHour|КонецГода|EndOfYear|КонецДня|EndOfDay|КонецКвартала|EndOfQuarter|КонецМесяца|EndOfMonth|КонецМинуты|EndOfMinute|КонецНедели|EndOfWeek|КонецЧаса|EndOfHour|НеделяГода|WeekOfYear|ДеньГода|DayOfYear|ДеньНедели|WeekDay|ТекущаяДата|CurrentDate|ДобавитьМесяц|AddMonth
|
|
34
|
+
| Тип|Type|ТипЗнч|TypeOf
|
|
35
|
+
| Булево|Boolean|Число|Number|Строка|String|Дата|Date
|
|
36
|
+
| ПоказатьВопрос|ShowQueryBox|Вопрос|DoQueryBox|ПоказатьПредупреждение|ShowMessageBox|Предупреждение|DoMessageBox|Сообщить|Message|ОчиститьСообщения|ClearMessages|ОповеститьОбИзменении|NotifyChanged|Состояние|Status|Сигнал|Beep|ПоказатьЗначение|ShowValue|ОткрытьЗначение|OpenValue|Оповестить|Notify|ОбработкаПрерыванияПользователя|UserInterruptProcessing|ОткрытьСодержаниеСправки|OpenHelpContent|ОткрытьИндексСправки|OpenHelpIndex|ОткрытьСправку|OpenHelp|ПоказатьИнформациюОбОшибке|ShowErrorInfo|КраткоеПредставлениеОшибки|BriefErrorDescription|ПодробноеПредставлениеОшибки|DetailErrorDescription|ПолучитьФорму|GetForm|ЗакрытьСправку|CloseHelp|ПоказатьОповещениеПользователя|ShowUserNotification|ОткрытьФорму|OpenForm|ОткрытьФормуМодально|OpenFormModal|АктивноеОкно|ActiveWindow|ВыполнитьОбработкуОповещения|ExecuteNotifyProcessing
|
|
37
|
+
| ПоказатьВводЗначения|ShowInputValue|ВвестиЗначение|InputValue|ПоказатьВводЧисла|ShowInputNumber|ВвестиЧисло|InputNumber|ПоказатьВводСтроки|ShowInputString|ВвестиСтроку|InputString|ПоказатьВводДаты|ShowInputDate|ВвестиДату|InputDate
|
|
38
|
+
| Формат|Format|ЧислоПрописью|NumberInWords|НСтр|NStr|ПредставлениеПериода|PeriodPresentation|СтрШаблон|StrTemplate
|
|
39
|
+
| ПолучитьОбщийМакет|GetCommonTemplate|ПолучитьОбщуюФорму|GetCommonForm|ПредопределенноеЗначение|PredefinedValue|ПолучитьПолноеИмяПредопределенногоЗначения|GetPredefinedValueFullName
|
|
40
|
+
| ПолучитьЗаголовокСистемы|GetCaption|ПолучитьСкоростьКлиентскогоСоединения|GetClientConnectionSpeed|ПодключитьОбработчикОжидания|AttachIdleHandler|УстановитьЗаголовокСистемы|SetCaption|ОтключитьОбработчикОжидания|DetachIdleHandler|ИмяКомпьютера|ComputerName|ЗавершитьРаботуСистемы|Exit|ИмяПользователя|UserName|ПрекратитьРаботуСистемы|Terminate|ПолноеИмяПользователя|UserFullName|ЗаблокироватьРаботуПользователя|LockApplication|КаталогПрограммы|BinDir|КаталогВременныхФайлов|TempFilesDir|ПравоДоступа|AccessRight|РольДоступна|IsInRole|ТекущийЯзык|CurrentLanguage|ТекущийКодЛокализации|CurrentLocaleCode|СтрокаСоединенияИнформационнойБазы|InfoBaseConnectionString|ПодключитьОбработчикОповещения|AttachNotificationHandler|ОтключитьОбработчикОповещения|DetachNotificationHandler|ПолучитьСообщенияПользователю|GetUserMessages|ПараметрыДоступа|AccessParameters|ПредставлениеПриложения|ApplicationPresentation|ТекущийЯзыкСистемы|CurrentSystemLanguage|ЗапуститьСистему|RunSystem|ТекущийРежимЗапуска|CurrentRunMode|УстановитьЧасовойПоясСеанса|SetSessionTimeZone|ЧасовойПоясСеанса|SessionTimeZone|ТекущаяДатаСеанса|CurrentSessionDate|УстановитьКраткийЗаголовокПриложения|SetShortApplicationCaption|ПолучитьКраткийЗаголовокПриложения|GetShortApplicationCaption|ПредставлениеПрава|RightPresentation|ВыполнитьПроверкуПравДоступа|VerifyAccessRights|РабочийКаталогДанныхПользователя|UserDataWorkDir|КаталогДокументов|DocumentsDir|ПолучитьИнформациюЭкрановКлиента|GetClientDisplaysInformation|ТекущийВариантОсновногоШрифтаКлиентскогоПриложения|ClientApplicationBaseFontCurrentVariant|ТекущийВариантИнтерфейсаКлиентскогоПриложения|ClientApplicationInterfaceCurrentVariant|УстановитьЗаголовокКлиентскогоПриложения|SetClientApplicationCaption|ПолучитьЗаголовокКлиентскогоПриложения|GetClientApplicationCaption|НачатьПолучениеКаталогаВременныхФайлов|BeginGettingTempFilesDir|НачатьПолучениеКаталогаДокументов|BeginGettingDocumentsDir|НачатьПолучениеРабочегоКаталогаДанныхПользователя|BeginGettingUserDataWorkDir|ПодключитьОбработчикЗапросаНастроекКлиентаЛицензирования|AttachLicensingClientParametersRequestHandler|ОтключитьОбработчикЗапросаНастроекКлиентаЛицензирования|DetachLicensingClientParametersRequestHandler
|
|
41
|
+
| ЗначениеВСтрокуВнутр|ValueToStringInternal|ЗначениеИзСтрокиВнутр|ValueFromStringInternal|ЗначениеВФайл|ValueToFile|ЗначениеИзФайла|ValueFromFile
|
|
42
|
+
| КомандаСистемы|System|ЗапуститьПриложение|RunApp|ПолучитьCOMОбъект|GetCOMObject|ПользователиОС|OSUsers|НачатьЗапускПриложения|BeginRunningApplication
|
|
43
|
+
| ПодключитьВнешнююКомпоненту|AttachAddIn|НачатьУстановкуВнешнейКомпоненты|BeginInstallAddIn|УстановитьВнешнююКомпоненту|InstallAddIn|НачатьПодключениеВнешнейКомпоненты|BeginAttachingAddIn
|
|
44
|
+
| КопироватьФайл|FileCopy|ПереместитьФайл|MoveFile|УдалитьФайлы|DeleteFiles|НайтиФайлы|FindFiles|СоздатьКаталог|CreateDirectory|ПолучитьИмяВременногоФайла|GetTempFileName|РазделитьФайл|SplitFile|ОбъединитьФайлы|MergeFiles|ПолучитьФайл|GetFile|НачатьПомещениеФайла|BeginPutFile|ПоместитьФайл|PutFile|ЭтоАдресВременногоХранилища|IsTempStorageURL|УдалитьИзВременногоХранилища|DeleteFromTempStorage|ПолучитьИзВременногоХранилища|GetFromTempStorage|ПоместитьВоВременноеХранилище|PutToTempStorage|ПодключитьРасширениеРаботыСФайлами|AttachFileSystemExtension|НачатьУстановкуРасширенияРаботыСФайлами|BeginInstallFileSystemExtension|УстановитьРасширениеРаботыСФайлами|InstallFileSystemExtension|ПолучитьФайлы|GetFiles|ПоместитьФайлы|PutFiles|ЗапроситьРазрешениеПользователя|RequestUserPermission|ПолучитьМаскуВсеФайлы|GetAllFilesMask|ПолучитьМаскуВсеФайлыКлиента|GetClientAllFilesMask|ПолучитьМаскуВсеФайлыСервера|GetServerAllFilesMask|ПолучитьРазделительПути|GetPathSeparator|ПолучитьРазделительПутиКлиента|GetClientPathSeparator|ПолучитьРазделительПутиСервера|GetServerPathSeparator|НачатьПодключениеРасширенияРаботыСФайлами|BeginAttachingFileSystemExtension|НачатьЗапросРазрешенияПользователя|BeginRequestingUserPermission|НачатьПоискФайлов|BeginFindingFiles|НачатьСозданиеКаталога|BeginCreatingDirectory|НачатьКопированиеФайла|BeginCopyingFile|НачатьПеремещениеФайла|BeginMovingFile|НачатьУдалениеФайлов|BeginDeletingFiles|НачатьПолучениеФайлов|BeginGettingFiles|НачатьПомещениеФайлов|BeginPuttingFiles
|
|
45
|
+
| НачатьТранзакцию|BeginTransaction|ЗафиксироватьТранзакцию|CommitTransaction|ОтменитьТранзакцию|RollbackTransaction|УстановитьМонопольныйРежим|SetExclusiveMode|МонопольныйРежим|ExclusiveMode|ПолучитьОперативнуюОтметкуВремени|GetRealTimeTimestamp|ПолучитьСоединенияИнформационнойБазы|GetInfoBaseConnections|НомерСоединенияИнформационнойБазы|InfoBaseConnectionNumber|КонфигурацияИзменена|ConfigurationChanged|КонфигурацияБазыДанныхИзмененаДинамически|DataBaseConfigurationChangedDynamically|УстановитьВремяОжиданияБлокировкиДанных|SetLockWaitTime|ОбновитьНумерациюОбъектов|RefreshObjectsNumbering|ПолучитьВремяОжиданияБлокировкиДанных|GetLockWaitTime|КодЛокализацииИнформационнойБазы|InfoBaseLocaleCode|УстановитьМинимальнуюДлинуПаролейПользователей|SetUserPasswordMinLength|ПолучитьМинимальнуюДлинуПаролейПользователей|GetUserPasswordMinLength|ИнициализироватьПредопределенныеДанные|InitializePredefinedData|УдалитьДанныеИнформационнойБазы|EraseInfoBaseData|УстановитьПроверкуСложностиПаролейПользователей|SetUserPasswordStrengthCheck|ПолучитьПроверкуСложностиПаролейПользователей|GetUserPasswordStrengthCheck|ПолучитьСтруктуруХраненияБазыДанных|GetDBStorageStructureInfo|УстановитьПривилегированныйРежим|SetPrivilegedMode|ПривилегированныйРежим|PrivilegedMode|ТранзакцияАктивна|TransactionActive|НеобходимостьЗавершенияСоединения|ConnectionStopRequest|НомерСеансаИнформационнойБазы|InfoBaseSessionNumber|ПолучитьСеансыИнформационнойБазы|GetInfoBaseSessions|ЗаблокироватьДанныеДляРедактирования|LockDataForEdit|УстановитьСоединениеСВнешнимИсточникомДанных|ConnectExternalDataSource|РазблокироватьДанныеДляРедактирования|UnlockDataForEdit|РазорватьСоединениеСВнешнимИсточникомДанных|DisconnectExternalDataSource|ПолучитьБлокировкуСеансов|GetSessionsLock|УстановитьБлокировкуСеансов|SetSessionsLock|ОбновитьПовторноИспользуемыеЗначения|RefreshReusableValues|УстановитьБезопасныйРежим|SetSafeMode|БезопасныйРежим|SafeMode|ПолучитьДанныеВыбора|GetChoiceData|УстановитьЧасовойПоясИнформационнойБазы|SetInfoBaseTimeZone|ПолучитьЧасовойПоясИнформационнойБазы|GetInfoBaseTimeZone|ПолучитьОбновлениеКонфигурацииБазыДанных|GetDataBaseConfigurationUpdate|УстановитьБезопасныйРежимРазделенияДанных|SetDataSeparationSafeMode|БезопасныйРежимРазделенияДанных|DataSeparationSafeMode|УстановитьВремяЗасыпанияПассивногоСеанса|SetPassiveSessionHibernateTime|ПолучитьВремяЗасыпанияПассивногоСеанса|GetPassiveSessionHibernateTime|УстановитьВремяЗавершенияСпящегоСеанса|SetHibernateSessionTerminateTime|ПолучитьВремяЗавершенияСпящегоСеанса|GetHibernateSessionTerminateTime|ПолучитьТекущийСеансИнформационнойБазы|GetCurrentInfoBaseSession|ПолучитьИдентификаторКонфигурации|GetConfigurationID|УстановитьНастройкиКлиентаЛицензирования|SetLicensingClientParameters|ПолучитьИмяКлиентаЛицензирования|GetLicensingClientName|ПолучитьДополнительныйПараметрКлиентаЛицензирования|GetLicensingClientAdditionalParameter
|
|
46
|
+
| НайтиПомеченныеНаУдаление|FindMarkedForDeletion|НайтиПоСсылкам|FindByRef|УдалитьОбъекты|DeleteObjects|УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы|SetInfoBasePredefinedDataUpdate|ПолучитьОбновлениеПредопределенныхДанныхИнформационнойБазы|GetInfoBasePredefinedData
|
|
47
|
+
| XMLСтрока|XMLString|XMLЗначение|XMLValue|XMLТип|XMLType|XMLТипЗнч|XMLTypeOf|ИзXMLТипа|FromXMLType|ВозможностьЧтенияXML|CanReadXML|ПолучитьXMLТип|GetXMLType|ПрочитатьXML|ReadXML|ЗаписатьXML|WriteXML|НайтиНедопустимыеСимволыXML|FindDisallowedXMLCharacters|ИмпортМоделиXDTO|ImportXDTOModel|СоздатьФабрикуXDTO|CreateXDTOFactory
|
|
48
|
+
| ЗаписатьJSON|WriteJSON|ПрочитатьJSON|ReadJSON|ПрочитатьДатуJSON|ReadJSONDate|ЗаписатьДатуJSON|WriteJSONDate
|
|
49
|
+
| ЗаписьЖурналаРегистрации|WriteLogEvent|ПолучитьИспользованиеЖурналаРегистрации|GetEventLogUsing|УстановитьИспользованиеЖурналаРегистрации|SetEventLogUsing|ПредставлениеСобытияЖурналаРегистрации|EventLogEventPresentation|ВыгрузитьЖурналРегистрации|UnloadEventLog|ПолучитьЗначенияОтбораЖурналаРегистрации|GetEventLogFilterValues|УстановитьИспользованиеСобытияЖурналаРегистрации|SetEventLogEventUse|ПолучитьИспользованиеСобытияЖурналаРегистрации|GetEventLogEventUse|СкопироватьЖурналРегистрации|CopyEventLog|ОчиститьЖурналРегистрации|ClearEventLog
|
|
50
|
+
| ЗначениеВДанныеФормы|ValueToFormData|ДанныеФормыВЗначение|FormDataToValue|КопироватьДанныеФормы|CopyFormData|УстановитьСоответствиеОбъектаИФормы|SetObjectAndFormConformity|ПолучитьСоответствиеОбъектаИФормы|GetObjectAndFormConformity
|
|
51
|
+
| ПолучитьФункциональнуюОпцию|GetFunctionalOption|ПолучитьФункциональнуюОпциюИнтерфейса|GetInterfaceFunctionalOption|УстановитьПараметрыФункциональныхОпцийИнтерфейса|SetInterfaceFunctionalOptionParameters|ПолучитьПараметрыФункциональныхОпцийИнтерфейса|GetInterfaceFunctionalOptionParameters|ОбновитьИнтерфейс|RefreshInterface
|
|
52
|
+
| УстановитьРасширениеРаботыСКриптографией|InstallCryptoExtension|НачатьУстановкуРасширенияРаботыСКриптографией|BeginInstallCryptoExtension|ПодключитьРасширениеРаботыСКриптографией|AttachCryptoExtension|НачатьПодключениеРасширенияРаботыСКриптографией|BeginAttachingCryptoExtension
|
|
53
|
+
| УстановитьСоставСтандартногоИнтерфейсаOData|SetStandardODataInterfaceContent|ПолучитьСоставСтандартногоИнтерфейсаOData|GetStandardODataInterfaceContent
|
|
54
|
+
| Мин|Min|Макс|Max|ОписаниеОшибки|ErrorDescription|Вычислить|Eval|ИнформацияОбОшибке|ErrorInfo|Base64Значение|Base64Value|Base64Строка|Base64String|ЗаполнитьЗначенияСвойств|FillPropertyValues|ЗначениеЗаполнено|ValueIsFilled|ПолучитьПредставленияНавигационныхСсылок|GetURLsPresentations|НайтиОкноПоНавигационнойСсылке|FindWindowByURL|ПолучитьОкна|GetWindows|ПерейтиПоНавигационнойСсылке|GotoURL|ПолучитьНавигационнуюСсылку|GetURL|ПолучитьДопустимыеКодыЛокализации|GetAvailableLocaleCodes|ПолучитьНавигационнуюСсылкуИнформационнойБазы|GetInfoBaseURL|ПредставлениеКодаЛокализации|LocaleCodePresentation|ПолучитьДопустимыеЧасовыеПояса|GetAvailableTimeZones|ПредставлениеЧасовогоПояса|TimeZonePresentation|ТекущаяУниверсальнаяДата|CurrentUniversalDate|ТекущаяУниверсальнаяДатаВМиллисекундах|CurrentUniversalDateInMilliseconds|МестноеВремя|ToLocalTime|УниверсальноеВремя|ToUniversalTime|ЧасовойПояс|TimeZone|СмещениеЛетнегоВремени|DaylightTimeOffset|СмещениеСтандартногоВремени|StandardTimeOffset|КодироватьСтроку|EncodeString|РаскодироватьСтроку|DecodeString|Найти|Find
|
|
55
|
+
| ПередНачаломРаботыСистемы|BeforeStart|ПриНачалеРаботыСистемы|OnStart|ПередЗавершениемРаботыСистемы|BeforeExit|ПриЗавершенииРаботыСистемы|OnExit|ОбработкаВнешнегоСобытия|ExternEventProcessing|УстановкаПараметровСеанса|SessionParametersSetting|ПриИзмененииПараметровЭкрана|OnChangeDisplaySettings
|
|
56
|
+
| WSСсылки|WSReferences|БиблиотекаКартинок|PictureLib|БиблиотекаМакетовОформленияКомпоновкиДанных|DataCompositionAppearanceTemplateLib|БиблиотекаСтилей|StyleLib|БизнесПроцессы|BusinessProcesses|ВнешниеИсточникиДанных|ExternalDataSources|ВнешниеОбработки|ExternalDataProcessors|ВнешниеОтчеты|ExternalReports|Документы|Documents|ДоставляемыеУведомления|DeliverableNotifications|ЖурналыДокументов|DocumentJournals|Задачи|Tasks|ИспользованиеРабочейДаты|WorkingDateUse|ИсторияРаботыПользователя|UserWorkHistory|Константы|Constants|КритерииОтбора|FilterCriteria|Метаданные|Metadata|Обработки|DataProcessors|ОтправкаДоставляемыхУведомлений|DeliverableNotificationSend|Отчеты|Reports|ПараметрыСеанса|SessionParameters|Перечисления|Enums|ПланыВидовРасчета|ChartsOfCalculationTypes|ПланыВидовХарактеристик|ChartsOfCharacteristicTypes|ПланыОбмена|ExchangePlans|ПланыСчетов|ChartsOfAccounts|ПолнотекстовыйПоиск|FullTextSearch|ПользователиИнформационнойБазы|InfoBaseUsers|Последовательности|Sequences|РасширенияКонфигурации|ConfigurationExtensions|РегистрыБухгалтерии|AccountingRegisters|РегистрыНакопления|AccumulationRegisters|РегистрыРасчета|CalculationRegisters|РегистрыСведений|InformationRegisters|РегламентныеЗадания|ScheduledJobs|СериализаторXDTO|XDTOSerializer|Справочники|Catalogs|СредстваГеопозиционирования|LocationTools|СредстваКриптографии|CryptoToolsManager|СредстваМультимедиа|MultimediaTools|СредстваПочты|MailTools|СредстваТелефонии|TelephonyTools|ФабрикаXDTO|XDTOFactory|ФоновыеЗадания|BackgroundJobs|ХранилищаНастроек
|
|
57
|
+
| ГлавныйИнтерфейс|MainInterface|ГлавныйСтиль|MainStyle|ПараметрЗапуска|LaunchParameter|РабочаяДата|WorkingDate|SettingsStorages|ХранилищеВариантовОтчетов|ReportsVariantsStorage|ХранилищеНастроекДанныхФорм|FormDataSettingsStorage|ХранилищеОбщихНастроек|CommonSettingsStorage|ХранилищеПользовательскихНастроекДинамическихСписков|DynamicListsUserSettingsStorage|ХранилищеПользовательскихНастроекОтчетов|ReportsUserSettingsStorage|ХранилищеСистемныхНастроек|SystemSettingsStorage
|
|
58
|
+
| Если|If|ИначеЕсли|ElsIf|Иначе|Else|КонецЕсли|EndIf|Тогда|Then
|
|
59
|
+
| Неопределено|Undefined|Истина|True|Ложь|False|NULL
|
|
60
|
+
)\s*(?=\()/ix
|
|
61
|
+
|
|
62
|
+
state :root do
|
|
63
|
+
rule %r/\n/, Text
|
|
64
|
+
rule %r/[^\S\n]+/, Text
|
|
65
|
+
rule %r(//.*$), Comment::Single
|
|
66
|
+
rule %r/[\[\]:(),;]/, Punctuation
|
|
67
|
+
rule %r/(?<=[^\wа-яё]|^)\&.*$/, Keyword::Declaration
|
|
68
|
+
rule %r/[-+\/*%=<>.?&]/, Operator
|
|
69
|
+
rule %r/(?<=[^\wа-яё]|^)\#.*$/, Keyword::Declaration
|
|
70
|
+
rule KEYWORDS, Keyword
|
|
71
|
+
rule BUILTINS, Name::Builtin
|
|
72
|
+
rule %r/[\wа-яё][\wа-яё]*/i, Name::Variable
|
|
73
|
+
|
|
74
|
+
#literals
|
|
75
|
+
rule %r/\b((\h{8}-(\h{4}-){3}\h{12})|\d+\.?\d*)\b/, Literal::Number
|
|
76
|
+
rule %r/\'.*\'/, Literal::Date
|
|
77
|
+
rule %r/".*?("|$)/, Literal::String::Single
|
|
78
|
+
rule %r/(?<=[^\wа-яё]|^)\|((?!\"\").)*?(\"|$)/, Literal::String
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class C < RegexLexer
|
|
7
|
+
tag 'c'
|
|
8
|
+
filenames '*.c', '*.h', '*.idc'
|
|
9
|
+
mimetypes 'text/x-chdr', 'text/x-csrc'
|
|
10
|
+
|
|
11
|
+
title "C"
|
|
12
|
+
desc "The C programming language"
|
|
13
|
+
|
|
14
|
+
# optional comment or whitespace
|
|
15
|
+
ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
|
|
16
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
17
|
+
|
|
18
|
+
def self.keywords
|
|
19
|
+
@keywords ||= Set.new %w(
|
|
20
|
+
auto break case const continue default do else enum extern
|
|
21
|
+
for goto if register restricted return sizeof static struct
|
|
22
|
+
switch typedef union volatile virtual while
|
|
23
|
+
|
|
24
|
+
_Alignas _Alignof _Atomic _Generic _Imaginary
|
|
25
|
+
_Noreturn _Static_assert _Thread_local
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.keywords_type
|
|
30
|
+
@keywords_type ||= Set.new %w(
|
|
31
|
+
int long float short double char unsigned signed void
|
|
32
|
+
|
|
33
|
+
jmp_buf FILE DIR div_t ldiv_t mbstate_t sig_atomic_t fpos_t
|
|
34
|
+
clock_t time_t va_list size_t ssize_t off_t wchar_t ptrdiff_t
|
|
35
|
+
wctrans_t wint_t wctype_t
|
|
36
|
+
|
|
37
|
+
_Bool _Complex int8_t int16_t int32_t int64_t
|
|
38
|
+
uint8_t uint16_t uint32_t uint64_t int_least8_t
|
|
39
|
+
int_least16_t int_least32_t int_least64_t
|
|
40
|
+
uint_least8_t uint_least16_t uint_least32_t
|
|
41
|
+
uint_least64_t int_fast8_t int_fast16_t int_fast32_t
|
|
42
|
+
int_fast64_t uint_fast8_t uint_fast16_t uint_fast32_t
|
|
43
|
+
uint_fast64_t intptr_t uintptr_t intmax_t
|
|
44
|
+
uintmax_t
|
|
45
|
+
|
|
46
|
+
char16_t char32_t
|
|
47
|
+
)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.reserved
|
|
51
|
+
@reserved ||= Set.new %w(
|
|
52
|
+
__asm __int8 __based __except __int16 __stdcall __cdecl
|
|
53
|
+
__fastcall __int32 __declspec __finally __int61 __try __leave
|
|
54
|
+
inline _inline __inline naked _naked __naked restrict _restrict
|
|
55
|
+
__restrict thread _thread __thread typename _typename __typename
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def self.builtins
|
|
60
|
+
@builtins ||= []
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
start { push :bol }
|
|
64
|
+
|
|
65
|
+
state :expr_bol do
|
|
66
|
+
mixin :inline_whitespace
|
|
67
|
+
|
|
68
|
+
rule %r/#if\s0/, Comment, :if_0
|
|
69
|
+
rule %r/#/, Comment::Preproc, :macro
|
|
70
|
+
|
|
71
|
+
rule(//) { pop! }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# :expr_bol is the same as :bol but without labels, since
|
|
75
|
+
# labels can only appear at the beginning of a statement.
|
|
76
|
+
state :bol do
|
|
77
|
+
rule %r/#{id}:(?!:)/, Name::Label
|
|
78
|
+
mixin :expr_bol
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
state :inline_whitespace do
|
|
82
|
+
rule %r/[ \t\r]+/, Text
|
|
83
|
+
rule %r/\\\n/, Text # line continuation
|
|
84
|
+
rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
state :whitespace do
|
|
88
|
+
rule %r/\n+/m, Text, :bol
|
|
89
|
+
rule %r(//(\\.|.)*?$), Comment::Single, :bol
|
|
90
|
+
mixin :inline_whitespace
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
state :expr_whitespace do
|
|
94
|
+
rule %r/\n+/m, Text, :expr_bol
|
|
95
|
+
mixin :whitespace
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
state :statements do
|
|
99
|
+
mixin :whitespace
|
|
100
|
+
rule %r/(u8|u|U|L)?"/, Str, :string
|
|
101
|
+
rule %r((u8|u|U|L)?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
|
102
|
+
rule %r((\d+[.]\d*|[.]?\d+)e[+-]?\d+[lu]*)i, Num::Float
|
|
103
|
+
rule %r(\d+e[+-]?\d+[lu]*)i, Num::Float
|
|
104
|
+
rule %r/0x[0-9a-f]+[lu]*/i, Num::Hex
|
|
105
|
+
rule %r/0[0-7]+[lu]*/i, Num::Oct
|
|
106
|
+
rule %r/\d+[lu]*/i, Num::Integer
|
|
107
|
+
rule %r(\*/), Error
|
|
108
|
+
rule %r([~!%^&*+=\|?:<>/-]), Operator
|
|
109
|
+
rule %r/[()\[\],.;]/, Punctuation
|
|
110
|
+
rule %r/\bcase\b/, Keyword, :case
|
|
111
|
+
rule %r/(?:true|false|NULL)\b/, Name::Builtin
|
|
112
|
+
rule id do |m|
|
|
113
|
+
name = m[0]
|
|
114
|
+
|
|
115
|
+
if self.class.keywords.include? name
|
|
116
|
+
token Keyword
|
|
117
|
+
elsif self.class.keywords_type.include? name
|
|
118
|
+
token Keyword::Type
|
|
119
|
+
elsif self.class.reserved.include? name
|
|
120
|
+
token Keyword::Reserved
|
|
121
|
+
elsif self.class.builtins.include? name
|
|
122
|
+
token Name::Builtin
|
|
123
|
+
else
|
|
124
|
+
token Name
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
state :case do
|
|
130
|
+
rule %r/:/, Punctuation, :pop!
|
|
131
|
+
mixin :statements
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
state :root do
|
|
135
|
+
mixin :expr_whitespace
|
|
136
|
+
rule %r(
|
|
137
|
+
([\w*\s]+?[\s*]) # return arguments
|
|
138
|
+
(#{id}) # function name
|
|
139
|
+
(\s*\([^;]*?\)) # signature
|
|
140
|
+
(#{ws}?)({|;) # open brace or semicolon
|
|
141
|
+
)mx do |m|
|
|
142
|
+
# TODO: do this better.
|
|
143
|
+
recurse m[1]
|
|
144
|
+
token Name::Function, m[2]
|
|
145
|
+
recurse m[3]
|
|
146
|
+
recurse m[4]
|
|
147
|
+
token Punctuation, m[5]
|
|
148
|
+
if m[5] == ?{
|
|
149
|
+
push :function
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
rule %r/\{/, Punctuation, :function
|
|
153
|
+
mixin :statements
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
state :function do
|
|
157
|
+
mixin :whitespace
|
|
158
|
+
mixin :statements
|
|
159
|
+
rule %r/;/, Punctuation
|
|
160
|
+
rule %r/{/, Punctuation, :function
|
|
161
|
+
rule %r/}/, Punctuation, :pop!
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
state :string do
|
|
165
|
+
rule %r/"/, Str, :pop!
|
|
166
|
+
rule %r/\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
|
|
167
|
+
rule %r/[^\\"\n]+/, Str
|
|
168
|
+
rule %r/\\\n/, Str
|
|
169
|
+
rule %r/\\/, Str # stray backslash
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
state :macro do
|
|
173
|
+
# NB: pop! goes back to :bol
|
|
174
|
+
rule %r/\n/, Comment::Preproc, :pop!
|
|
175
|
+
rule %r([^/\n\\]+), Comment::Preproc
|
|
176
|
+
rule %r/\\./m, Comment::Preproc
|
|
177
|
+
mixin :inline_whitespace
|
|
178
|
+
rule %r(/), Comment::Preproc
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
state :if_0 do
|
|
182
|
+
# NB: no \b here, to cover #ifdef and #ifndef
|
|
183
|
+
rule %r/^\s*#if/, Comment, :if_0
|
|
184
|
+
rule %r/^\s*#\s*el(?:se|if)/, Comment, :pop!
|
|
185
|
+
rule %r/^\s*#\s*endif\b.*?(?<!\\)\n/m, Comment, :pop!
|
|
186
|
+
rule %r/.*?\n/, Comment
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|