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,231 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Mosel < RegexLexer
|
|
6
|
+
tag 'mosel'
|
|
7
|
+
filenames '*.mos'
|
|
8
|
+
title "Mosel"
|
|
9
|
+
desc "An optimization language used by Fico's Xpress."
|
|
10
|
+
# http://www.fico.com/en/products/fico-xpress-optimization-suite
|
|
11
|
+
filenames '*.mos'
|
|
12
|
+
|
|
13
|
+
mimetypes 'text/x-mosel'
|
|
14
|
+
|
|
15
|
+
def self.detect?(text)
|
|
16
|
+
return true if text =~ /^\s*(model|package)\s+/
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
20
|
+
|
|
21
|
+
############################################################################################################################
|
|
22
|
+
# General language lements
|
|
23
|
+
############################################################################################################################
|
|
24
|
+
|
|
25
|
+
core_keywords = %w(
|
|
26
|
+
and array as
|
|
27
|
+
boolean break
|
|
28
|
+
case count counter
|
|
29
|
+
declarations div do dynamic
|
|
30
|
+
elif else end evaluation exit
|
|
31
|
+
false forall forward from function
|
|
32
|
+
if imports in include initialisations initializations integer inter is_binary is_continuous is_free is_integer is_partint is_semcont is_semint is_sos1 is_sos2
|
|
33
|
+
linctr list
|
|
34
|
+
max min mod model mpvar
|
|
35
|
+
next not of options or
|
|
36
|
+
package parameters procedure
|
|
37
|
+
public prod range real record repeat requirements
|
|
38
|
+
set string sum
|
|
39
|
+
then to true
|
|
40
|
+
union until uses
|
|
41
|
+
version
|
|
42
|
+
while with
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
core_functions = %w(
|
|
46
|
+
abs arctan assert
|
|
47
|
+
bitflip bitneg bitset bitshift bittest bitval
|
|
48
|
+
ceil cos create currentdate currenttime cuthead cuttail
|
|
49
|
+
delcell exists exit exp exportprob
|
|
50
|
+
fclose fflush finalize findfirst findlast floor fopen fselect fskipline
|
|
51
|
+
getact getcoeff getcoeffs getdual getfid getfirst gethead getfname getlast getobjval getparam getrcost getreadcnt getreverse getsize getslack getsol gettail gettype getvars
|
|
52
|
+
iseof ishidden isodd ln log
|
|
53
|
+
makesos1 makesos2 maxlist minlist
|
|
54
|
+
publish
|
|
55
|
+
random read readln reset reverse round
|
|
56
|
+
setcoeff sethidden setioerr setname setparam setrandseed settype sin splithead splittail sqrt strfmt substr
|
|
57
|
+
timestamp
|
|
58
|
+
unpublish
|
|
59
|
+
write writeln
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
############################################################################################################################
|
|
63
|
+
# mmxprs module elements
|
|
64
|
+
############################################################################################################################
|
|
65
|
+
|
|
66
|
+
mmxprs_functions = %w(
|
|
67
|
+
addmipsol
|
|
68
|
+
basisstability
|
|
69
|
+
calcsolinfo clearmipdir clearmodcut command copysoltoinit
|
|
70
|
+
defdelayedrows defsecurevecs
|
|
71
|
+
estimatemarginals
|
|
72
|
+
fixglobal
|
|
73
|
+
getbstat getdualray getiis getiissense getiistype getinfcause getinfeas getlb getloadedlinctrs getloadedmpvars getname getprimalray getprobstat getrange getsensrng getsize getsol getub getvars
|
|
74
|
+
implies indicator isiisvalid isintegral loadbasis
|
|
75
|
+
loadmipsol loadprob
|
|
76
|
+
maximize minimize
|
|
77
|
+
postsolve
|
|
78
|
+
readbasis readdirs readsol refinemipsol rejectintsol repairinfeas resetbasis resetiis resetsol
|
|
79
|
+
savebasis savemipsol savesol savestate selectsol setbstat setcallback setcbcutoff setgndata setlb setmipdir setmodcut setsol setub setucbdata stopoptimize
|
|
80
|
+
unloadprob
|
|
81
|
+
writebasis writedirs writeprob writesol
|
|
82
|
+
xor
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
mmxpres_constants = %w(XPRS_OPT XPRS_UNF XPRS_INF XPRS_UNB XPRS_OTH)
|
|
86
|
+
|
|
87
|
+
mmxprs_parameters = %w(XPRS_colorder XPRS_enumduplpol XPRS_enummaxsol XPRS_enumsols XPRS_fullversion XPRS_loadnames XPRS_problem XPRS_probname XPRS_verbose)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
############################################################################################################################
|
|
91
|
+
# mmsystem module elements
|
|
92
|
+
############################################################################################################################
|
|
93
|
+
|
|
94
|
+
mmsystem_functions = %w(
|
|
95
|
+
addmonths
|
|
96
|
+
copytext cuttext
|
|
97
|
+
deltext
|
|
98
|
+
endswith expandpath
|
|
99
|
+
fcopy fdelete findfiles findtext fmove
|
|
100
|
+
getasnumber getchar getcwd getdate getday getdaynum getdays getdirsep
|
|
101
|
+
getendparse setendparse
|
|
102
|
+
getenv getfsize getfstat getftime gethour getminute getmonth getmsec getpathsep
|
|
103
|
+
getqtype setqtype
|
|
104
|
+
getsecond
|
|
105
|
+
getsepchar setsepchar
|
|
106
|
+
getsize
|
|
107
|
+
getstart setstart
|
|
108
|
+
getsucc setsucc
|
|
109
|
+
getsysinfo getsysstat gettime
|
|
110
|
+
gettmpdir
|
|
111
|
+
gettrim settrim
|
|
112
|
+
getweekday getyear
|
|
113
|
+
inserttext isvalid
|
|
114
|
+
makedir makepath newtar
|
|
115
|
+
newzip nextfield
|
|
116
|
+
openpipe
|
|
117
|
+
parseextn parseint parsereal parsetext pastetext pathmatch pathsplit
|
|
118
|
+
qsort quote
|
|
119
|
+
readtextline regmatch regreplace removedir removefiles
|
|
120
|
+
setchar setdate setday setenv sethour
|
|
121
|
+
setminute setmonth setmsec setsecond settime setyear sleep startswith system
|
|
122
|
+
tarlist textfmt tolower toupper trim
|
|
123
|
+
untar unzip
|
|
124
|
+
ziplist
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
mmsystem_parameters = %w(datefmt datetimefmt monthnames sys_endparse sys_fillchar sys_pid sys_qtype sys_regcache sys_sepchar)
|
|
128
|
+
|
|
129
|
+
############################################################################################################################
|
|
130
|
+
# mmjobs module elements
|
|
131
|
+
############################################################################################################################
|
|
132
|
+
|
|
133
|
+
mmjobs_instance_mgmt_functions = %w(
|
|
134
|
+
clearaliases connect
|
|
135
|
+
disconnect
|
|
136
|
+
findxsrvs
|
|
137
|
+
getaliases getbanner gethostalias
|
|
138
|
+
sethostalias
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
mmjobs_model_mgmt_functions = %w(
|
|
142
|
+
compile
|
|
143
|
+
detach
|
|
144
|
+
getannidents getannotations getexitcode getgid getid getnode getrmtid getstatus getuid
|
|
145
|
+
load
|
|
146
|
+
reset resetmodpar run
|
|
147
|
+
setcontrol setdefstream setmodpar setworkdir stop
|
|
148
|
+
unload
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
mmjobs_synchornization_functions = %w(
|
|
152
|
+
dropnextevent
|
|
153
|
+
getclass getfromgid getfromid getfromuid getnextevent getvalue
|
|
154
|
+
isqueueempty
|
|
155
|
+
nullevent
|
|
156
|
+
peeknextevent
|
|
157
|
+
send setgid setuid
|
|
158
|
+
wait waitfor
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
mmjobs_functions = mmjobs_instance_mgmt_functions + mmjobs_model_mgmt_functions + mmjobs_synchornization_functions
|
|
162
|
+
|
|
163
|
+
mmjobs_parameters = %w(conntmpl defaultnode fsrvdelay fsrvnbiter fsrvport jobid keepalive nodenumber parentnumber)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
state :whitespace do
|
|
167
|
+
# Spaces
|
|
168
|
+
rule /\s+/m, Text
|
|
169
|
+
# ! Comments
|
|
170
|
+
rule %r((!).*$\n?), Comment::Single
|
|
171
|
+
# (! Comments !)
|
|
172
|
+
rule %r(\(!.*?!\))m, Comment::Multiline
|
|
173
|
+
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
# From Mosel documentation:
|
|
178
|
+
# Constant strings of characters must be quoted with single (') or double quote (") and may extend over several lines. Strings enclosed in double quotes may contain C-like escape sequences introduced by the 'backslash'
|
|
179
|
+
# character (\a \b \f \n \r \t \v \xxx with xxx being the character code as an octal number).
|
|
180
|
+
# Each sequence is replaced by the corresponding control character (e.g. \n is the `new line' command) or, if no control character exists, by the second character of the sequence itself (e.g. \\ is replaced by '\').
|
|
181
|
+
# The escape sequences are not interpreted if they are contained in strings that are enclosed in single quotes.
|
|
182
|
+
|
|
183
|
+
state :single_quotes do
|
|
184
|
+
rule /'/, Str::Single, :pop!
|
|
185
|
+
rule /[^']+/, Str::Single
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
state :double_quotes do
|
|
189
|
+
rule /"/, Str::Double, :pop!
|
|
190
|
+
rule /(\\"|\\[0-7]{1,3}\D|\\[abfnrtv]|\\\\)/, Str::Escape
|
|
191
|
+
rule /[^"]/, Str::Double
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
state :base do
|
|
195
|
+
|
|
196
|
+
rule %r{"}, Str::Double, :double_quotes
|
|
197
|
+
rule %r{'}, Str::Single, :single_quotes
|
|
198
|
+
|
|
199
|
+
rule %r{((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?}, Num
|
|
200
|
+
rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation
|
|
201
|
+
# rule %r{'([^']|'')*'}, Str
|
|
202
|
+
# rule /"(\\\\|\\"|[^"])*"/, Str
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
rule /(true|false)\b/i, Name::Builtin
|
|
207
|
+
rule /\b(#{core_keywords.join('|')})\b/i, Keyword
|
|
208
|
+
rule /\b(#{core_functions.join('|')})\b/, Name::Builtin
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
rule /\b(#{mmxprs_functions.join('|')})\b/, Name::Function
|
|
213
|
+
rule /\b(#{mmxpres_constants.join('|')})\b/, Name::Constant
|
|
214
|
+
rule /\b(#{mmxprs_parameters.join('|')})\b/i, Name::Property
|
|
215
|
+
|
|
216
|
+
rule /\b(#{mmsystem_functions.join('|')})\b/i, Name::Function
|
|
217
|
+
rule /\b(#{mmsystem_parameters.join('|')})\b/, Name::Property
|
|
218
|
+
|
|
219
|
+
rule /\b(#{mmjobs_functions.join('|')})\b/i, Name::Function
|
|
220
|
+
rule /\b(#{mmjobs_parameters.join('|')})\b/, Name::Property
|
|
221
|
+
|
|
222
|
+
rule id, Name
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
state :root do
|
|
226
|
+
mixin :whitespace
|
|
227
|
+
mixin :base
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class MXML < RegexLexer
|
|
6
|
+
title "MXML"
|
|
7
|
+
desc "MXML"
|
|
8
|
+
tag 'mxml'
|
|
9
|
+
filenames '*.mxml'
|
|
10
|
+
mimetypes 'application/xv+xml'
|
|
11
|
+
|
|
12
|
+
state :root do
|
|
13
|
+
rule /[^<&]+/, Text
|
|
14
|
+
rule /&\S*?;/, Name::Entity
|
|
15
|
+
|
|
16
|
+
rule /<!\[CDATA\[/m do
|
|
17
|
+
token Comment::Preproc
|
|
18
|
+
push :actionscript_content
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
rule /<!--/, Comment, :comment
|
|
22
|
+
rule /<\?.*?\?>/, Comment::Preproc
|
|
23
|
+
rule /<![^>]*>/, Comment::Preproc
|
|
24
|
+
|
|
25
|
+
rule %r(<\s*[\w:.-]+)m, Name::Tag, :tag # opening tags
|
|
26
|
+
rule %r(<\s*/\s*[\w:.-]+\s*>)m, Name::Tag # closing tags
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
state :comment do
|
|
30
|
+
rule /[^-]+/m, Comment
|
|
31
|
+
rule /-->/, Comment, :pop!
|
|
32
|
+
rule /-/, Comment
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
state :tag do
|
|
36
|
+
rule /\s+/m, Text
|
|
37
|
+
rule /[\w.:-]+\s*=/m, Name::Attribute, :attribute
|
|
38
|
+
rule %r(/?\s*>), Name::Tag, :root
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
state :attribute do
|
|
42
|
+
rule /\s+/m, Text
|
|
43
|
+
rule /(")({|@{)/m do
|
|
44
|
+
groups Str, Punctuation
|
|
45
|
+
push :actionscript_attribute
|
|
46
|
+
end
|
|
47
|
+
rule /".*?"|'.*?'|[^\s>]+/, Str, :tag
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
state :actionscript_content do
|
|
51
|
+
rule /\]\]\>/m, Comment::Preproc, :pop!
|
|
52
|
+
rule /.*?(?=\]\]\>)/m do
|
|
53
|
+
delegate Actionscript
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
state :actionscript_attribute do
|
|
58
|
+
rule /(})(")/m do
|
|
59
|
+
groups Punctuation, Str
|
|
60
|
+
push :tag
|
|
61
|
+
end
|
|
62
|
+
rule /.*?(?=}")/m do
|
|
63
|
+
delegate Actionscript
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Nasm < RegexLexer
|
|
6
|
+
tag 'nasm'
|
|
7
|
+
filenames '*.asm'
|
|
8
|
+
#mimetypes 'text/x-chdr', 'text/x-csrc'
|
|
9
|
+
|
|
10
|
+
title "Nasm"
|
|
11
|
+
desc "Netwide Assembler"
|
|
12
|
+
|
|
13
|
+
ws = %r((?:\s|;.*?\n/)+)
|
|
14
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
15
|
+
|
|
16
|
+
#todo: pull more instructions from: http://www.nasm.us/doc/nasmdocb.html
|
|
17
|
+
#so far, we have sections 1.1 and 1.2
|
|
18
|
+
|
|
19
|
+
def self.keywords
|
|
20
|
+
@keywords ||= Set.new %w(
|
|
21
|
+
aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts
|
|
22
|
+
call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg
|
|
23
|
+
cmpxchg16b cmpxchg486 cmpxchg8b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div
|
|
24
|
+
dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove
|
|
25
|
+
fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp
|
|
26
|
+
fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr
|
|
27
|
+
fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e
|
|
28
|
+
fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw
|
|
29
|
+
fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos
|
|
30
|
+
fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip
|
|
31
|
+
fucomp fucompp fwait fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc
|
|
32
|
+
incbin insb insd insw int int01 int03 int1 int3 into invd invlpg invlpga invpcid iret
|
|
33
|
+
iretd iretq iretw jcxz jecxz jmp jmpe jrcxz lahf lar lds lea leave les lfence lfs
|
|
34
|
+
lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne
|
|
35
|
+
loopnz loopz lsl lss ltr mfence monitor monitorx mov movd movq movsb movsd movsq movsw
|
|
36
|
+
movsx movsxd movzx mul mwait mwaitx neg nop not or out outsb outsd outsw packssdw
|
|
37
|
+
packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn
|
|
38
|
+
pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc
|
|
39
|
+
pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt
|
|
40
|
+
pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw
|
|
41
|
+
pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch
|
|
42
|
+
prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw
|
|
43
|
+
psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd
|
|
44
|
+
push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdm rdmsr rdpmc rdshr
|
|
45
|
+
rdtsc rdtscp ret retf retn rol ror rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd
|
|
46
|
+
scasq scasw sfence sgdt shl shld shr shrd sidt skinit sldt smi smint smintold smsw
|
|
47
|
+
stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter
|
|
48
|
+
sysexit sysret test ud0 ud1 ud2 ud2a ud2b umov verr verw wbinvd wrmsr wrshr xadd xbts
|
|
49
|
+
xchg xlat xlatb xor
|
|
50
|
+
|
|
51
|
+
cmova cmovae cmovb cmovbe cmovc cmove cmovg cmovge cmovl cmovle cmovna cmovnae cmovnb cmovnbe cmovnc cmovne cmovng cmovnge cmovnl cmovnle cmovno cmovnp cmovns cmovnz cmovo cmovp cmovpe cmovpo cmovs cmovz
|
|
52
|
+
|
|
53
|
+
ja jae jb jbe jc jcxz jecxz je jg jge jl jle jna jnae jnb jnbe jnc jne jng jnge jnl jnle jno jnp jns jnz jo jp jpe jpo js jz
|
|
54
|
+
|
|
55
|
+
seta setae setb setbe setc sete setg setge setl setle setna setnae setnb setnbe setnc setne setng setnge setnl setnle setno setnp setns setnz seto setp setpe setpo sets setz
|
|
56
|
+
|
|
57
|
+
AAA AAD AAM AAS ADC ADD AND ARPL BB0_RESET BB1_RESET BOUND BSF BSR BSWAP BT BTC BTR BTS
|
|
58
|
+
CALL CBW CDQ CDQE CLC CLD CLI CLTS CMC CMP CMPSB CMPSD CMPSQ CMPSW CMPXCHG
|
|
59
|
+
CMPXCHG16B CMPXCHG486 CMPXCHG8B CPUID CPU_READ CPU_WRITE CQO CWD CWDE DAA DAS DEC DIV
|
|
60
|
+
DMINT EMMS ENTER EQU F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCMOVB FCMOVBE FCMOVE
|
|
61
|
+
FCMOVNB FCMOVNBE FCMOVNE FCMOVNU FCMOVU FCOM FCOMI FCOMIP FCOMP FCOMPP FCOS FDECSTP
|
|
62
|
+
FDISI FDIV FDIVP FDIVR FDIVRP FEMMS FENI FFREE FFREEP FIADD FICOM FICOMP FIDIV FIDIVR
|
|
63
|
+
FILD FIMUL FINCSTP FINIT FIST FISTP FISTTP FISUB FISUBR FLD FLD1 FLDCW FLDENV FLDL2E
|
|
64
|
+
FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE FNSTCW
|
|
65
|
+
FNSTENV FNSTSW FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FSCALE FSETPM FSIN FSINCOS
|
|
66
|
+
FSQRT FST FSTCW FSTENV FSTP FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI FUCOMIP
|
|
67
|
+
FUCOMP FUCOMPP FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 HLT IBTS ICEBP IDIV IMUL IN INC
|
|
68
|
+
INCBIN INSB INSD INSW INT INT01 INT03 INT1 INT3 INTO INVD INVLPG INVLPGA INVPCID IRET
|
|
69
|
+
IRETD IRETQ IRETW JCXZ JECXZ JMP JMPE JRCXZ LAHF LAR LDS LEA LEAVE LES LFENCE LFS
|
|
70
|
+
LGDT LGS LIDT LLDT LMSW LOADALL LOADALL286 LODSB LODSD LODSQ LODSW LOOP LOOPE LOOPNE
|
|
71
|
+
LOOPNZ LOOPZ LSL LSS LTR MFENCE MONITOR MONITORX MOV MOVD MOVQ MOVSB MOVSD MOVSQ MOVSW
|
|
72
|
+
MOVSX MOVSXD MOVZX MUL MWAIT MWAITX NEG NOP NOT OR OUT OUTSB OUTSD OUTSW PACKSSDW
|
|
73
|
+
PACKSSWB PACKUSWB PADDB PADDD PADDSB PADDSIW PADDSW PADDUSB PADDUSW PADDW PAND PANDN
|
|
74
|
+
PAUSE PAVEB PAVGUSB PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW PDISTIB PF2ID PFACC
|
|
75
|
+
PFADD PFCMPEQ PFCMPGE PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 PFRCPIT2 PFRSQIT1 PFRSQRT
|
|
76
|
+
PFSUB PFSUBR PI2FD PMACHRIW PMADDWD PMAGW PMULHRIW PMULHRWA PMULHRWC PMULHW PMULLW
|
|
77
|
+
PMVGEZB PMVLZB PMVNZB PMVZB POP POPA POPAD POPAW POPF POPFD POPFQ POPFW POR PREFETCH
|
|
78
|
+
PREFETCHW PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD PSUBSB PSUBSIW
|
|
79
|
+
PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW PUNPCKHDQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD
|
|
80
|
+
PUSH PUSHA PUSHAD PUSHAW PUSHF PUSHFD PUSHFQ PUSHFW PXOR RCL RCR RDM RDMSR RDPMC RDSHR
|
|
81
|
+
RDTSC RDTSCP RET RETF RETN ROL ROR RSDC RSLDT RSM RSTS SAHF SAL SALC SAR SBB SCASB SCASD
|
|
82
|
+
SCASQ SCASW SFENCE SGDT SHL SHLD SHR SHRD SIDT SKINIT SLDT SMI SMINT SMINTOLD SMSW
|
|
83
|
+
STC STD STI STOSB STOSD STOSQ STOSW STR SUB SVDC SVLDT SVTS SWAPGS SYSCALL SYSENTER
|
|
84
|
+
SYSEXIT SYSRET TEST UD0 UD1 UD2 UD2A UD2B UMOV VERR VERW WBINVD WRMSR WRSHR XADD XBTS
|
|
85
|
+
XCHG XLAT XLATB XOR
|
|
86
|
+
|
|
87
|
+
CMOVA CMOVAE CMOVB CMOVBE CMOVC CMOVE CMOVG CMOVGE CMOVL CMOVLE CMOVNA CMOVNAE CMOVNB CMOVNBE CMOVNC CMOVNE CMOVNG CMOVNGE CMOVNL CMOVNLE CMOVNO CMOVNP CMOVNS CMOVNZ CMOVO CMOVP CMOVPE CMOVPO CMOVS CMOVZ
|
|
88
|
+
|
|
89
|
+
JA JAE JB JBE JC JCXZ JECXZ JE JG JGE JL JLE JNA JNAE JNB JNBE JNC JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ
|
|
90
|
+
|
|
91
|
+
SETA SETAE SETB SETBE SETC SETE SETG SETGE SETL SETLE SETNA SETNAE SETNB SETNBE SETNC SETNE SETNG SETNGE SETNL SETNLE SETNO SETNP SETNS SETNZ SETO SETP SETPE SETPO SETS SETZ
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def self.keywords_type
|
|
96
|
+
@keywords_type ||= Set.new %w(
|
|
97
|
+
DB DW DD DQ DT DO DY DZ RESB RESW RESD RESQ REST RESO RESY RESZ
|
|
98
|
+
db dq dd dq dt do dy dz resb resw resd resq rest reso resy resz
|
|
99
|
+
)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def self.reserved
|
|
103
|
+
@reserved ||= Set.new %w(
|
|
104
|
+
global extern macro endmacro assign rep endrep section
|
|
105
|
+
GLOBAL EXTERN MACRO ENDMACRO ASSIGN REP ENDREP SECTION
|
|
106
|
+
)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def self.builtins
|
|
110
|
+
@builtins ||= []
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
start { push :expr_bol }
|
|
114
|
+
|
|
115
|
+
state :expr_bol do
|
|
116
|
+
mixin :inline_whitespace
|
|
117
|
+
rule(//) { pop! }
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
state :inline_whitespace do
|
|
121
|
+
rule /[ \t\r]+/, Text
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
state :whitespace do
|
|
125
|
+
rule /\n+/m, Text, :expr_bol
|
|
126
|
+
rule %r(//(\\.|.)*?\n), Comment::Single, :expr_bol
|
|
127
|
+
mixin :inline_whitespace
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
state :expr_whitespace do
|
|
131
|
+
rule /\n+/m, Text, :expr_bol
|
|
132
|
+
mixin :whitespace
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
state :root do
|
|
136
|
+
mixin :expr_whitespace
|
|
137
|
+
rule(//) { push :statement }
|
|
138
|
+
rule /^%[a-zA-Z0-9]+/, Comment::Preproc, :statement
|
|
139
|
+
|
|
140
|
+
rule(
|
|
141
|
+
%r(&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>.]),
|
|
142
|
+
Operator
|
|
143
|
+
)
|
|
144
|
+
rule /;.*/, Comment, :statement
|
|
145
|
+
rule /^[a-zA-Z]+[a-zA-Z0-9]*:/, Name::Function
|
|
146
|
+
rule /;.*/, Comment
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
state :statement do
|
|
150
|
+
mixin :expr_whitespace
|
|
151
|
+
mixin :statements
|
|
152
|
+
rule /;.*/, Comment
|
|
153
|
+
rule /^%[a-zA-Z0-9]+/, Comment::Preproc
|
|
154
|
+
rule /[a-zA-Z]+%[0-9]+:/, Name::Function
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
state :statements do
|
|
158
|
+
mixin :whitespace
|
|
159
|
+
rule /L?"/, Str, :string
|
|
160
|
+
rule /[a-zA-Z]+%[0-9]+:/, Name::Function #labels/subroutines/functions
|
|
161
|
+
rule %r(L?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
|
162
|
+
rule /0x[0-9a-f]+[lu]*/i, Num::Hex
|
|
163
|
+
rule /\d+[lu]*/i, Num::Integer
|
|
164
|
+
rule %r(\*/), Error
|
|
165
|
+
rule %r([~&*+=\|?:<>/-]), Operator
|
|
166
|
+
rule /[(),.]/, Punctuation
|
|
167
|
+
rule /\[[a-zA-Z0-9]*\]/, Punctuation
|
|
168
|
+
rule /%[0-9]+/, Keyword::Reserved
|
|
169
|
+
rule /[a-zA-Z]+%[0-9]+/, Name::Function #labels/subroutines/functions
|
|
170
|
+
|
|
171
|
+
#rule /(?<!\.)#{id}/ do |m|
|
|
172
|
+
rule id do |m|
|
|
173
|
+
name = m[0]
|
|
174
|
+
|
|
175
|
+
if self.class.keywords.include? name
|
|
176
|
+
token Keyword
|
|
177
|
+
elsif self.class.keywords_type.include? name
|
|
178
|
+
token Keyword::Type
|
|
179
|
+
elsif self.class.reserved.include? name
|
|
180
|
+
token Keyword::Reserved
|
|
181
|
+
elsif self.class.builtins.include? name
|
|
182
|
+
token Name::Builtin
|
|
183
|
+
else
|
|
184
|
+
token Name
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
state :string do
|
|
190
|
+
rule /"/, Str, :pop!
|
|
191
|
+
rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
|
|
192
|
+
rule /[^\\"\n]+/, Str
|
|
193
|
+
rule /\\\n/, Str
|
|
194
|
+
rule /\\/, Str # stray backslash
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|