rouge 3.2.0 → 3.18.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/Gemfile +17 -3
- data/bin/rougify +1 -0
- data/lib/rouge.rb +67 -43
- data/lib/rouge/cli.rb +84 -17
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/apex +9 -0
- data/lib/rouge/demos/armasm +12 -0
- data/lib/rouge/demos/batchfile +3 -0
- data/lib/rouge/demos/bbcbasic +6 -0
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/clean +6 -0
- data/lib/rouge/demos/cmhg +8 -0
- data/lib/rouge/demos/csvs +8 -0
- data/lib/rouge/demos/cuda +11 -0
- data/lib/rouge/demos/cypher +5 -0
- data/lib/rouge/demos/cython +6 -0
- data/lib/rouge/demos/datastudio +21 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/eex +1 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/gdscript +18 -0
- data/lib/rouge/demos/ghc-cmm +23 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/haxe +5 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/hql +5 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/liquid +0 -1
- 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/mason +22 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/minizinc +23 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/nasm +6 -6
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/demos/openedge +4 -0
- data/lib/rouge/demos/opentype_feature_file +6 -0
- data/lib/rouge/demos/plist +1 -132
- data/lib/rouge/demos/powershell +12 -48
- data/lib/rouge/demos/q +6 -0
- data/lib/rouge/demos/reasonml +12 -0
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/robot_framework +27 -0
- data/lib/rouge/demos/sas +13 -0
- data/lib/rouge/demos/slice +10 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/sparql +6 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/terraform +0 -15
- data/lib/rouge/demos/ttcn3 +6 -0
- data/lib/rouge/demos/vcl +12 -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/yang +17 -0
- data/lib/rouge/formatter.rb +39 -2
- data/lib/rouge/formatters/html.rb +21 -2
- data/lib/rouge/formatters/html_inline.rb +1 -0
- data/lib/rouge/formatters/html_legacy.rb +1 -0
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +7 -11
- data/lib/rouge/formatters/html_pygments.rb +2 -0
- data/lib/rouge/formatters/html_table.rb +21 -31
- data/lib/rouge/formatters/null.rb +1 -0
- data/lib/rouge/formatters/terminal256.rb +23 -5
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guesser.rb +2 -0
- data/lib/rouge/guessers/disambiguation.rb +35 -0
- data/lib/rouge/guessers/filename.rb +2 -0
- data/lib/rouge/guessers/glob_mapping.rb +3 -1
- data/lib/rouge/guessers/mimetype.rb +2 -0
- data/lib/rouge/guessers/modeline.rb +3 -1
- data/lib/rouge/guessers/source.rb +3 -1
- data/lib/rouge/guessers/util.rb +2 -0
- data/lib/rouge/lexer.rb +71 -15
- data/lib/rouge/lexers/abap.rb +13 -11
- data/lib/rouge/lexers/actionscript.rb +35 -34
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +13 -15
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/apex.rb +126 -0
- data/lib/rouge/lexers/apiblueprint.rb +2 -0
- data/lib/rouge/lexers/apple_script.rb +17 -14
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +26 -25
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +6 -4
- data/lib/rouge/lexers/bpf.rb +118 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +13 -12
- data/lib/rouge/lexers/c.rb +35 -57
- data/lib/rouge/lexers/ceylon.rb +7 -34
- data/lib/rouge/lexers/cfscript.rb +27 -26
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/clojure.rb +15 -14
- data/lib/rouge/lexers/cmake.rb +16 -14
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +90 -49
- data/lib/rouge/lexers/common_lisp.rb +39 -38
- data/lib/rouge/lexers/conf.rb +7 -6
- data/lib/rouge/lexers/console.rb +92 -38
- data/lib/rouge/lexers/coq.rb +27 -23
- data/lib/rouge/lexers/cpp.rb +24 -13
- data/lib/rouge/lexers/crystal.rb +71 -70
- data/lib/rouge/lexers/csharp.rb +29 -29
- data/lib/rouge/lexers/css.rb +24 -23
- data/lib/rouge/lexers/csvs.rb +44 -0
- data/lib/rouge/lexers/cuda.rb +35 -0
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +64 -63
- data/lib/rouge/lexers/dart.rb +34 -33
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/diff.rb +10 -4
- data/lib/rouge/lexers/digdag.rb +3 -1
- data/lib/rouge/lexers/docker.rb +12 -11
- data/lib/rouge/lexers/dot.rb +19 -18
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/eex.rb +52 -0
- data/lib/rouge/lexers/eiffel.rb +21 -20
- data/lib/rouge/lexers/elixir.rb +52 -36
- data/lib/rouge/lexers/elm.rb +30 -29
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +5 -4
- data/lib/rouge/lexers/erlang.rb +1 -0
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +41 -40
- data/lib/rouge/lexers/fortran.rb +34 -32
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +33 -31
- data/lib/rouge/lexers/gdscript.rb +171 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/gherkin.rb +17 -14
- data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
- data/lib/rouge/lexers/glsl.rb +2 -5
- data/lib/rouge/lexers/go.rb +3 -2
- data/lib/rouge/lexers/gradle.rb +1 -0
- data/lib/rouge/lexers/graphql.rb +78 -60
- data/lib/rouge/lexers/groovy.rb +24 -25
- data/lib/rouge/lexers/hack.rb +2 -1
- data/lib/rouge/lexers/haml.rb +26 -29
- data/lib/rouge/lexers/handlebars.rb +32 -20
- data/lib/rouge/lexers/haskell.rb +67 -65
- data/lib/rouge/lexers/haxe.rb +246 -0
- data/lib/rouge/lexers/hcl.rb +26 -25
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/hql.rb +139 -0
- data/lib/rouge/lexers/html.rb +33 -31
- data/lib/rouge/lexers/http.rb +10 -9
- data/lib/rouge/lexers/hylang.rb +15 -14
- data/lib/rouge/lexers/idlang.rb +34 -32
- data/lib/rouge/lexers/igorpro.rb +32 -31
- data/lib/rouge/lexers/ini.rb +13 -12
- data/lib/rouge/lexers/io.rb +10 -9
- data/lib/rouge/lexers/irb.rb +6 -5
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/java.rb +29 -25
- data/lib/rouge/lexers/javascript.rb +58 -61
- data/lib/rouge/lexers/jinja.rb +39 -22
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/json.rb +54 -11
- data/lib/rouge/lexers/json_doc.rb +8 -5
- data/lib/rouge/lexers/jsonnet.rb +19 -18
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +18 -16
- data/lib/rouge/lexers/julia.rb +182 -58
- data/lib/rouge/lexers/kotlin.rb +78 -26
- data/lib/rouge/lexers/lasso.rb +54 -58
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/liquid.rb +116 -118
- data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
- data/lib/rouge/lexers/literate_haskell.rb +6 -5
- data/lib/rouge/lexers/llvm.rb +66 -49
- data/lib/rouge/lexers/lua.rb +43 -4
- data/lib/rouge/lexers/lua/builtins.rb +2 -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 +57 -34
- data/lib/rouge/lexers/markdown.rb +67 -39
- 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 +26 -17
- data/lib/rouge/lexers/matlab/builtins.rb +4 -4
- data/lib/rouge/lexers/minizinc.rb +87 -0
- data/lib/rouge/lexers/moonscript.rb +4 -3
- data/lib/rouge/lexers/mosel.rb +64 -63
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +19 -18
- data/lib/rouge/lexers/nasm.rb +43 -169
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +15 -14
- data/lib/rouge/lexers/nim.rb +4 -2
- data/lib/rouge/lexers/nix.rb +44 -43
- data/lib/rouge/lexers/objective_c.rb +5 -178
- 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 +29 -64
- 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 +6 -5
- data/lib/rouge/lexers/perl.rb +102 -67
- data/lib/rouge/lexers/php.rb +91 -53
- data/lib/rouge/lexers/php/builtins.rb +183 -174
- data/lib/rouge/lexers/plain_text.rb +2 -1
- data/lib/rouge/lexers/plist.rb +16 -14
- data/lib/rouge/lexers/pony.rb +21 -20
- data/lib/rouge/lexers/powershell.rb +190 -638
- data/lib/rouge/lexers/praat.rb +76 -75
- data/lib/rouge/lexers/prolog.rb +27 -19
- data/lib/rouge/lexers/prometheus.rb +32 -30
- data/lib/rouge/lexers/properties.rb +13 -12
- data/lib/rouge/lexers/protobuf.rb +23 -22
- data/lib/rouge/lexers/puppet.rb +33 -32
- data/lib/rouge/lexers/python.rb +124 -99
- data/lib/rouge/lexers/q.rb +17 -14
- data/lib/rouge/lexers/qml.rb +13 -12
- data/lib/rouge/lexers/r.rb +13 -13
- data/lib/rouge/lexers/racket.rb +47 -22
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/rego.rb +45 -0
- data/lib/rouge/lexers/robot_framework.rb +249 -0
- data/lib/rouge/lexers/ruby.rb +88 -71
- data/lib/rouge/lexers/rust.rb +45 -44
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +9 -8
- data/lib/rouge/lexers/sass/common.rb +41 -40
- data/lib/rouge/lexers/scala.rb +67 -40
- data/lib/rouge/lexers/scheme.rb +19 -18
- data/lib/rouge/lexers/scss.rb +4 -3
- data/lib/rouge/lexers/sed.rb +31 -30
- data/lib/rouge/lexers/shell.rb +67 -55
- data/lib/rouge/lexers/sieve.rb +10 -9
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/slim.rb +27 -26
- data/lib/rouge/lexers/smalltalk.rb +34 -33
- data/lib/rouge/lexers/smarty.rb +20 -19
- data/lib/rouge/lexers/sml.rb +68 -67
- data/lib/rouge/lexers/solidity.rb +185 -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 +47 -26
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +49 -44
- data/lib/rouge/lexers/tap.rb +22 -20
- data/lib/rouge/lexers/tcl.rb +28 -27
- data/lib/rouge/lexers/terraform.rb +37 -13
- data/lib/rouge/lexers/tex.rb +20 -19
- data/lib/rouge/lexers/toml.rb +59 -20
- data/lib/rouge/lexers/tsx.rb +1 -0
- data/lib/rouge/lexers/ttcn3.rb +119 -0
- data/lib/rouge/lexers/tulip.rb +38 -36
- data/lib/rouge/lexers/turtle.rb +36 -38
- data/lib/rouge/lexers/twig.rb +1 -0
- data/lib/rouge/lexers/typescript.rb +12 -0
- data/lib/rouge/lexers/typescript/common.rb +1 -0
- data/lib/rouge/lexers/vala.rb +19 -18
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/vb.rb +28 -27
- data/lib/rouge/lexers/verilog.rb +27 -28
- data/lib/rouge/lexers/vhdl.rb +12 -11
- data/lib/rouge/lexers/viml.rb +15 -14
- data/lib/rouge/lexers/viml/keywords.rb +2 -0
- data/lib/rouge/lexers/vue.rb +15 -10
- data/lib/rouge/lexers/wollok.rb +27 -26
- data/lib/rouge/lexers/xml.rb +18 -21
- 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 +64 -61
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/plugins/redcarpet.rb +9 -2
- data/lib/rouge/regex_lexer.rb +27 -25
- data/lib/rouge/template_lexer.rb +1 -0
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/text_analyzer.rb +1 -0
- data/lib/rouge/theme.rb +5 -0
- data/lib/rouge/themes/base16.rb +1 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/colorful.rb +1 -0
- data/lib/rouge/themes/github.rb +1 -0
- data/lib/rouge/themes/gruvbox.rb +1 -0
- data/lib/rouge/themes/igor_pro.rb +1 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/molokai.rb +1 -0
- data/lib/rouge/themes/monokai.rb +1 -0
- data/lib/rouge/themes/monokai_sublime.rb +4 -1
- data/lib/rouge/themes/pastie.rb +2 -1
- data/lib/rouge/themes/thankful_eyes.rb +2 -1
- data/lib/rouge/themes/tulip.rb +2 -1
- data/lib/rouge/token.rb +31 -22
- data/lib/rouge/util.rb +3 -2
- data/lib/rouge/version.rb +2 -1
- data/rouge.gemspec +6 -3
- metadata +130 -8
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
|
@@ -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
|
data/lib/rouge/lexers/biml.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Rouge
|
|
2
4
|
module Lexers
|
|
3
5
|
load_lexer 'xml.rb'
|
|
@@ -24,16 +26,16 @@ module Rouge
|
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
state :directive_as_csharp do
|
|
27
|
-
rule /\s*#>\s*/m, Name::Tag, :pop!
|
|
29
|
+
rule %r/\s*#>\s*/m, Name::Tag, :pop!
|
|
28
30
|
rule %r(.*?(?=\s*#>\s*))m do
|
|
29
31
|
delegate CSharp
|
|
30
32
|
end
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
state :directive_tag do
|
|
34
|
-
rule /\s+/m, Text
|
|
35
|
-
rule /[\w.:-]+\s*=/m, Name::Attribute, :attr
|
|
36
|
-
rule
|
|
36
|
+
rule %r/\s+/m, Text
|
|
37
|
+
rule %r/[\w.:-]+\s*=/m, Name::Attribute, :attr
|
|
38
|
+
rule %r/\w+\s*/m, Name::Attribute
|
|
37
39
|
rule %r(/?\s*#>), Name::Tag, :pop!
|
|
38
40
|
end
|
|
39
41
|
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
|
data/lib/rouge/lexers/bsl.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -59,22 +60,22 @@ module Rouge
|
|
|
59
60
|
)\s*(?=\()/ix
|
|
60
61
|
|
|
61
62
|
state :root do
|
|
62
|
-
rule /\n/, Text
|
|
63
|
-
rule /[^\S\n]+/, Text
|
|
64
|
-
rule
|
|
65
|
-
rule /[\[\]:(),;]/, Punctuation
|
|
66
|
-
rule /(?<=[^\wа-яё]|^)\&.*$/, Keyword::Declaration
|
|
67
|
-
rule /[
|
|
68
|
-
rule /(?<=[^\wа-яё]|^)\#.*$/, Keyword::Declaration
|
|
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
|
|
69
70
|
rule KEYWORDS, Keyword
|
|
70
71
|
rule BUILTINS, Name::Builtin
|
|
71
|
-
rule /[\wа-яё
|
|
72
|
+
rule %r/[\wа-яё][\wа-яё]*/i, Name::Variable
|
|
72
73
|
|
|
73
74
|
#literals
|
|
74
|
-
rule /\b((\h{8}-(\h{4}-){3}\h{12})|\d+\.?\d*)\b/, Literal::Number
|
|
75
|
-
rule /\'.*\'/, Literal::Date
|
|
76
|
-
rule /".*?("|$)/, Literal::String::Single
|
|
77
|
-
rule /(?<=[^\wа-яё]|^)\|((?!\"\").)*?(\"|$)/, Literal::String
|
|
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
|
|
78
79
|
end
|
|
79
80
|
end
|
|
80
81
|
end
|
data/lib/rouge/lexers/c.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -64,8 +65,8 @@ module Rouge
|
|
|
64
65
|
state :expr_bol do
|
|
65
66
|
mixin :inline_whitespace
|
|
66
67
|
|
|
67
|
-
rule /#if\s0/, Comment, :if_0
|
|
68
|
-
rule /#/, Comment::Preproc, :macro
|
|
68
|
+
rule %r/#if\s0/, Comment, :if_0
|
|
69
|
+
rule %r/#/, Comment::Preproc, :macro
|
|
69
70
|
|
|
70
71
|
rule(//) { pop! }
|
|
71
72
|
end
|
|
@@ -73,41 +74,41 @@ module Rouge
|
|
|
73
74
|
# :expr_bol is the same as :bol but without labels, since
|
|
74
75
|
# labels can only appear at the beginning of a statement.
|
|
75
76
|
state :bol do
|
|
76
|
-
rule /#{id}:(?!:)/, Name::Label
|
|
77
|
+
rule %r/#{id}:(?!:)/, Name::Label
|
|
77
78
|
mixin :expr_bol
|
|
78
79
|
end
|
|
79
80
|
|
|
80
81
|
state :inline_whitespace do
|
|
81
|
-
rule /[ \t\r]+/, Text
|
|
82
|
-
rule /\\\n/, Text # line continuation
|
|
82
|
+
rule %r/[ \t\r]+/, Text
|
|
83
|
+
rule %r/\\\n/, Text # line continuation
|
|
83
84
|
rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
|
|
84
85
|
end
|
|
85
86
|
|
|
86
87
|
state :whitespace do
|
|
87
|
-
rule /\n+/m, Text, :bol
|
|
88
|
+
rule %r/\n+/m, Text, :bol
|
|
88
89
|
rule %r(//(\\.|.)*?$), Comment::Single, :bol
|
|
89
90
|
mixin :inline_whitespace
|
|
90
91
|
end
|
|
91
92
|
|
|
92
93
|
state :expr_whitespace do
|
|
93
|
-
rule /\n+/m, Text, :expr_bol
|
|
94
|
+
rule %r/\n+/m, Text, :expr_bol
|
|
94
95
|
mixin :whitespace
|
|
95
96
|
end
|
|
96
97
|
|
|
97
98
|
state :statements do
|
|
98
99
|
mixin :whitespace
|
|
99
|
-
rule /(u8|u|U|L)?"/, Str, :string
|
|
100
|
+
rule %r/(u8|u|U|L)?"/, Str, :string
|
|
100
101
|
rule %r((u8|u|U|L)?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
|
101
102
|
rule %r((\d+[.]\d*|[.]?\d+)e[+-]?\d+[lu]*)i, Num::Float
|
|
102
103
|
rule %r(\d+e[+-]?\d+[lu]*)i, Num::Float
|
|
103
|
-
rule /0x[0-9a-f]+[lu]*/i, Num::Hex
|
|
104
|
-
rule /0[0-7]+[lu]*/i, Num::Oct
|
|
105
|
-
rule /\d+[lu]*/i, Num::Integer
|
|
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
|
|
106
107
|
rule %r(\*/), Error
|
|
107
108
|
rule %r([~!%^&*+=\|?:<>/-]), Operator
|
|
108
|
-
rule /[()\[\]
|
|
109
|
-
rule /\bcase\b/, Keyword, :case
|
|
110
|
-
rule /(?:true|false|NULL)\b/, Name::Builtin
|
|
109
|
+
rule %r/[()\[\],.;]/, Punctuation
|
|
110
|
+
rule %r/\bcase\b/, Keyword, :case
|
|
111
|
+
rule %r/(?:true|false|NULL)\b/, Name::Builtin
|
|
111
112
|
rule id do |m|
|
|
112
113
|
name = m[0]
|
|
113
114
|
|
|
@@ -126,19 +127,17 @@ module Rouge
|
|
|
126
127
|
end
|
|
127
128
|
|
|
128
129
|
state :case do
|
|
129
|
-
rule /:/, Punctuation, :pop!
|
|
130
|
+
rule %r/:/, Punctuation, :pop!
|
|
130
131
|
mixin :statements
|
|
131
132
|
end
|
|
132
133
|
|
|
133
134
|
state :root do
|
|
134
135
|
mixin :expr_whitespace
|
|
135
|
-
|
|
136
|
-
# functions
|
|
137
136
|
rule %r(
|
|
138
137
|
([\w*\s]+?[\s*]) # return arguments
|
|
139
138
|
(#{id}) # function name
|
|
140
139
|
(\s*\([^;]*?\)) # signature
|
|
141
|
-
(#{ws})({)
|
|
140
|
+
(#{ws}?)({|;) # open brace or semicolon
|
|
142
141
|
)mx do |m|
|
|
143
142
|
# TODO: do this better.
|
|
144
143
|
recurse m[1]
|
|
@@ -146,66 +145,45 @@ module Rouge
|
|
|
146
145
|
recurse m[3]
|
|
147
146
|
recurse m[4]
|
|
148
147
|
token Punctuation, m[5]
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
# function declarations
|
|
153
|
-
rule %r(
|
|
154
|
-
([\w*\s]+?[\s*]) # return arguments
|
|
155
|
-
(#{id}) # function name
|
|
156
|
-
(\s*\([^;]*?\)) # signature
|
|
157
|
-
(#{ws})(;) # semicolon
|
|
158
|
-
)mx do |m|
|
|
159
|
-
# TODO: do this better.
|
|
160
|
-
recurse m[1]
|
|
161
|
-
token Name::Function, m[2]
|
|
162
|
-
recurse m[3]
|
|
163
|
-
recurse m[4]
|
|
164
|
-
token Punctuation, m[5]
|
|
165
|
-
push :statement
|
|
148
|
+
if m[5] == ?{
|
|
149
|
+
push :function
|
|
150
|
+
end
|
|
166
151
|
end
|
|
167
|
-
|
|
168
|
-
rule(//) { push :statement }
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
state :statement do
|
|
172
|
-
rule /;/, Punctuation, :pop!
|
|
173
|
-
mixin :expr_whitespace
|
|
152
|
+
rule %r/\{/, Punctuation, :function
|
|
174
153
|
mixin :statements
|
|
175
|
-
rule /[{}]/, Punctuation
|
|
176
154
|
end
|
|
177
155
|
|
|
178
156
|
state :function do
|
|
179
157
|
mixin :whitespace
|
|
180
158
|
mixin :statements
|
|
181
|
-
rule /;/, Punctuation
|
|
182
|
-
rule /{/, Punctuation, :function
|
|
183
|
-
rule /}/, Punctuation, :pop!
|
|
159
|
+
rule %r/;/, Punctuation
|
|
160
|
+
rule %r/{/, Punctuation, :function
|
|
161
|
+
rule %r/}/, Punctuation, :pop!
|
|
184
162
|
end
|
|
185
163
|
|
|
186
164
|
state :string do
|
|
187
|
-
rule /"/, Str, :pop!
|
|
188
|
-
rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
|
|
189
|
-
rule /[^\\"\n]+/, Str
|
|
190
|
-
rule /\\\n/, Str
|
|
191
|
-
rule /\\/, Str # stray backslash
|
|
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
|
|
192
170
|
end
|
|
193
171
|
|
|
194
172
|
state :macro do
|
|
195
173
|
# NB: pop! goes back to :bol
|
|
196
|
-
rule /\n/, Comment::Preproc, :pop!
|
|
174
|
+
rule %r/\n/, Comment::Preproc, :pop!
|
|
197
175
|
rule %r([^/\n\\]+), Comment::Preproc
|
|
198
|
-
rule /\\./m, Comment::Preproc
|
|
176
|
+
rule %r/\\./m, Comment::Preproc
|
|
199
177
|
mixin :inline_whitespace
|
|
200
178
|
rule %r(/), Comment::Preproc
|
|
201
179
|
end
|
|
202
180
|
|
|
203
181
|
state :if_0 do
|
|
204
182
|
# NB: no \b here, to cover #ifdef and #ifndef
|
|
205
|
-
rule /^\s*#if/, Comment, :if_0
|
|
206
|
-
rule /^\s*#\s*el(?:se|if)/, Comment, :pop!
|
|
207
|
-
rule /^\s*#\s*endif\b.*?(?<!\\)\n/m, Comment, :pop!
|
|
208
|
-
rule /.*?\n/, Comment
|
|
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
|
|
209
187
|
end
|
|
210
188
|
end
|
|
211
189
|
end
|