rouge_ecl 0.0.1
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 +26 -0
- data/LICENSE +186 -0
- data/bin/rougify +17 -0
- data/lib/rouge.rb +82 -0
- data/lib/rouge/cli.rb +429 -0
- data/lib/rouge/demos/abap +6 -0
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/apache +21 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/applescript +2 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/biml +38 -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/clojure +5 -0
- data/lib/rouge/demos/cmake +7 -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/csharp +5 -0
- data/lib/rouge/demos/css +4 -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 +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/erb +1 -0
- data/lib/rouge/demos/erlang +7 -0
- data/lib/rouge/demos/factor +5 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/fsharp +12 -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/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/json +1 -0
- data/lib/rouge/demos/json-doc +1 -0
- data/lib/rouge/demos/jsonnet +28 -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 +11 -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/make +6 -0
- data/lib/rouge/demos/markdown +4 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/moonscript +16 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/mxml +22 -0
- data/lib/rouge/demos/nasm +26 -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/ocaml +12 -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 +142 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/powershell +49 -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 +2 -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/ruby +9 -0
- data/lib/rouge/demos/rust +12 -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/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/sql +1 -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/tex +1 -0
- data/lib/rouge/demos/toml +9 -0
- data/lib/rouge/demos/tsx +17 -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/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/yaml +4 -0
- data/lib/rouge/formatter.rb +75 -0
- data/lib/rouge/formatters/html.rb +37 -0
- data/lib/rouge/formatters/html_inline.rb +30 -0
- data/lib/rouge/formatters/html_legacy.rb +44 -0
- data/lib/rouge/formatters/html_linewise.rb +27 -0
- data/lib/rouge/formatters/html_pygments.rb +16 -0
- data/lib/rouge/formatters/html_table.rb +61 -0
- data/lib/rouge/formatters/null.rb +19 -0
- data/lib/rouge/formatters/terminal256.rb +180 -0
- data/lib/rouge/guesser.rb +55 -0
- data/lib/rouge/guessers/disambiguation.rb +101 -0
- data/lib/rouge/guessers/filename.rb +25 -0
- data/lib/rouge/guessers/glob_mapping.rb +43 -0
- data/lib/rouge/guessers/mimetype.rb +14 -0
- data/lib/rouge/guessers/modeline.rb +44 -0
- data/lib/rouge/guessers/source.rb +29 -0
- data/lib/rouge/guessers/util.rb +32 -0
- data/lib/rouge/lexer.rb +461 -0
- data/lib/rouge/lexers/abap.rb +238 -0
- data/lib/rouge/lexers/actionscript.rb +195 -0
- data/lib/rouge/lexers/apache.rb +71 -0
- data/lib/rouge/lexers/apache/keywords.yml +764 -0
- data/lib/rouge/lexers/apiblueprint.rb +47 -0
- data/lib/rouge/lexers/apple_script.rb +367 -0
- data/lib/rouge/lexers/awk.rb +161 -0
- data/lib/rouge/lexers/biml.rb +41 -0
- data/lib/rouge/lexers/bsl.rb +81 -0
- data/lib/rouge/lexers/c.rb +212 -0
- data/lib/rouge/lexers/ceylon.rb +123 -0
- data/lib/rouge/lexers/cfscript.rb +153 -0
- data/lib/rouge/lexers/clojure.rb +112 -0
- data/lib/rouge/lexers/cmake.rb +206 -0
- data/lib/rouge/lexers/coffeescript.rb +174 -0
- data/lib/rouge/lexers/common_lisp.rb +345 -0
- data/lib/rouge/lexers/conf.rb +24 -0
- data/lib/rouge/lexers/console.rb +136 -0
- data/lib/rouge/lexers/coq.rb +187 -0
- data/lib/rouge/lexers/cpp.rb +78 -0
- data/lib/rouge/lexers/csharp.rb +114 -0
- data/lib/rouge/lexers/css.rb +273 -0
- data/lib/rouge/lexers/d.rb +176 -0
- data/lib/rouge/lexers/dart.rb +104 -0
- data/lib/rouge/lexers/diff.rb +31 -0
- data/lib/rouge/lexers/digdag.rb +68 -0
- data/lib/rouge/lexers/docker.rb +50 -0
- data/lib/rouge/lexers/dot.rb +68 -0
- data/lib/rouge/lexers/ecl.rb +138 -0
- data/lib/rouge/lexers/eiffel.rb +65 -0
- data/lib/rouge/lexers/elixir.rb +133 -0
- data/lib/rouge/lexers/elm.rb +89 -0
- data/lib/rouge/lexers/erb.rb +52 -0
- data/lib/rouge/lexers/erlang.rb +114 -0
- data/lib/rouge/lexers/factor.rb +302 -0
- data/lib/rouge/lexers/fortran.rb +176 -0
- data/lib/rouge/lexers/fsharp.rb +118 -0
- data/lib/rouge/lexers/gherkin.rb +137 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
- data/lib/rouge/lexers/glsl.rb +135 -0
- data/lib/rouge/lexers/go.rb +174 -0
- data/lib/rouge/lexers/gradle.rb +37 -0
- data/lib/rouge/lexers/graphql.rb +243 -0
- data/lib/rouge/lexers/groovy.rb +112 -0
- data/lib/rouge/lexers/hack.rb +48 -0
- data/lib/rouge/lexers/haml.rb +229 -0
- data/lib/rouge/lexers/handlebars.rb +79 -0
- data/lib/rouge/lexers/haskell.rb +182 -0
- data/lib/rouge/lexers/html.rb +139 -0
- data/lib/rouge/lexers/http.rb +80 -0
- data/lib/rouge/lexers/hylang.rb +93 -0
- data/lib/rouge/lexers/idlang.rb +310 -0
- data/lib/rouge/lexers/igorpro.rb +408 -0
- data/lib/rouge/lexers/ini.rb +53 -0
- data/lib/rouge/lexers/io.rb +68 -0
- data/lib/rouge/lexers/irb.rb +66 -0
- data/lib/rouge/lexers/java.rb +87 -0
- data/lib/rouge/lexers/javascript.rb +281 -0
- data/lib/rouge/lexers/jinja.rb +137 -0
- data/lib/rouge/lexers/json.rb +29 -0
- data/lib/rouge/lexers/json_doc.rb +23 -0
- data/lib/rouge/lexers/jsonnet.rb +151 -0
- data/lib/rouge/lexers/jsx.rb +102 -0
- data/lib/rouge/lexers/julia.rb +172 -0
- data/lib/rouge/lexers/kotlin.rb +79 -0
- data/lib/rouge/lexers/lasso.rb +214 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/liquid.rb +287 -0
- data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
- data/lib/rouge/lexers/literate_haskell.rb +36 -0
- data/lib/rouge/lexers/llvm.rb +80 -0
- data/lib/rouge/lexers/lua.rb +125 -0
- data/lib/rouge/lexers/lua/builtins.rb +22 -0
- data/lib/rouge/lexers/make.rb +112 -0
- data/lib/rouge/lexers/markdown.rb +154 -0
- data/lib/rouge/lexers/matlab.rb +71 -0
- data/lib/rouge/lexers/matlab/builtins.rb +11 -0
- data/lib/rouge/lexers/moonscript.rb +114 -0
- data/lib/rouge/lexers/mosel.rb +231 -0
- data/lib/rouge/lexers/mxml.rb +68 -0
- data/lib/rouge/lexers/nasm.rb +198 -0
- data/lib/rouge/lexers/nginx.rb +71 -0
- data/lib/rouge/lexers/nim.rb +152 -0
- data/lib/rouge/lexers/nix.rb +205 -0
- data/lib/rouge/lexers/objective_c.rb +194 -0
- data/lib/rouge/lexers/ocaml.rb +100 -0
- data/lib/rouge/lexers/pascal.rb +66 -0
- data/lib/rouge/lexers/perl.rb +196 -0
- data/lib/rouge/lexers/php.rb +193 -0
- data/lib/rouge/lexers/php/builtins.rb +194 -0
- data/lib/rouge/lexers/plain_text.rb +26 -0
- data/lib/rouge/lexers/plist.rb +45 -0
- data/lib/rouge/lexers/pony.rb +93 -0
- data/lib/rouge/lexers/powershell.rb +678 -0
- data/lib/rouge/lexers/praat.rb +350 -0
- data/lib/rouge/lexers/prolog.rb +59 -0
- data/lib/rouge/lexers/prometheus.rb +121 -0
- data/lib/rouge/lexers/properties.rb +51 -0
- data/lib/rouge/lexers/protobuf.rb +70 -0
- data/lib/rouge/lexers/puppet.rb +128 -0
- data/lib/rouge/lexers/python.rb +232 -0
- data/lib/rouge/lexers/q.rb +123 -0
- data/lib/rouge/lexers/qml.rb +73 -0
- data/lib/rouge/lexers/r.rb +89 -0
- data/lib/rouge/lexers/racket.rb +543 -0
- data/lib/rouge/lexers/ruby.rb +437 -0
- data/lib/rouge/lexers/rust.rb +192 -0
- data/lib/rouge/lexers/sass.rb +74 -0
- data/lib/rouge/lexers/sass/common.rb +180 -0
- data/lib/rouge/lexers/scala.rb +142 -0
- data/lib/rouge/lexers/scheme.rb +112 -0
- data/lib/rouge/lexers/scss.rb +34 -0
- data/lib/rouge/lexers/sed.rb +172 -0
- data/lib/rouge/lexers/shell.rb +189 -0
- data/lib/rouge/lexers/sieve.rb +96 -0
- data/lib/rouge/lexers/slim.rb +228 -0
- data/lib/rouge/lexers/smalltalk.rb +116 -0
- data/lib/rouge/lexers/smarty.rb +80 -0
- data/lib/rouge/lexers/sml.rb +344 -0
- data/lib/rouge/lexers/sql.rb +140 -0
- data/lib/rouge/lexers/swift.rb +181 -0
- data/lib/rouge/lexers/tap.rb +87 -0
- data/lib/rouge/lexers/tcl.rb +192 -0
- data/lib/rouge/lexers/tex.rb +69 -0
- data/lib/rouge/lexers/toml.rb +67 -0
- data/lib/rouge/lexers/tsx.rb +19 -0
- data/lib/rouge/lexers/tulip.rb +106 -0
- data/lib/rouge/lexers/turtle.rb +63 -0
- data/lib/rouge/lexers/twig.rb +39 -0
- data/lib/rouge/lexers/typescript.rb +22 -0
- data/lib/rouge/lexers/typescript/common.rb +33 -0
- data/lib/rouge/lexers/vala.rb +77 -0
- data/lib/rouge/lexers/vb.rb +164 -0
- data/lib/rouge/lexers/verilog.rb +164 -0
- data/lib/rouge/lexers/vhdl.rb +97 -0
- data/lib/rouge/lexers/viml.rb +101 -0
- data/lib/rouge/lexers/viml/keywords.rb +12 -0
- data/lib/rouge/lexers/vue.rb +122 -0
- data/lib/rouge/lexers/wollok.rb +103 -0
- data/lib/rouge/lexers/xml.rb +57 -0
- data/lib/rouge/lexers/yaml.rb +373 -0
- data/lib/rouge/plugins/redcarpet.rb +30 -0
- data/lib/rouge/regex_lexer.rb +441 -0
- data/lib/rouge/template_lexer.rb +20 -0
- data/lib/rouge/text_analyzer.rb +49 -0
- data/lib/rouge/theme.rb +213 -0
- data/lib/rouge/themes/base16.rb +130 -0
- data/lib/rouge/themes/colorful.rb +67 -0
- data/lib/rouge/themes/github.rb +71 -0
- data/lib/rouge/themes/gruvbox.rb +167 -0
- data/lib/rouge/themes/igor_pro.rb +20 -0
- data/lib/rouge/themes/molokai.rb +82 -0
- data/lib/rouge/themes/monokai.rb +92 -0
- data/lib/rouge/themes/monokai_sublime.rb +90 -0
- data/lib/rouge/themes/pastie.rb +69 -0
- data/lib/rouge/themes/thankful_eyes.rb +74 -0
- data/lib/rouge/themes/tulip.rb +69 -0
- data/lib/rouge/token.rb +182 -0
- data/lib/rouge/util.rb +101 -0
- data/lib/rouge/version.rb +7 -0
- data/rouge.gemspec +23 -0
- metadata +365 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class VisualBasic < RegexLexer
|
|
6
|
+
title "Visual Basic"
|
|
7
|
+
desc "Visual Basic"
|
|
8
|
+
tag 'vb'
|
|
9
|
+
aliases 'visualbasic'
|
|
10
|
+
filenames '*.vbs', '*.vb'
|
|
11
|
+
mimetypes 'text/x-visualbasic', 'application/x-visualbasic'
|
|
12
|
+
|
|
13
|
+
def self.keywords
|
|
14
|
+
@keywords ||= Set.new %w(
|
|
15
|
+
AddHandler Alias ByRef ByVal CBool CByte CChar CDate CDbl CDec
|
|
16
|
+
CInt CLng CObj CSByte CShort CSng CStr CType CUInt CULng CUShort
|
|
17
|
+
Call Case Catch Class Const Continue Declare Default Delegate
|
|
18
|
+
Dim DirectCast Do Each Else ElseIf End EndIf Enum Erase Error
|
|
19
|
+
Event Exit False Finally For Friend Function Get Global GoSub
|
|
20
|
+
GoTo Handles If Implements Imports Inherits Interface Let
|
|
21
|
+
Lib Loop Me Module MustInherit MustOverride MyBase MyClass
|
|
22
|
+
Namespace Narrowing New Next Not NotInheritable NotOverridable
|
|
23
|
+
Nothing Of On Operator Option Optional Overloads Overridable
|
|
24
|
+
Overrides ParamArray Partial Private Property Protected Public
|
|
25
|
+
RaiseEvent ReDim ReadOnly RemoveHandler Resume Return Select Set
|
|
26
|
+
Shadows Shared Single Static Step Stop Structure Sub SyncLock
|
|
27
|
+
Then Throw To True Try TryCast Using Wend When While Widening
|
|
28
|
+
With WithEvents WriteOnly
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.keywords_type
|
|
33
|
+
@keywords_type ||= Set.new %w(
|
|
34
|
+
Boolean Byte Char Date Decimal Double Integer Long Object
|
|
35
|
+
SByte Short Single String Variant UInteger ULong UShort
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.operator_words
|
|
40
|
+
@operator_words ||= Set.new %w(
|
|
41
|
+
AddressOf And AndAlso As GetType In Is IsNot Like Mod Or OrElse
|
|
42
|
+
TypeOf Xor
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def self.builtins
|
|
47
|
+
@builtins ||= Set.new %w(
|
|
48
|
+
Console ConsoleColor
|
|
49
|
+
)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
id = /[a-z_]\w*/i
|
|
53
|
+
upper_id = /[A-Z]\w*/
|
|
54
|
+
|
|
55
|
+
state :whitespace do
|
|
56
|
+
rule /\s+/, Text
|
|
57
|
+
rule /\n/, Text, :bol
|
|
58
|
+
rule /rem\b.*?$/i, Comment::Single
|
|
59
|
+
rule %r(%\{.*?%\})m, Comment::Multiline
|
|
60
|
+
rule /'.*$/, Comment::Single
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
state :bol do
|
|
64
|
+
rule /\s+/, Text
|
|
65
|
+
rule /<.*?>/, Name::Attribute
|
|
66
|
+
rule(//) { :pop! }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
state :root do
|
|
70
|
+
mixin :whitespace
|
|
71
|
+
rule %r(
|
|
72
|
+
[#]If\b .*? \bThen
|
|
73
|
+
| [#]ElseIf\b .*? \bThen
|
|
74
|
+
| [#]End \s+ If
|
|
75
|
+
| [#]Const
|
|
76
|
+
| [#]ExternalSource .*? \n
|
|
77
|
+
| [#]End \s+ ExternalSource
|
|
78
|
+
| [#]Region .*? \n
|
|
79
|
+
| [#]End \s+ Region
|
|
80
|
+
| [#]ExternalChecksum
|
|
81
|
+
)x, Comment::Preproc
|
|
82
|
+
rule /[.]/, Punctuation, :dotted
|
|
83
|
+
rule /[(){}!#,:]/, Punctuation
|
|
84
|
+
rule /Option\s+(Strict|Explicit|Compare)\s+(On|Off|Binary|Text)/,
|
|
85
|
+
Keyword::Declaration
|
|
86
|
+
rule /End\b/, Keyword, :end
|
|
87
|
+
rule /(Dim|Const)\b/, Keyword, :dim
|
|
88
|
+
rule /(Function|Sub|Property)\b/, Keyword, :funcname
|
|
89
|
+
rule /(Class|Structure|Enum)\b/, Keyword, :classname
|
|
90
|
+
rule /(Module|Namespace|Imports)\b/, Keyword, :namespace
|
|
91
|
+
|
|
92
|
+
rule upper_id do |m|
|
|
93
|
+
match = m[0]
|
|
94
|
+
if self.class.keywords.include? match
|
|
95
|
+
token Keyword
|
|
96
|
+
elsif self.class.keywords_type.include? match
|
|
97
|
+
token Keyword::Type
|
|
98
|
+
elsif self.class.operator_words.include? match
|
|
99
|
+
token Operator::Word
|
|
100
|
+
elsif self.class.builtins.include? match
|
|
101
|
+
token Name::Builtin
|
|
102
|
+
else
|
|
103
|
+
token Name
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
rule(
|
|
108
|
+
%r(&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>.]),
|
|
109
|
+
Operator
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
rule /"/, Str, :string
|
|
113
|
+
rule /#{id}[%&@!#\$]?/, Name
|
|
114
|
+
rule /#.*?#/, Literal::Date
|
|
115
|
+
|
|
116
|
+
rule /(\d+\.\d*|\d*\.\d+)(f[+-]?\d+)?/i, Num::Float
|
|
117
|
+
rule /\d+([SILDFR]|US|UI|UL)?/, Num::Integer
|
|
118
|
+
rule /&H[0-9a-f]+([SILDFR]|US|UI|UL)?/, Num::Integer
|
|
119
|
+
rule /&O[0-7]+([SILDFR]|US|UI|UL)?/, Num::Integer
|
|
120
|
+
|
|
121
|
+
rule /_\n/, Keyword
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
state :dotted do
|
|
125
|
+
mixin :whitespace
|
|
126
|
+
rule id, Name, :pop!
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
state :string do
|
|
130
|
+
rule /""/, Str::Escape
|
|
131
|
+
rule /"C?/, Str, :pop!
|
|
132
|
+
rule /[^"]+/, Str
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
state :dim do
|
|
136
|
+
mixin :whitespace
|
|
137
|
+
rule id, Name::Variable, :pop!
|
|
138
|
+
rule(//) { pop! }
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
state :funcname do
|
|
142
|
+
mixin :whitespace
|
|
143
|
+
rule id, Name::Function, :pop!
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
state :classname do
|
|
147
|
+
mixin :whitespace
|
|
148
|
+
rule id, Name::Class, :pop!
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
state :namespace do
|
|
152
|
+
mixin :whitespace
|
|
153
|
+
rule /#{id}([.]#{id})*/, Name::Namespace, :pop!
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
state :end do
|
|
157
|
+
mixin :whitespace
|
|
158
|
+
rule /(Function|Sub|Property|Class|Structure|Enum|Module|Namespace)\b/,
|
|
159
|
+
Keyword, :pop!
|
|
160
|
+
rule(//) { pop! }
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Verilog < RegexLexer
|
|
6
|
+
title "Verilog and System Verilog"
|
|
7
|
+
desc "The System Verilog hardware description language"
|
|
8
|
+
tag 'verilog'
|
|
9
|
+
filenames '*.v', '*.sv', '*.svh'
|
|
10
|
+
mimetypes 'text/x-verilog', 'text/x-systemverilog'
|
|
11
|
+
|
|
12
|
+
# optional comment or whitespace
|
|
13
|
+
ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
|
|
14
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
15
|
+
|
|
16
|
+
def self.keywords
|
|
17
|
+
@keywords ||= Set.new %w(
|
|
18
|
+
alias always always_comb always_ff always_latch assert assert_strobe
|
|
19
|
+
assign assume automatic attribute before begin bind bins binsof break
|
|
20
|
+
case casex casez clocking config constraint context continue cover
|
|
21
|
+
covergroup coverpoint cross deassign defparam default design dist do
|
|
22
|
+
else end endattribute endcase endclass endclocking endconfig
|
|
23
|
+
endfunction endgenerate endgroup endinterface endmodule endpackage
|
|
24
|
+
endprimitive endprogram endproperty endspecify endsequence endtable
|
|
25
|
+
endtask expect export extends extern final first_match for force
|
|
26
|
+
foreach fork forkjoin forever function generate genvar if iff ifnone
|
|
27
|
+
ignore_bins illegal_bins import incdir include initial inside instance
|
|
28
|
+
interface intersect join join_any join_none liblist library local
|
|
29
|
+
localparam matches module modport new noshowcancelled null package
|
|
30
|
+
parameter primitive priority program property protected
|
|
31
|
+
pulsestyle_onevent pulsestyle_ondetect pure rand randc randcase
|
|
32
|
+
randsequence release return sequence showcancelled solve specify super
|
|
33
|
+
table task this throughout timeprecision timeunit type typedef unique
|
|
34
|
+
use wait wait_order while wildcard with within
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.keywords_type
|
|
39
|
+
@keywords_type ||= Set.new %w(
|
|
40
|
+
and bit buf bufif0 bufif1 byte cell chandle class cmos const disable
|
|
41
|
+
edge enum event highz0 highz1 initial inout input int integer join
|
|
42
|
+
logic longint macromodule medium nand negedge nmos nor not
|
|
43
|
+
notif0 notif1 or output packed parameter pmos posedge pull0 pull1
|
|
44
|
+
pulldown pullup rcmos real realtime ref reg repeat rnmos rpmos rtran
|
|
45
|
+
rtranif0 rtranif1 scalared shortint shortreal signed specparam
|
|
46
|
+
static string strength strong0 strong1 struct supply0 supply1 tagged
|
|
47
|
+
time tran tranif0 tranif1 tri tri0 tri1 triand trior trireg union
|
|
48
|
+
unsigned uwire var vectored virtual void wait wand weak[01] wire wor
|
|
49
|
+
xnor xor
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.keywords_system_task
|
|
54
|
+
@keyword_system_task ||= Set.new %w(
|
|
55
|
+
acos acosh asin asinh assertfailoff assertfailon assertkill
|
|
56
|
+
assertnonvacuouson assertoff asserton assertpassoff assertpasson
|
|
57
|
+
assertvacuousoff atan atan2 atanh bits bitstoreal bitstoshortreal
|
|
58
|
+
cast ceil changed changed_gclk changing_gclk clog2 cos cosh countones
|
|
59
|
+
coverage_control coverage_get coverage_get_max coverage_merge
|
|
60
|
+
coverage_save dimensions display displayb displayh displayo
|
|
61
|
+
dist_chi_square dist_erlang dist_exponential dist_normal dist_poisson
|
|
62
|
+
dist_t dist_uniform dumpall dumpfile dumpflush dumplimit dumpoff
|
|
63
|
+
dumpon dumpports dumpportsall dumpportsflush dumpportslimit
|
|
64
|
+
dumpportsoff dumpportson dumpvars error exit exp falling_gclk fclose
|
|
65
|
+
fdisplay fdisplayb fdisplayh fdisplayo fell fell_gclk feof ferror
|
|
66
|
+
fflush fgetc fgets finish floor fmonitor fmonitorb fmonitorh fmonitoro
|
|
67
|
+
fopen fread fscanf fseek fstrobe fstrobeb fstrobeh fstrobeo ftell
|
|
68
|
+
future_gclk fwrite fwriteb fwriteh fwriteo get_coverage high hypot
|
|
69
|
+
increment info isunbounded isunknown itor left ln load_coverage_db
|
|
70
|
+
log10 low monitor monitorb monitorh monitoro monitoroff monitoron
|
|
71
|
+
onehot onehot0 past past_gclk pow printtimescale q_add q_exam q_full
|
|
72
|
+
q_initialize q_remove random readmemb readmemh realtime realtobits
|
|
73
|
+
rewind right rising_gclk rose rose_gclk rtoi sampled
|
|
74
|
+
set_coverage_db_name sformat sformatf shortrealtobits signed sin sinh
|
|
75
|
+
size sqrt sscanf stable stable_gclk steady_gclk stime stop strobe
|
|
76
|
+
strobeb strobeh strobeo swrite swriteb swriteh swriteo system tan tanh
|
|
77
|
+
time timeformat typename ungetc unpacked_dimensions unsigned warning
|
|
78
|
+
write writeb writeh writememb writememh writeo
|
|
79
|
+
)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
state :expr_bol do
|
|
83
|
+
mixin :inline_whitespace
|
|
84
|
+
rule /`define/, Comment::Preproc, :macro
|
|
85
|
+
|
|
86
|
+
rule(//) { pop! }
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# :expr_bol is the same as :bol but without labels, since
|
|
90
|
+
# labels can only appear at the beginning of a statement.
|
|
91
|
+
state :bol do
|
|
92
|
+
rule /#{id}:(?!:)/, Name::Label
|
|
93
|
+
mixin :expr_bol
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
state :inline_whitespace do
|
|
97
|
+
rule /[ \t\r]+/, Text
|
|
98
|
+
rule /\\\n/, Text # line continuation
|
|
99
|
+
rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
state :whitespace do
|
|
103
|
+
rule /\n+/m, Text, :bol
|
|
104
|
+
rule %r(//(\\.|.)*?\n), Comment::Single, :bol
|
|
105
|
+
mixin :inline_whitespace
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
state :expr_whitespace do
|
|
109
|
+
rule /\n+/m, Text, :expr_bol
|
|
110
|
+
mixin :whitespace
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
state :string do
|
|
114
|
+
rule /"/, Str, :pop!
|
|
115
|
+
rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
|
|
116
|
+
rule /[^\\"\n]+/, Str
|
|
117
|
+
rule /\\\n/, Str
|
|
118
|
+
rule /\\/, Str # stray backslash
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
state :statement do
|
|
122
|
+
mixin :whitespace
|
|
123
|
+
rule /L?"/, Str, :string
|
|
124
|
+
rule /([0-9_]+\.[0-9_]*|[0-9_]*\.[0-9_]+)(e[+-]?[0-9_]+)?/i, Num::Float
|
|
125
|
+
rule /[0-9_]+e[+-]?[0-9_]+/i, Num::Float
|
|
126
|
+
rule /[0-9]*'h[0-9a-fA-F_?]+/, Num::Hex
|
|
127
|
+
rule /[0-9]*'b?[01xz_?]+/, Num::Bin
|
|
128
|
+
rule /[0-9]*'d[0-9_?]+/, Num::Integer
|
|
129
|
+
rule /[0-9_]+[lu]*/i, Num::Integer
|
|
130
|
+
rule %r([~!%^&*+-=\|?:<>/@{}]), Operator
|
|
131
|
+
rule /[()\[\],.$\#]/, Punctuation
|
|
132
|
+
rule /`(\w+)/, Comment::Preproc
|
|
133
|
+
|
|
134
|
+
rule id do |m|
|
|
135
|
+
name = m[0]
|
|
136
|
+
|
|
137
|
+
if self.class.keywords.include? name
|
|
138
|
+
token Keyword
|
|
139
|
+
elsif self.class.keywords_type.include? name
|
|
140
|
+
token Keyword::Type
|
|
141
|
+
elsif self.class.keywords_system_task.include? name
|
|
142
|
+
token Name::Builtin
|
|
143
|
+
else
|
|
144
|
+
token Name
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
state :root do
|
|
150
|
+
mixin :expr_whitespace
|
|
151
|
+
rule(//) { push :statement }
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
state :macro do
|
|
155
|
+
rule /\n/, Comment::Preproc, :pop!
|
|
156
|
+
mixin :inline_whitespace
|
|
157
|
+
rule /;/, Punctuation
|
|
158
|
+
rule /\=/, Operator
|
|
159
|
+
rule /(\w+)/, Text
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class VHDL < RegexLexer
|
|
6
|
+
title "VHDL 2008"
|
|
7
|
+
desc "Very High Speed Integrated Circuit Hardware Description Language"
|
|
8
|
+
tag 'vhdl'
|
|
9
|
+
|
|
10
|
+
filenames '*.vhd', '*.vhdl', '*.vho'
|
|
11
|
+
|
|
12
|
+
mimetypes 'text/x-vhdl'
|
|
13
|
+
def self.keywords
|
|
14
|
+
@keywords ||= Set.new %w(
|
|
15
|
+
access after alias all architecture array assert assume assume_guarantee attribute
|
|
16
|
+
begin block body buffer bus case component configuration constant context cover
|
|
17
|
+
default disconnect downto else elsif end entity exit fairness file for force function
|
|
18
|
+
generate generic group guarded if impure in inertial inout is label library linkage
|
|
19
|
+
literal loop map new next null of on open others out package parameter port postponed
|
|
20
|
+
procedure process property protected pure range record register reject release report
|
|
21
|
+
return select sequence severity shared signal strong subtype then to transport type
|
|
22
|
+
unaffected units until use variable vmode vprop vunit wait when while with
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.keywords_type
|
|
27
|
+
@keywords_type ||= Set.new %w(
|
|
28
|
+
bit bit_vector boolean boolean_vector character integer integer_vector natural positive
|
|
29
|
+
real real_vector severity_level signed std_logic std_logic_vector std_ulogic
|
|
30
|
+
std_ulogic_vector string unsigned time time__vector
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.operator_words
|
|
35
|
+
@operator_words ||= Set.new %w(
|
|
36
|
+
abs and mod nand nor not or rem rol ror sla sll sra srl xnor xor
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
id = /[a-zA-Z][a-zA-Z0-9_]*/
|
|
41
|
+
|
|
42
|
+
state :whitespace do
|
|
43
|
+
rule /\s+/, Text
|
|
44
|
+
rule /\n/, Text
|
|
45
|
+
# Find Comments (VHDL doesn't support multiline comments)
|
|
46
|
+
rule /--.*$/, Comment::Single
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
state :statements do
|
|
50
|
+
|
|
51
|
+
# Find Numbers
|
|
52
|
+
rule /-?\d+/i, Num::Integer
|
|
53
|
+
rule /-?\d+[.]\d+/i, Num::Float
|
|
54
|
+
|
|
55
|
+
# Find Strings
|
|
56
|
+
rule /[box]?"[^"]*"/i, Str::Single
|
|
57
|
+
rule /'[^']?'/i, Str::Char
|
|
58
|
+
|
|
59
|
+
# Find Attributes
|
|
60
|
+
rule /'#{id}/i, Name::Attribute
|
|
61
|
+
|
|
62
|
+
# Punctuations
|
|
63
|
+
rule /[(),:;]/, Punctuation
|
|
64
|
+
|
|
65
|
+
# Boolean and NULL
|
|
66
|
+
rule /(?:true|false|null)\b/i, Name::Builtin
|
|
67
|
+
|
|
68
|
+
rule id do |m|
|
|
69
|
+
match = m[0].downcase #convert to lower case
|
|
70
|
+
if self.class.keywords.include? match
|
|
71
|
+
token Keyword
|
|
72
|
+
elsif self.class.keywords_type.include? match
|
|
73
|
+
token Keyword::Type
|
|
74
|
+
elsif self.class.operator_words.include? match
|
|
75
|
+
token Operator::Word
|
|
76
|
+
else
|
|
77
|
+
token Name
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
rule(
|
|
82
|
+
%r(=>|[*][*]|:=|\/=|>=|<=|<>|\?\?|\?=|\?\/=|\?>|\?<|\?>=|\?<=|<<|>>|[#&'*+-.\/:<=>\?@^]),
|
|
83
|
+
Operator
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
state :root do
|
|
89
|
+
|
|
90
|
+
mixin :whitespace
|
|
91
|
+
mixin :statements
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class VimL < RegexLexer
|
|
6
|
+
title "VimL"
|
|
7
|
+
desc "VimL, the scripting language for the Vim editor (vim.org)"
|
|
8
|
+
tag 'viml'
|
|
9
|
+
aliases 'vim', 'vimscript', 'ex'
|
|
10
|
+
filenames '*.vim', '*.vba', '.vimrc', '.exrc', '.gvimrc',
|
|
11
|
+
'_vimrc', '_exrc', '_gvimrc' # _ names for windows
|
|
12
|
+
|
|
13
|
+
mimetypes 'text/x-vim'
|
|
14
|
+
|
|
15
|
+
def self.keywords
|
|
16
|
+
load Pathname.new(__FILE__).dirname.join('viml/keywords.rb')
|
|
17
|
+
self.keywords
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
state :root do
|
|
21
|
+
rule /^(\s*)(".*?)$/ do
|
|
22
|
+
groups Text, Comment
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
rule /^\s*\\/, Str::Escape
|
|
26
|
+
|
|
27
|
+
rule /[ \t]+/, Text
|
|
28
|
+
|
|
29
|
+
# TODO: regexes can have other delimiters
|
|
30
|
+
rule %r(/(\\\\|\\/|[^\n/])*/), Str::Regex
|
|
31
|
+
rule %r("(\\\\|\\"|[^\n"])*"), Str::Double
|
|
32
|
+
rule %r('(\\\\|\\'|[^\n'])*'), Str::Single
|
|
33
|
+
|
|
34
|
+
# if it's not a string, it's a comment.
|
|
35
|
+
rule /(?<=\s)"[^-:.%#=*].*?$/, Comment
|
|
36
|
+
|
|
37
|
+
rule /-?\d+/, Num
|
|
38
|
+
rule /#[0-9a-f]{6}/i, Num::Hex
|
|
39
|
+
rule /^:/, Punctuation
|
|
40
|
+
rule /[():<>+=!\[\]{}\|,~.-]/, Punctuation
|
|
41
|
+
rule /\b(let|if|else|endif|elseif|fun|function|endfunction)\b/,
|
|
42
|
+
Keyword
|
|
43
|
+
|
|
44
|
+
rule /\b(NONE|bold|italic|underline|dark|light)\b/, Name::Builtin
|
|
45
|
+
|
|
46
|
+
rule /[absg]:\w+\b/, Name::Variable
|
|
47
|
+
rule /\b\w+\b/ do |m|
|
|
48
|
+
name = m[0]
|
|
49
|
+
keywords = self.class.keywords
|
|
50
|
+
|
|
51
|
+
if mapping_contains?(keywords[:command], name)
|
|
52
|
+
token Keyword
|
|
53
|
+
elsif mapping_contains?(keywords[:option], name)
|
|
54
|
+
token Name::Builtin
|
|
55
|
+
elsif mapping_contains?(keywords[:auto], name)
|
|
56
|
+
token Name::Builtin
|
|
57
|
+
else
|
|
58
|
+
token Text
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# no errors in VimL!
|
|
63
|
+
rule /./m, Text
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def mapping_contains?(mapping, word)
|
|
67
|
+
shortest, longest = find_likely_mapping(mapping, word)
|
|
68
|
+
|
|
69
|
+
shortest and word.start_with?(shortest) and
|
|
70
|
+
longest and longest.start_with?(word)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# binary search through the mappings to find the one that's likely
|
|
74
|
+
# to actually work.
|
|
75
|
+
def find_likely_mapping(mapping, word)
|
|
76
|
+
min = 0
|
|
77
|
+
max = mapping.size
|
|
78
|
+
|
|
79
|
+
until max == min
|
|
80
|
+
mid = (max + min) / 2
|
|
81
|
+
|
|
82
|
+
cmp, _ = mapping[mid]
|
|
83
|
+
|
|
84
|
+
case word <=> cmp
|
|
85
|
+
when 1
|
|
86
|
+
# too low
|
|
87
|
+
min = mid + 1
|
|
88
|
+
when -1
|
|
89
|
+
# too high
|
|
90
|
+
max = mid
|
|
91
|
+
when 0
|
|
92
|
+
# just right, abort!
|
|
93
|
+
return mapping[mid]
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
mapping[max - 1]
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|