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,151 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# See http://www.cs.cmu.edu/afs/andrew/course/15/411/ghc/share/doc/ghc/ext-core/core.pdf for a description of the syntax
|
|
5
|
+
# of the language and https://www.aosabook.org/en/ghc.html for a high level overview.
|
|
6
|
+
module Rouge
|
|
7
|
+
module Lexers
|
|
8
|
+
class GHCCore < RegexLexer
|
|
9
|
+
title "GHC Core"
|
|
10
|
+
desc "Intermediate representation of the GHC Haskell compiler."
|
|
11
|
+
tag 'ghc-core'
|
|
12
|
+
|
|
13
|
+
filenames '*.dump-simpl', '*.dump-cse', '*.dump-ds', '*.dump-spec'
|
|
14
|
+
|
|
15
|
+
state :root do
|
|
16
|
+
# sections
|
|
17
|
+
rule %r/^=====.*=====$/, Generic::Heading
|
|
18
|
+
# timestamps
|
|
19
|
+
rule %r/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+ UTC$/, Comment::Single
|
|
20
|
+
rule %r/^Result size of .+\s*.*}/, Comment::Multiline
|
|
21
|
+
rule %r/--.*$/, Comment::Single
|
|
22
|
+
|
|
23
|
+
rule %r/\[/, Comment::Special, :annotation
|
|
24
|
+
|
|
25
|
+
mixin :recursive_binding
|
|
26
|
+
mixin :ghc_rule
|
|
27
|
+
mixin :function
|
|
28
|
+
|
|
29
|
+
# rest is Text
|
|
30
|
+
rule %r/\s/m, Text
|
|
31
|
+
rule %r/.*/, Text
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
state :expression do
|
|
35
|
+
rule %r/[\n]+/, Text
|
|
36
|
+
rule %r/(?=^\S)/ do
|
|
37
|
+
pop!
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
rule %r/\s+/, Text, :expression_line
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
state :expression_line do
|
|
44
|
+
rule %r/ /, Text
|
|
45
|
+
|
|
46
|
+
mixin :common
|
|
47
|
+
|
|
48
|
+
rule %r/\n/, Text, :pop!
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
state :annotation do
|
|
52
|
+
rule %r/\]/, Comment::Special, :pop!
|
|
53
|
+
rule %r/\[/, Comment::Special, :annotation
|
|
54
|
+
rule %r/[^\[\]]+/, Comment::Special
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
state :common do
|
|
58
|
+
# array, e.g. '[]' or '[Char]'
|
|
59
|
+
rule %r/\[[^=]*\]/, Keyword::Type
|
|
60
|
+
|
|
61
|
+
rule %r/\[/, Comment::Special, :annotation
|
|
62
|
+
|
|
63
|
+
mixin :literal
|
|
64
|
+
mixin :constants
|
|
65
|
+
mixin :punctuation
|
|
66
|
+
mixin :operator
|
|
67
|
+
mixin :name
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
state :literal do
|
|
71
|
+
rule %r/\d+\.\d+\#{0,2}/, Literal::Number::Float
|
|
72
|
+
rule %r/\d+\#{0,2}/, Literal::Number::Integer
|
|
73
|
+
rule %r/".*"#/, Literal::String
|
|
74
|
+
rule %r/'.'#/, Literal::String::Char
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
state :constants do
|
|
78
|
+
rule %r/__DEFAULT/, Name::Constant
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
state :name do
|
|
82
|
+
rule %r/^([A-Z]\w*)(\.)/ do |m|
|
|
83
|
+
token Name::Namespace, m[0]
|
|
84
|
+
token Punctuation, m[1]
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
rule %r/[A-Z][^\s.,(){}]*/, Keyword::Type
|
|
88
|
+
|
|
89
|
+
# packages, e.g. 'ghc-prim-0.5.3:'
|
|
90
|
+
rule %r/(^[a-z].*?\d+\.\d+\.\d+)(:)(?=\S)/ do |m|
|
|
91
|
+
token Name::Namespace, m[1]
|
|
92
|
+
token Punctuation, m[2]
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
rule %r/\S*\(,\)\S*/, Name::Variable # '(,)' is a name, not punctuation
|
|
96
|
+
rule %r/\S[^\s.,(){}]*/, Name::Variable
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
state :punctuation do
|
|
100
|
+
rule %r/[.,(){};]/, Punctuation
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
state :operator do
|
|
104
|
+
rule %r/=>/, Operator
|
|
105
|
+
rule %r/->/, Operator
|
|
106
|
+
rule %r/::/, Operator
|
|
107
|
+
rule %r/=/, Operator
|
|
108
|
+
rule %r/forall/, Keyword
|
|
109
|
+
rule %r/case/, Keyword
|
|
110
|
+
rule %r/of/, Keyword
|
|
111
|
+
rule %r/letrec/, Keyword
|
|
112
|
+
rule %r/let/, Keyword
|
|
113
|
+
rule %r/join/, Keyword
|
|
114
|
+
rule %r/@/, Operator
|
|
115
|
+
rule %r/\\/, Operator
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
state :recursive_binding do
|
|
119
|
+
rule %r/(Rec)(\s*)({)/ do |m|
|
|
120
|
+
token Keyword, m[1]
|
|
121
|
+
token Text, m[2]
|
|
122
|
+
token Punctuation, m[3]
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
rule %r/^(end)(\s*)(Rec)(\s*)(})/ do |m|
|
|
126
|
+
token Keyword, m[1]
|
|
127
|
+
token Text, m[2]
|
|
128
|
+
token Keyword, m[3]
|
|
129
|
+
token Text, m[4]
|
|
130
|
+
token Punctuation, m[5]
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
state :ghc_rule do
|
|
135
|
+
rule %r/^(".*?")/m do |m|
|
|
136
|
+
token Name::Label, m[0]
|
|
137
|
+
|
|
138
|
+
push :expression
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
state :function do
|
|
143
|
+
rule %r/^(\S+)(?=.*?(=|::))/m do |m|
|
|
144
|
+
token Name::Function, m[0]
|
|
145
|
+
|
|
146
|
+
push :expression
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
data/lib/rouge/lexers/gherkin.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
|
|
@@ -7,7 +8,7 @@ module Rouge
|
|
|
7
8
|
aliases 'cucumber', 'behat'
|
|
8
9
|
|
|
9
10
|
title "Gherkin"
|
|
10
|
-
desc 'A business-readable spec DSL (
|
|
11
|
+
desc 'A business-readable spec DSL (github.com/cucumber/cucumber/wiki/Gherkin)'
|
|
11
12
|
|
|
12
13
|
filenames '*.feature'
|
|
13
14
|
mimetypes 'text/x-gherkin'
|
|
@@ -18,7 +19,7 @@ module Rouge
|
|
|
18
19
|
|
|
19
20
|
# self-modifying method that loads the keywords file
|
|
20
21
|
def self.keywords
|
|
21
|
-
load
|
|
22
|
+
load File.join(Lexers::BASE_DIR, 'gherkin/keywords.rb')
|
|
22
23
|
keywords
|
|
23
24
|
end
|
|
24
25
|
|
|
@@ -29,6 +30,8 @@ module Rouge
|
|
|
29
30
|
keywords[:step].map do |w|
|
|
30
31
|
if w.end_with? '<'
|
|
31
32
|
Regexp.escape(w.chop)
|
|
33
|
+
elsif w.end_with?(' ')
|
|
34
|
+
Regexp.escape(w)
|
|
32
35
|
else
|
|
33
36
|
"#{Regexp.escape(w)}\\b"
|
|
34
37
|
end
|
|
@@ -40,7 +43,7 @@ module Rouge
|
|
|
40
43
|
|
|
41
44
|
state :basic do
|
|
42
45
|
rule %r(#.*$), Comment
|
|
43
|
-
rule /[ \r\t]+/, Text
|
|
46
|
+
rule %r/[ \r\t]+/, Text
|
|
44
47
|
end
|
|
45
48
|
|
|
46
49
|
state :root do
|
|
@@ -84,8 +87,8 @@ module Rouge
|
|
|
84
87
|
end
|
|
85
88
|
|
|
86
89
|
state :table_header do
|
|
87
|
-
rule /[^|\s]+/, Name::Variable
|
|
88
|
-
rule /\n/ do
|
|
90
|
+
rule %r/[^|\s]+/, Name::Variable
|
|
91
|
+
rule %r/\n/ do
|
|
89
92
|
token Text
|
|
90
93
|
goto :table
|
|
91
94
|
end
|
|
@@ -94,9 +97,9 @@ module Rouge
|
|
|
94
97
|
|
|
95
98
|
state :table do
|
|
96
99
|
mixin :basic
|
|
97
|
-
rule /\n/, Text, :table_bol
|
|
98
|
-
rule /[|]/, Punctuation
|
|
99
|
-
rule /[^|\s]+/, Name
|
|
100
|
+
rule %r/\n/, Text, :table_bol
|
|
101
|
+
rule %r/[|]/, Punctuation
|
|
102
|
+
rule %r/[^|\s]+/, Name
|
|
100
103
|
end
|
|
101
104
|
|
|
102
105
|
state :table_bol do
|
|
@@ -107,29 +110,29 @@ module Rouge
|
|
|
107
110
|
state :description do
|
|
108
111
|
mixin :basic
|
|
109
112
|
mixin :has_examples
|
|
110
|
-
rule /\n/, Text
|
|
113
|
+
rule %r/\n/, Text
|
|
111
114
|
rule rest_of_line, Text
|
|
112
115
|
end
|
|
113
116
|
|
|
114
117
|
state :feature_description do
|
|
115
118
|
mixin :basic
|
|
116
119
|
mixin :has_scenarios
|
|
117
|
-
rule /\n/, Text
|
|
120
|
+
rule %r/\n/, Text
|
|
118
121
|
rule rest_of_line, Text
|
|
119
122
|
end
|
|
120
123
|
|
|
121
124
|
state :example_description do
|
|
122
125
|
mixin :basic
|
|
123
126
|
mixin :has_table
|
|
124
|
-
rule /\n/, Text
|
|
127
|
+
rule %r/\n/, Text
|
|
125
128
|
rule rest_of_line, Text
|
|
126
129
|
end
|
|
127
130
|
|
|
128
131
|
state :step do
|
|
129
132
|
mixin :basic
|
|
130
|
-
rule /<.*?>/, Name::Variable
|
|
131
|
-
rule /".*?"/, Str
|
|
132
|
-
rule /\S
|
|
133
|
+
rule %r/<.*?>/, Name::Variable
|
|
134
|
+
rule %r/".*?"/, Str
|
|
135
|
+
rule %r/\S[^\s<]*/, Text
|
|
133
136
|
rule rest_of_line, Text, :pop!
|
|
134
137
|
end
|
|
135
138
|
end
|
data/lib/rouge/lexers/glsl.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
|
|
@@ -16,10 +17,6 @@ module Rouge
|
|
|
16
17
|
title "GLSL"
|
|
17
18
|
desc "The GLSL shader language"
|
|
18
19
|
|
|
19
|
-
# optional comment or whitespace
|
|
20
|
-
ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
|
|
21
|
-
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
22
|
-
|
|
23
20
|
def self.keywords
|
|
24
21
|
@keywords ||= Set.new %w(
|
|
25
22
|
attribute const uniform varying
|
|
@@ -98,7 +95,7 @@ module Rouge
|
|
|
98
95
|
gl_TexCoord gl_FogFragCoord gl_Color gl_SecondaryColor gl_Normal gl_VertexID
|
|
99
96
|
gl_MultiTexCord0 gl_MultiTexCord1 gl_MultiTexCord2 gl_MultiTexCord3
|
|
100
97
|
gl_MultiTexCord4 gl_MultiTexCord5 gl_MultiTexCord6 gl_MultiTexCord7
|
|
101
|
-
gl_FogCoord gl_MaxVertexAttribs gl_MaxVertexUniformComponents
|
|
98
|
+
gl_FogCoord gl_MaxVertexAttribs gl_MaxVertexUniformComponents
|
|
102
99
|
gl_MaxVaryingFloats gl_MaxVaryingComponents gl_MaxVertexOutputComponents
|
|
103
100
|
gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents
|
|
104
101
|
gl_MaxFragmentInputComponents gl_MaxVertexTextureImageUnits
|
data/lib/rouge/lexers/go.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
|
|
@@ -13,7 +14,7 @@ module Rouge
|
|
|
13
14
|
|
|
14
15
|
# Characters
|
|
15
16
|
|
|
16
|
-
WHITE_SPACE =
|
|
17
|
+
WHITE_SPACE = /\s+/
|
|
17
18
|
|
|
18
19
|
NEWLINE = /\n/
|
|
19
20
|
UNICODE_CHAR = /[^\n]/
|
|
@@ -148,7 +149,7 @@ module Rouge
|
|
|
148
149
|
rule(OPERATOR, Operator)
|
|
149
150
|
rule(SEPARATOR, Punctuation)
|
|
150
151
|
rule(IDENTIFIER, Name)
|
|
151
|
-
rule(WHITE_SPACE,
|
|
152
|
+
rule(WHITE_SPACE, Text)
|
|
152
153
|
end
|
|
153
154
|
|
|
154
155
|
state :root do
|
data/lib/rouge/lexers/gradle.rb
CHANGED
data/lib/rouge/lexers/graphql.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
|
|
@@ -11,40 +12,54 @@ module Rouge
|
|
|
11
12
|
name = /[_A-Za-z][_0-9A-Za-z]*/
|
|
12
13
|
|
|
13
14
|
state :root do
|
|
14
|
-
rule /\b(?:query|mutation|subscription)\b/, Keyword, :query_definition
|
|
15
|
-
rule /\{/ do
|
|
15
|
+
rule %r/\b(?:query|mutation|subscription)\b/, Keyword, :query_definition
|
|
16
|
+
rule %r/\{/ do
|
|
16
17
|
token Punctuation
|
|
17
18
|
push :query_definition
|
|
18
19
|
push :selection_set
|
|
19
20
|
end
|
|
20
21
|
|
|
21
|
-
rule /\bfragment\b/, Keyword, :fragment_definition
|
|
22
|
+
rule %r/\bfragment\b/, Keyword, :fragment_definition
|
|
23
|
+
|
|
24
|
+
rule %r/\bscalar\b/, Keyword, :value
|
|
22
25
|
|
|
23
|
-
rule /\b(?:type|interface|enum)\b/, Keyword, :type_definition
|
|
24
|
-
rule /\b(?:input|schema)\b/, Keyword, :type_definition
|
|
26
|
+
rule %r/\b(?:type|interface|enum)\b/, Keyword, :type_definition
|
|
25
27
|
|
|
26
|
-
rule /\
|
|
28
|
+
rule %r/\b(?:input|schema)\b/, Keyword, :type_definition
|
|
29
|
+
|
|
30
|
+
rule %r/\bunion\b/, Keyword, :union_definition
|
|
31
|
+
|
|
32
|
+
rule %r/\bextend\b/, Keyword
|
|
27
33
|
|
|
28
34
|
mixin :basic
|
|
35
|
+
|
|
36
|
+
# Markdown descriptions
|
|
37
|
+
rule %r/(""")(\n)(.*?)(\n)(""")/m do |m|
|
|
38
|
+
token Str::Double, m[1]
|
|
39
|
+
token Text::Whitespace, m[2]
|
|
40
|
+
delegate Markdown, m[3]
|
|
41
|
+
token Text::Whitespace, m[4]
|
|
42
|
+
token Str::Double, m[5]
|
|
43
|
+
end
|
|
29
44
|
end
|
|
30
45
|
|
|
31
46
|
state :basic do
|
|
32
|
-
rule /\s+/m, Text::Whitespace
|
|
33
|
-
rule /#.*$/, Comment
|
|
47
|
+
rule %r/\s+/m, Text::Whitespace
|
|
48
|
+
rule %r/#.*$/, Comment
|
|
34
49
|
|
|
35
|
-
rule /[!,]/, Punctuation
|
|
50
|
+
rule %r/[!,]/, Punctuation
|
|
36
51
|
end
|
|
37
52
|
|
|
38
53
|
state :has_directives do
|
|
39
|
-
rule /(@#{name})(\s*)(\()/ do
|
|
54
|
+
rule %r/(@#{name})(\s*)(\()/ do
|
|
40
55
|
groups Keyword, Text::Whitespace, Punctuation
|
|
41
56
|
push :arguments
|
|
42
57
|
end
|
|
43
|
-
rule /@#{name}\b/, Keyword
|
|
58
|
+
rule %r/@#{name}\b/, Keyword
|
|
44
59
|
end
|
|
45
60
|
|
|
46
61
|
state :fragment_definition do
|
|
47
|
-
rule /\bon\b/, Keyword
|
|
62
|
+
rule %r/\bon\b/, Keyword
|
|
48
63
|
|
|
49
64
|
mixin :query_definition
|
|
50
65
|
end
|
|
@@ -52,31 +67,31 @@ module Rouge
|
|
|
52
67
|
state :query_definition do
|
|
53
68
|
mixin :has_directives
|
|
54
69
|
|
|
55
|
-
rule /\b#{name}\b/, Name
|
|
56
|
-
rule /\(/, Punctuation, :variable_definitions
|
|
57
|
-
rule /\{/, Punctuation, :selection_set
|
|
70
|
+
rule %r/\b#{name}\b/, Name
|
|
71
|
+
rule %r/\(/, Punctuation, :variable_definitions
|
|
72
|
+
rule %r/\{/, Punctuation, :selection_set
|
|
58
73
|
|
|
59
74
|
mixin :basic
|
|
60
75
|
end
|
|
61
76
|
|
|
62
77
|
state :type_definition do
|
|
63
|
-
rule /\bimplements\b/, Keyword
|
|
64
|
-
rule /\b#{name}\b/, Name
|
|
65
|
-
rule /\(/, Punctuation, :variable_definitions
|
|
66
|
-
rule /\{/, Punctuation, :type_definition_set
|
|
78
|
+
rule %r/\bimplements\b/, Keyword
|
|
79
|
+
rule %r/\b#{name}\b/, Name
|
|
80
|
+
rule %r/\(/, Punctuation, :variable_definitions
|
|
81
|
+
rule %r/\{/, Punctuation, :type_definition_set
|
|
67
82
|
|
|
68
83
|
mixin :basic
|
|
69
84
|
end
|
|
70
85
|
|
|
71
86
|
state :union_definition do
|
|
72
|
-
rule /\b#{name}\b/, Name
|
|
73
|
-
rule /\=/, Punctuation, :union_definition_variant
|
|
87
|
+
rule %r/\b#{name}\b/, Name
|
|
88
|
+
rule %r/\=/, Punctuation, :union_definition_variant
|
|
74
89
|
|
|
75
90
|
mixin :basic
|
|
76
91
|
end
|
|
77
92
|
|
|
78
93
|
state :union_definition_variant do
|
|
79
|
-
rule /\b#{name}\b/ do
|
|
94
|
+
rule %r/\b#{name}\b/ do
|
|
80
95
|
token Name
|
|
81
96
|
pop!
|
|
82
97
|
push :union_definition_pipe
|
|
@@ -86,13 +101,13 @@ module Rouge
|
|
|
86
101
|
end
|
|
87
102
|
|
|
88
103
|
state :union_definition_pipe do
|
|
89
|
-
rule /\|/ do
|
|
104
|
+
rule %r/\|/ do
|
|
90
105
|
token Punctuation
|
|
91
106
|
pop!
|
|
92
107
|
push :union_definition_variant
|
|
93
108
|
end
|
|
94
109
|
|
|
95
|
-
rule /(?!\||\s+|#[^\n]*)/ do
|
|
110
|
+
rule %r/(?!\||\s+|#[^\n]*)/ do
|
|
96
111
|
pop! 2
|
|
97
112
|
end
|
|
98
113
|
|
|
@@ -100,62 +115,62 @@ module Rouge
|
|
|
100
115
|
end
|
|
101
116
|
|
|
102
117
|
state :type_definition_set do
|
|
103
|
-
rule /\}/ do
|
|
118
|
+
rule %r/\}/ do
|
|
104
119
|
token Punctuation
|
|
105
120
|
pop! 2
|
|
106
121
|
end
|
|
107
122
|
|
|
108
|
-
rule /\b(#{name})(\s*)(\()/ do
|
|
123
|
+
rule %r/\b(#{name})(\s*)(\()/ do
|
|
109
124
|
groups Name, Text::Whitespace, Punctuation
|
|
110
125
|
push :variable_definitions
|
|
111
126
|
end
|
|
112
|
-
rule /\b#{name}\b/, Name
|
|
127
|
+
rule %r/\b#{name}\b/, Name
|
|
113
128
|
|
|
114
|
-
rule /:/, Punctuation, :type_names
|
|
129
|
+
rule %r/:/, Punctuation, :type_names
|
|
115
130
|
|
|
116
131
|
mixin :basic
|
|
117
132
|
end
|
|
118
133
|
|
|
119
134
|
state :arguments do
|
|
120
|
-
rule /\)/ do
|
|
135
|
+
rule %r/\)/ do
|
|
121
136
|
token Punctuation
|
|
122
137
|
pop!
|
|
123
138
|
end
|
|
124
139
|
|
|
125
|
-
rule /\b#{name}\b/, Name
|
|
126
|
-
rule /:/, Punctuation, :value
|
|
140
|
+
rule %r/\b#{name}\b/, Name
|
|
141
|
+
rule %r/:/, Punctuation, :value
|
|
127
142
|
|
|
128
143
|
mixin :basic
|
|
129
144
|
end
|
|
130
145
|
|
|
131
146
|
state :variable_definitions do
|
|
132
|
-
rule /\)/ do
|
|
147
|
+
rule %r/\)/ do
|
|
133
148
|
token Punctuation
|
|
134
149
|
pop!
|
|
135
150
|
end
|
|
136
151
|
|
|
137
|
-
rule /\$#{name}\b/, Name::Variable
|
|
138
|
-
rule /\b#{name}\b/, Name
|
|
139
|
-
rule /:/, Punctuation, :type_names
|
|
140
|
-
rule /\=/, Punctuation, :value
|
|
152
|
+
rule %r/\$#{name}\b/, Name::Variable
|
|
153
|
+
rule %r/\b#{name}\b/, Name
|
|
154
|
+
rule %r/:/, Punctuation, :type_names
|
|
155
|
+
rule %r/\=/, Punctuation, :value
|
|
141
156
|
|
|
142
157
|
mixin :basic
|
|
143
158
|
end
|
|
144
159
|
|
|
145
160
|
state :type_names do
|
|
146
|
-
rule /\b(?:Int|Float|String|Boolean|ID)\b/, Name::Builtin, :pop!
|
|
147
|
-
rule /\b#{name}\b/, Name, :pop!
|
|
161
|
+
rule %r/\b(?:Int|Float|String|Boolean|ID)\b/, Name::Builtin, :pop!
|
|
162
|
+
rule %r/\b#{name}\b/, Name, :pop!
|
|
148
163
|
|
|
149
|
-
rule /\[/, Punctuation, :type_name_list
|
|
164
|
+
rule %r/\[/, Punctuation, :type_name_list
|
|
150
165
|
|
|
151
166
|
mixin :basic
|
|
152
167
|
end
|
|
153
168
|
|
|
154
169
|
state :type_name_list do
|
|
155
|
-
rule /\b(?:Int|Float|String|Boolean|ID)\b/, Name::Builtin
|
|
156
|
-
rule /\b#{name}\b/, Name
|
|
170
|
+
rule %r/\b(?:Int|Float|String|Boolean|ID)\b/, Name::Builtin
|
|
171
|
+
rule %r/\b#{name}\b/, Name
|
|
157
172
|
|
|
158
|
-
rule /\]/ do
|
|
173
|
+
rule %r/\]/ do
|
|
159
174
|
token Punctuation
|
|
160
175
|
pop! 2
|
|
161
176
|
end
|
|
@@ -166,35 +181,35 @@ module Rouge
|
|
|
166
181
|
state :selection_set do
|
|
167
182
|
mixin :has_directives
|
|
168
183
|
|
|
169
|
-
rule /\}/ do
|
|
184
|
+
rule %r/\}/ do
|
|
170
185
|
token Punctuation
|
|
171
186
|
pop!
|
|
172
187
|
pop! if state?(:query_definition) || state?(:fragment_definition)
|
|
173
188
|
end
|
|
174
189
|
|
|
175
|
-
rule /\b(#{name})(\s*)(\()/ do
|
|
190
|
+
rule %r/\b(#{name})(\s*)(\()/ do
|
|
176
191
|
groups Name, Text::Whitespace, Punctuation
|
|
177
192
|
push :arguments
|
|
178
193
|
end
|
|
179
194
|
|
|
180
|
-
rule /\b(#{name})(\s*)(:)/ do
|
|
195
|
+
rule %r/\b(#{name})(\s*)(:)/ do
|
|
181
196
|
groups Name, Text::Whitespace, Punctuation
|
|
182
197
|
end
|
|
183
198
|
|
|
184
|
-
rule /\b#{name}\b/, Name
|
|
199
|
+
rule %r/\b#{name}\b/, Name
|
|
185
200
|
|
|
186
|
-
rule /(\.\.\.)(\s+)(on)\b/ do
|
|
201
|
+
rule %r/(\.\.\.)(\s+)(on)\b/ do
|
|
187
202
|
groups Punctuation, Text::Whitespace, Keyword
|
|
188
203
|
end
|
|
189
|
-
rule /\.\.\./, Punctuation
|
|
204
|
+
rule %r/\.\.\./, Punctuation
|
|
190
205
|
|
|
191
|
-
rule /\{/, Punctuation, :selection_set
|
|
206
|
+
rule %r/\{/, Punctuation, :selection_set
|
|
192
207
|
|
|
193
208
|
mixin :basic
|
|
194
209
|
end
|
|
195
210
|
|
|
196
211
|
state :list do
|
|
197
|
-
rule /\]/ do
|
|
212
|
+
rule %r/\]/ do
|
|
198
213
|
token Punctuation
|
|
199
214
|
pop!
|
|
200
215
|
pop! if state?(:value)
|
|
@@ -204,13 +219,13 @@ module Rouge
|
|
|
204
219
|
end
|
|
205
220
|
|
|
206
221
|
state :object do
|
|
207
|
-
rule /\}/ do
|
|
222
|
+
rule %r/\}/ do
|
|
208
223
|
token Punctuation
|
|
209
224
|
pop!
|
|
210
225
|
pop! if state?(:value)
|
|
211
226
|
end
|
|
212
227
|
|
|
213
|
-
rule /\b(#{name})(\s*)(:)/ do
|
|
228
|
+
rule %r/\b(#{name})(\s*)(:)/ do
|
|
214
229
|
groups Name, Text::Whitespace, Punctuation
|
|
215
230
|
push :value
|
|
216
231
|
end
|
|
@@ -226,15 +241,18 @@ module Rouge
|
|
|
226
241
|
}
|
|
227
242
|
}
|
|
228
243
|
|
|
229
|
-
|
|
230
|
-
rule
|
|
231
|
-
|
|
232
|
-
rule
|
|
233
|
-
rule
|
|
234
|
-
rule
|
|
244
|
+
# Multiline strings
|
|
245
|
+
rule %r/""".*?"""/m, Str::Double
|
|
246
|
+
|
|
247
|
+
rule %r/\$#{name}\b/, &pop_unless_list[Name::Variable]
|
|
248
|
+
rule %r/\b(?:true|false|null)\b/, &pop_unless_list[Keyword::Constant]
|
|
249
|
+
rule %r/[+-]?[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?/, &pop_unless_list[Num::Float]
|
|
250
|
+
rule %r/[+-]?[1-9][0-9]*(?:[eE][+-]?[0-9]+)?/, &pop_unless_list[Num::Integer]
|
|
251
|
+
rule %r/"(\\[\\"]|[^"])*"/, &pop_unless_list[Str::Double]
|
|
252
|
+
rule %r/\b#{name}\b/, &pop_unless_list[Name]
|
|
235
253
|
|
|
236
|
-
rule /\{/, Punctuation, :object
|
|
237
|
-
rule /\[/, Punctuation, :list
|
|
254
|
+
rule %r/\{/, Punctuation, :object
|
|
255
|
+
rule %r/\[/, Punctuation, :list
|
|
238
256
|
|
|
239
257
|
mixin :basic
|
|
240
258
|
end
|