rouge 3.14.0 → 3.15.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 +4 -4
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/lexer.rb +1 -1
- data/lib/rouge/lexers/console.rb +37 -0
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/jinja.rb +5 -3
- data/lib/rouge/lexers/llvm.rb +55 -46
- data/lib/rouge/lexers/objective_c.rb +3 -172
- data/lib/rouge/lexers/objective_c/common.rb +184 -0
- data/lib/rouge/lexers/objective_cpp.rb +31 -0
- data/lib/rouge/lexers/python.rb +2 -1
- data/lib/rouge/lexers/rust.rb +1 -1
- data/lib/rouge/lexers/swift.rb +2 -1
- data/lib/rouge/version.rb +1 -1
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5da5e5d1e737275e6a41550af0aaa6af398cb8517b67717f07d9ad632c13e28a
|
4
|
+
data.tar.gz: 4dc38a2b67f0eeb0890143442c411be221e00fc78718c8f404d9dbf6f787b29a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 911cf95350e23be5bb1bfedbf178e3872a37d5930f201156fa7daff16a2bad5609043cae7a917a1aa8adf9b863b28538266217271693da8cbfe68aa20a2df82f
|
7
|
+
data.tar.gz: 5f363794c19033fd11c3a5360fbcf550536f8f5292962a0ab70e434d1f4f1aa5711c938c19ddf088b4eb76140e54e24029229524321048bc451950a006140f51
|
@@ -0,0 +1,16 @@
|
|
1
|
+
include "MUMPS"
|
2
|
+
|
3
|
+
// Parameters
|
4
|
+
func f = 1.;
|
5
|
+
|
6
|
+
// Mesh
|
7
|
+
int nn = 25; //Mesh quality
|
8
|
+
mesh Th = square(nn, nn);
|
9
|
+
|
10
|
+
// Fespace
|
11
|
+
func Pk = P2;
|
12
|
+
fespace Uh(Th, Pk);
|
13
|
+
Uh u;
|
14
|
+
|
15
|
+
// Plot
|
16
|
+
plot(u, nbiso=30, fill=true, value=true, cmm="A");
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Rec {
|
2
|
+
-- RHS size: {terms: 24, types: 3, coercions: 0, joins: 0/0}
|
3
|
+
Main.fib_fib [Occ=LoopBreaker] :: Integer -> Integer
|
4
|
+
[GblId, Arity=1, Str=<S,U>, Unf=OtherCon []]
|
5
|
+
Main.fib_fib
|
6
|
+
= \ (ds_d2OU :: Integer) ->
|
7
|
+
case integer-gmp-1.0.2.0:GHC.Integer.Type.eqInteger#
|
8
|
+
ds_d2OU Main.fib1
|
9
|
+
of {
|
10
|
+
__DEFAULT ->
|
11
|
+
case integer-gmp-1.0.2.0:GHC.Integer.Type.eqInteger#
|
12
|
+
ds_d2OU Main.fib3
|
13
|
+
of {
|
14
|
+
__DEFAULT ->
|
15
|
+
integer-gmp-1.0.2.0:GHC.Integer.Type.plusInteger
|
16
|
+
(Main.fib_fib
|
17
|
+
(integer-gmp-1.0.2.0:GHC.Integer.Type.minusInteger
|
18
|
+
ds_d2OU Main.fib3))
|
19
|
+
(Main.fib_fib
|
20
|
+
(integer-gmp-1.0.2.0:GHC.Integer.Type.minusInteger
|
21
|
+
ds_d2OU Main.fib2));
|
22
|
+
1# -> Main.fib3
|
23
|
+
};
|
24
|
+
1# -> Main.fib1
|
25
|
+
}
|
26
|
+
end Rec }
|
@@ -0,0 +1,17 @@
|
|
1
|
+
@import Foundation;
|
2
|
+
#import <array>
|
3
|
+
#include <vector>
|
4
|
+
|
5
|
+
@interface IntegerArray : NSObject {
|
6
|
+
std::vector<NSUInteger> _numbers;
|
7
|
+
}
|
8
|
+
@property(readonly) NSUInteger count;
|
9
|
+
|
10
|
+
- (instancetype)initWithNumbers:(NSUInteger *)numbers count:(NSUInteger)count;
|
11
|
+
- (NSUInteger)numberAtIndex:(NSUInteger)index;
|
12
|
+
@end
|
13
|
+
|
14
|
+
int main(int argc, char **argv) {
|
15
|
+
auto numbers = std::array<NSUInteger, 3>{1, 2, 3};
|
16
|
+
NSLog(@"%@", [[IntegerArray alloc] initWithNumbers:numbers.data() count:numbers.size()]);
|
17
|
+
}
|
data/lib/rouge/lexer.rb
CHANGED
data/lib/rouge/lexers/console.rb
CHANGED
@@ -3,6 +3,38 @@
|
|
3
3
|
|
4
4
|
module Rouge
|
5
5
|
module Lexers
|
6
|
+
# The {ConsoleLexer} class is intended to lex content that represents the
|
7
|
+
# text that would display in a console/terminal. As distinct from the
|
8
|
+
# {Shell} lexer, {ConsoleLexer} will try to parse out the prompt from each
|
9
|
+
# line before passing the remainder of the line to the language lexer for
|
10
|
+
# the shell (by default, the {Shell} lexer).
|
11
|
+
#
|
12
|
+
# The {ConsoleLexer} class accepts four options:
|
13
|
+
# 1. **lang**: the shell language to lex (default: `shell`);
|
14
|
+
# 2. **output**: the output language (default: `plaintext?token=Generic.Output`);
|
15
|
+
# 3. **prompt**: comma-separated list of strings that indicate the end of a
|
16
|
+
# prompt (default: `$,#,>,;`);
|
17
|
+
# 4. **comments**: whether to enable comments.
|
18
|
+
#
|
19
|
+
# The comments option, if enabled, will lex lines that begin with a `#` as a
|
20
|
+
# comment. Please note that this option will only work if the prompt is
|
21
|
+
# either not manually specified or, if manually specified, does not include
|
22
|
+
# the `#` character.
|
23
|
+
#
|
24
|
+
# Most Markdown lexers that recognise GitHub-Flavored Markdown syntax, will
|
25
|
+
# pass the language string to Rouge as written in the original document.
|
26
|
+
# This allows an end user to pass options to {ConsoleLexer} by passing them
|
27
|
+
# as CGI-style parameters as in the example below.
|
28
|
+
#
|
29
|
+
# @example
|
30
|
+
# <pre>Here's some regular text.
|
31
|
+
#
|
32
|
+
# ```console?comments=true
|
33
|
+
# # This is a comment
|
34
|
+
# $ cp foo bar
|
35
|
+
# ```
|
36
|
+
#
|
37
|
+
# Some more regular text.</pre>
|
6
38
|
class ConsoleLexer < Lexer
|
7
39
|
tag 'console'
|
8
40
|
aliases 'terminal', 'shell_session', 'shell-session'
|
@@ -31,6 +63,8 @@ module Rouge
|
|
31
63
|
def end_chars
|
32
64
|
@end_chars ||= if @prompt.any?
|
33
65
|
@prompt.reject { |c| c.empty? }
|
66
|
+
elsif allow_comments?
|
67
|
+
%w($ > ;)
|
34
68
|
else
|
35
69
|
%w($ # > ;)
|
36
70
|
end
|
@@ -100,6 +134,9 @@ module Rouge
|
|
100
134
|
def process_line(input, &output)
|
101
135
|
input.scan(line_regex)
|
102
136
|
|
137
|
+
# As a nicety, support the use of elisions in input text. A user can
|
138
|
+
# write a line with only `<...>` or one or more `.` characters and
|
139
|
+
# Rouge will treat it as a comment.
|
103
140
|
if input[0] =~ /\A\s*(?:<[.]+>|[.]+)\s*\z/
|
104
141
|
puts "console: matched snip #{input[0].inspect}" if @debug
|
105
142
|
output_lexer.reset!
|
@@ -0,0 +1,240 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
load_lexer 'cpp.rb'
|
7
|
+
|
8
|
+
class FreeFEM < Cpp
|
9
|
+
title "FreeFEM"
|
10
|
+
desc "The FreeFEM programming language (freefem.org)"
|
11
|
+
|
12
|
+
tag 'freefem'
|
13
|
+
aliases 'ff'
|
14
|
+
filenames '*.edp', '*.idp'
|
15
|
+
mimetypes 'text/x-ffhdr', 'text/x-ffsrc'
|
16
|
+
|
17
|
+
# Override C/C++ ones (for example, `do` does not exists)
|
18
|
+
def self.keywords
|
19
|
+
@keywords ||= Set.new(%w(
|
20
|
+
break catch continue else for if return try while
|
21
|
+
))
|
22
|
+
end
|
23
|
+
|
24
|
+
# Override C/C++ ones (for example, `double` does not exists)
|
25
|
+
def self.keywords_type
|
26
|
+
@keywords_type ||= Set.new(%w(
|
27
|
+
bool border complex dmatrix fespace func gslspline ifstream int macro
|
28
|
+
matrix mesh mesh3 mpiComm mpiGroup mpiRequest NewMacro EndMacro
|
29
|
+
ofstream Pmmap problem Psemaphore real solve string varf
|
30
|
+
))
|
31
|
+
end
|
32
|
+
|
33
|
+
# Override C/C++ ones (totally different)
|
34
|
+
def self.reserved
|
35
|
+
@reserved ||= Set.new(%w(
|
36
|
+
BDM1 BDM1Ortho Edge03d Edge13d Edge23d FEQF HCT P0 P03d P0Edge P1
|
37
|
+
P13d P1b P1b3d P1bl P1bl3d P1dc P1Edge P1nc P2 P23d P2b P2BR P2dc
|
38
|
+
P2Edge P2h P2Morley P2pnc P3 P3dc P3Edge P4 P4dc P4Edge P5Edge RT0
|
39
|
+
RT03d RT0Ortho RT1 RT1Ortho RT2 RT2Ortho
|
40
|
+
|
41
|
+
qf1pE qf1pElump qf1pT qf1pTlump qfV1 qfV1lump qf2pE qf2pT qf2pT4P1
|
42
|
+
qfV2 qf3pE qf4pE qf5pE qf5pT qfV5 qf7pT qf9pT qfnbpE
|
43
|
+
|
44
|
+
ARGV append area be binary BoundaryEdge bordermeasure CG Cholesky cin
|
45
|
+
cout Crout default diag edgeOrientation endl FILE fixed GMRES good
|
46
|
+
hTriangle im imax imin InternalEdge l1 l2 label lenEdge length LINE
|
47
|
+
linfty LU m max measure min mpiAnySource mpiBAND mpiBXOR mpiCommWorld
|
48
|
+
mpiLAND mpiLOR mpiLXOR mpiMAX mpiMIN mpiPROD mpirank mpisize mpiSUM
|
49
|
+
mpiUndefined n N nbe ndof ndofK noshowbase noshowpos notaregion nt
|
50
|
+
nTonEdge nuEdge nuTriangle nv P pi precision quantile re region
|
51
|
+
scientific searchMethod setw showbase showpos sparsesolver sum tellp
|
52
|
+
true UMFPACK unused whoinElement verbosity version volume x y z
|
53
|
+
))
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.builtins
|
57
|
+
@builtins ||= Set.new(%w(
|
58
|
+
abs acos acosh adaptmesh adj AffineCG AffineGMRES arg asin asinh
|
59
|
+
assert atan atan2 atanh atof atoi BFGS broadcast buildlayers
|
60
|
+
buildmesh ceil chi complexEigenValue copysign change checkmovemesh
|
61
|
+
clock cmaes conj convect cos cosh cube d dd dfft diffnp diffpos
|
62
|
+
dimKrylov dist dumptable dx dxx dxy dxz dy dyx dyy dyz dz dzx dzy dzz
|
63
|
+
EigenValue emptymesh erf erfc exec exit exp fdim ffind find floor
|
64
|
+
flush fmax fmin fmod freeyams getARGV getline gmshload gmshload3
|
65
|
+
gslcdfugaussianP gslcdfugaussianQ gslcdfugaussianPinv
|
66
|
+
gslcdfugaussianQinv gslcdfgaussianP gslcdfgaussianQ
|
67
|
+
gslcdfgaussianPinv gslcdfgaussianQinv gslcdfgammaP gslcdfgammaQ
|
68
|
+
gslcdfgammaPinv gslcdfgammaQinv gslcdfcauchyP gslcdfcauchyQ
|
69
|
+
gslcdfcauchyPinv gslcdfcauchyQinv gslcdflaplaceP gslcdflaplaceQ
|
70
|
+
gslcdflaplacePinv gslcdflaplaceQinv gslcdfrayleighP gslcdfrayleighQ
|
71
|
+
gslcdfrayleighPinv gslcdfrayleighQinv gslcdfchisqP gslcdfchisqQ
|
72
|
+
gslcdfchisqPinv gslcdfchisqQinv gslcdfexponentialP gslcdfexponentialQ
|
73
|
+
gslcdfexponentialPinv gslcdfexponentialQinv gslcdfexppowP
|
74
|
+
gslcdfexppowQ gslcdftdistP gslcdftdistQ gslcdftdistPinv
|
75
|
+
gslcdftdistQinv gslcdffdistP gslcdffdistQ gslcdffdistPinv
|
76
|
+
gslcdffdistQinv gslcdfbetaP gslcdfbetaQ gslcdfbetaPinv gslcdfbetaQinv
|
77
|
+
gslcdfflatP gslcdfflatQ gslcdfflatPinv gslcdfflatQinv
|
78
|
+
gslcdflognormalP gslcdflognormalQ gslcdflognormalPinv
|
79
|
+
gslcdflognormalQinv gslcdfgumbel1P gslcdfgumbel1Q gslcdfgumbel1Pinv
|
80
|
+
gslcdfgumbel1Qinv gslcdfgumbel2P gslcdfgumbel2Q gslcdfgumbel2Pinv
|
81
|
+
gslcdfgumbel2Qinv gslcdfweibullP gslcdfweibullQ gslcdfweibullPinv
|
82
|
+
gslcdfweibullQinv gslcdfparetoP gslcdfparetoQ gslcdfparetoPinv
|
83
|
+
gslcdfparetoQinv gslcdflogisticP gslcdflogisticQ gslcdflogisticPinv
|
84
|
+
gslcdflogisticQinv gslcdfbinomialP gslcdfbinomialQ gslcdfpoissonP
|
85
|
+
gslcdfpoissonQ gslcdfgeometricP gslcdfgeometricQ
|
86
|
+
gslcdfnegativebinomialP gslcdfnegativebinomialQ gslcdfpascalP
|
87
|
+
gslcdfpascalQ gslinterpakima gslinterpakimaperiodic
|
88
|
+
gslinterpcsplineperiodic gslinterpcspline gslinterpsteffen
|
89
|
+
gslinterplinear gslinterppolynomial gslranbernoullipdf gslranbeta
|
90
|
+
gslranbetapdf gslranbinomialpdf gslranexponential
|
91
|
+
gslranexponentialpdf gslranexppow gslranexppowpdf gslrancauchy
|
92
|
+
gslrancauchypdf gslranchisq gslranchisqpdf gslranerlang
|
93
|
+
gslranerlangpdf gslranfdist gslranfdistpdf gslranflat gslranflatpdf
|
94
|
+
gslrangamma gslrangammaint gslrangammapdf gslrangammamt
|
95
|
+
gslrangammaknuth gslrangaussian gslrangaussianratiomethod
|
96
|
+
gslrangaussianziggurat gslrangaussianpdf gslranugaussian
|
97
|
+
gslranugaussianratiomethod gslranugaussianpdf gslrangaussiantail
|
98
|
+
gslrangaussiantailpdf gslranugaussiantail gslranugaussiantailpdf
|
99
|
+
gslranlandau gslranlandaupdf gslrangeometricpdf gslrangumbel1
|
100
|
+
gslrangumbel1pdf gslrangumbel2 gslrangumbel2pdf gslranlogistic
|
101
|
+
gslranlogisticpdf gslranlognormal gslranlognormalpdf
|
102
|
+
gslranlogarithmicpdf gslrannegativebinomialpdf gslranpascalpdf
|
103
|
+
gslranpareto gslranparetopdf gslranpoissonpdf gslranrayleigh
|
104
|
+
gslranrayleighpdf gslranrayleightail gslranrayleightailpdf
|
105
|
+
gslrantdist gslrantdistpdf gslranlaplace gslranlaplacepdf gslranlevy
|
106
|
+
gslranweibull gslranweibullpdf gslsfairyAi gslsfairyBi
|
107
|
+
gslsfairyAiscaled gslsfairyBiscaled gslsfairyAideriv gslsfairyBideriv
|
108
|
+
gslsfairyAiderivscaled gslsfairyBiderivscaled gslsfairyzeroAi
|
109
|
+
gslsfairyzeroBi gslsfairyzeroAideriv gslsfairyzeroBideriv
|
110
|
+
gslsfbesselJ0 gslsfbesselJ1 gslsfbesselJn gslsfbesselY0 gslsfbesselY1
|
111
|
+
gslsfbesselYn gslsfbesselI0 gslsfbesselI1 gslsfbesselIn
|
112
|
+
gslsfbesselI0scaled gslsfbesselI1scaled gslsfbesselInscaled
|
113
|
+
gslsfbesselK0 gslsfbesselK1 gslsfbesselKn gslsfbesselK0scaled
|
114
|
+
gslsfbesselK1scaled gslsfbesselKnscaled gslsfbesselj0 gslsfbesselj1
|
115
|
+
gslsfbesselj2 gslsfbesseljl gslsfbessely0 gslsfbessely1 gslsfbessely2
|
116
|
+
gslsfbesselyl gslsfbesseli0scaled gslsfbesseli1scaled
|
117
|
+
gslsfbesseli2scaled gslsfbesselilscaled gslsfbesselk0scaled
|
118
|
+
gslsfbesselk1scaled gslsfbesselk2scaled gslsfbesselklscaled
|
119
|
+
gslsfbesselJnu gslsfbesselYnu gslsfbesselInuscaled gslsfbesselInu
|
120
|
+
gslsfbesselKnuscaled gslsfbesselKnu gslsfbessellnKnu
|
121
|
+
gslsfbesselzeroJ0 gslsfbesselzeroJ1 gslsfbesselzeroJnu gslsfclausen
|
122
|
+
gslsfhydrogenicR1 gslsfdawson gslsfdebye1 gslsfdebye2 gslsfdebye3
|
123
|
+
gslsfdebye4 gslsfdebye5 gslsfdebye6 gslsfdilog gslsfmultiply
|
124
|
+
gslsfellintKcomp gslsfellintEcomp gslsfellintPcomp gslsfellintDcomp
|
125
|
+
gslsfellintF gslsfellintE gslsfellintRC gslsferfc gslsflogerfc
|
126
|
+
gslsferf gslsferfZ gslsferfQ gslsfhazard gslsfexp gslsfexpmult
|
127
|
+
gslsfexpm1 gslsfexprel gslsfexprel2 gslsfexpreln gslsfexpintE1
|
128
|
+
gslsfexpintE2 gslsfexpintEn gslsfexpintE1scaled gslsfexpintE2scaled
|
129
|
+
gslsfexpintEnscaled gslsfexpintEi gslsfexpintEiscaled gslsfShi
|
130
|
+
gslsfChi gslsfexpint3 gslsfSi gslsfCi gslsfatanint gslsffermidiracm1
|
131
|
+
gslsffermidirac0 gslsffermidirac1 gslsffermidirac2 gslsffermidiracint
|
132
|
+
gslsffermidiracmhalf gslsffermidirachalf gslsffermidirac3half
|
133
|
+
gslsffermidiracinc0 gslsflngamma gslsfgamma gslsfgammastar
|
134
|
+
gslsfgammainv gslsftaylorcoeff gslsffact gslsfdoublefact gslsflnfact
|
135
|
+
gslsflndoublefact gslsflnchoose gslsfchoose gslsflnpoch gslsfpoch
|
136
|
+
gslsfpochrel gslsfgammaincQ gslsfgammaincP gslsfgammainc gslsflnbeta
|
137
|
+
gslsfbeta gslsfbetainc gslsfgegenpoly1 gslsfgegenpoly2
|
138
|
+
gslsfgegenpoly3 gslsfgegenpolyn gslsfhyperg0F1 gslsfhyperg1F1int
|
139
|
+
gslsfhyperg1F1 gslsfhypergUint gslsfhypergU gslsfhyperg2F0
|
140
|
+
gslsflaguerre1 gslsflaguerre2 gslsflaguerre3 gslsflaguerren
|
141
|
+
gslsflambertW0 gslsflambertWm1 gslsflegendrePl gslsflegendreP1
|
142
|
+
gslsflegendreP2 gslsflegendreP3 gslsflegendreQ0 gslsflegendreQ1
|
143
|
+
gslsflegendreQl gslsflegendrePlm gslsflegendresphPlm
|
144
|
+
gslsflegendrearraysize gslsfconicalPhalf gslsfconicalPmhalf
|
145
|
+
gslsfconicalP0 gslsfconicalP1 gslsfconicalPsphreg gslsfconicalPcylreg
|
146
|
+
gslsflegendreH3d0 gslsflegendreH3d1 gslsflegendreH3d gslsflog
|
147
|
+
gslsflogabs gslsflog1plusx gslsflog1plusxmx gslsfpowint gslsfpsiint
|
148
|
+
gslsfpsi gslsfpsi1piy gslsfpsi1int gslsfpsi1 gslsfpsin
|
149
|
+
gslsfsynchrotron1 gslsfsynchrotron2 gslsftransport2 gslsftransport3
|
150
|
+
gslsftransport4 gslsftransport5 gslsfsin gslsfcos gslsfhypot
|
151
|
+
gslsfsinc gslsflnsinh gslsflncosh gslsfanglerestrictsymm
|
152
|
+
gslsfanglerestrictpos gslsfzetaint gslsfzeta gslsfzetam1
|
153
|
+
gslsfzetam1int gslsfhzeta gslsfetaint gslsfeta imag int1d int2d int3d
|
154
|
+
intalledges intallfaces interpolate invdiff invdiffnp invdiffpos
|
155
|
+
Isend isInf isNaN isoline Irecv j0 j1 jn jump lgamma LinearCG
|
156
|
+
LinearGMRES log log10 lrint lround max mean medit min mmg3d movemesh
|
157
|
+
movemesh23 mpiAlltoall mpiAlltoallv mpiAllgather mpiAllgatherv
|
158
|
+
mpiAllReduce mpiBarrier mpiGather mpiGatherv mpiRank mpiReduce
|
159
|
+
mpiScatter mpiScatterv mpiSize mpiWait mpiWaitAny mpiWtick mpiWtime
|
160
|
+
mshmet NLCG on plot polar Post pow processor processorblock
|
161
|
+
projection randinit randint31 randint32 random randreal1 randreal2
|
162
|
+
randreal3 randres53 Read readmesh readmesh3 Recv rfind rint round
|
163
|
+
savemesh savesol savevtk seekg Sent set sign signbit sin sinh sort
|
164
|
+
splitComm splitmesh sqrt square srandom srandomdev Stringification
|
165
|
+
swap system tan tanh tellg tetg tetgconvexhull tetgreconstruction
|
166
|
+
tetgtransfo tgamma triangulate trunc Wait Write y0 y1 yn
|
167
|
+
))
|
168
|
+
end
|
169
|
+
|
170
|
+
def self.attributes
|
171
|
+
@builtinsParameters ||= Set.new(%w(
|
172
|
+
A A1 abserror absolute aniso aspectratio B B1 bb beginend bin
|
173
|
+
boundary bw close cmm coef composante cutoff datafilename dataname
|
174
|
+
dim distmax displacement doptions dparams eps err errg facemerge
|
175
|
+
facetcl factorize file fill fixedborder flabel flags floatmesh
|
176
|
+
floatsol fregion gradation grey hmax hmin holelist hsv init inquire
|
177
|
+
inside IsMetric iso ivalue keepbackvertices label labeldown labelmid
|
178
|
+
labelup levelset loptions lparams maxit maxsubdiv meditff mem memory
|
179
|
+
metric mode nbarrow nbiso nbiter nbjacoby nboffacetcl nbofholes
|
180
|
+
nbofregions nbregul nbsmooth nbvx ncv nev nomeshgeneration
|
181
|
+
normalization omega op optimize option options order orientation
|
182
|
+
periodic power precon prev ps ptmerge qfe qforder qft qfV ratio
|
183
|
+
rawvector reffacelow reffacemid reffaceup refnum reftet reftri region
|
184
|
+
regionlist renumv rescaling ridgeangle save sigma sizeofvolume
|
185
|
+
smoothing solver sparams split splitin2 splitpbedge stop strategy
|
186
|
+
swap switch sym t tgv thetamax tol tolpivot tolpivotsym transfo U2Vc
|
187
|
+
value varrow vector veps viso wait width withsurfacemesh WindowIndex
|
188
|
+
which zbound
|
189
|
+
))
|
190
|
+
end
|
191
|
+
|
192
|
+
id = /[a-z_]\w*/i
|
193
|
+
|
194
|
+
state :expr_bol do
|
195
|
+
mixin :inline_whitespace
|
196
|
+
|
197
|
+
rule %r/include/, Comment::Preproc, :macro
|
198
|
+
rule %r/load/, Comment::Preproc, :macro
|
199
|
+
rule %r/ENDIFMACRO/, Comment::Preproc, :macro
|
200
|
+
rule %r/IFMACRO/, Comment::Preproc, :macro
|
201
|
+
|
202
|
+
rule(//) { pop! }
|
203
|
+
end
|
204
|
+
|
205
|
+
state :statements do
|
206
|
+
mixin :whitespace
|
207
|
+
rule %r/(u8|u|U|L)?"/, Str, :string
|
208
|
+
rule %r((u8|u|U|L)?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
209
|
+
rule %r((\d+[.]\d*|[.]?\d+)e[+-]?\d+[lu]*)i, Num::Float
|
210
|
+
rule %r(\d+e[+-]?\d+[lu]*)i, Num::Float
|
211
|
+
rule %r/0x[0-9a-f]+[lu]*/i, Num::Hex
|
212
|
+
rule %r/0[0-7]+[lu]*/i, Num::Oct
|
213
|
+
rule %r/\d+[lu]*/i, Num::Integer
|
214
|
+
rule %r(\*/), Error
|
215
|
+
rule %r([~!%^&*+=\|?:<>/-]), Operator
|
216
|
+
rule %r/'/, Operator
|
217
|
+
rule %r/[()\[\],.;]/, Punctuation
|
218
|
+
rule %r/\bcase\b/, Keyword, :case
|
219
|
+
rule %r/(?:true|false|NaN)\b/, Name::Builtin
|
220
|
+
rule id do |m|
|
221
|
+
name = m[0]
|
222
|
+
|
223
|
+
if self.class.keywords.include? name
|
224
|
+
token Keyword
|
225
|
+
elsif self.class.keywords_type.include? name
|
226
|
+
token Keyword::Type
|
227
|
+
elsif self.class.reserved.include? name
|
228
|
+
token Keyword::Reserved
|
229
|
+
elsif self.class.builtins.include? name
|
230
|
+
token Name::Builtin
|
231
|
+
elsif self.class.attributes.include? name
|
232
|
+
token Name::Attribute
|
233
|
+
else
|
234
|
+
token Name
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
end
|
@@ -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/jinja.rb
CHANGED
@@ -38,6 +38,7 @@ module Rouge
|
|
38
38
|
state :root do
|
39
39
|
# Comments
|
40
40
|
rule %r/{#/, Comment, :comment
|
41
|
+
rule %r/##.*/, Comment
|
41
42
|
|
42
43
|
# Statements
|
43
44
|
rule %r/\{\%/ do
|
@@ -51,13 +52,13 @@ module Rouge
|
|
51
52
|
push :expression
|
52
53
|
end
|
53
54
|
|
54
|
-
rule(/(.+?)(?=\\|{{|{%|{
|
55
|
+
rule(/(.+?)(?=\\|{{|{%|{#|##)/m) { delegate parent }
|
55
56
|
rule(/.+/m) { delegate parent }
|
56
57
|
end
|
57
58
|
|
58
59
|
state :filter do
|
59
60
|
# Filters are called like variable|foo(arg1, ...)
|
60
|
-
rule %r/(
|
61
|
+
rule %r/(\|\s*)(\w+)/ do
|
61
62
|
groups Operator, Name::Function
|
62
63
|
end
|
63
64
|
end
|
@@ -96,8 +97,9 @@ module Rouge
|
|
96
97
|
end
|
97
98
|
|
98
99
|
state :comment do
|
99
|
-
rule
|
100
|
+
rule %r/[^#]+/m, Comment
|
100
101
|
rule(/#}/) { token Comment; pop! }
|
102
|
+
rule %r/#/, Comment
|
101
103
|
end
|
102
104
|
|
103
105
|
state :expression do
|
data/lib/rouge/lexers/llvm.rb
CHANGED
@@ -14,6 +14,48 @@ module Rouge
|
|
14
14
|
string = /"[^"]*?"/
|
15
15
|
identifier = /([-a-zA-Z$._][-a-zA-Z$._0-9]*|#{string})/
|
16
16
|
|
17
|
+
def self.keywords
|
18
|
+
@keywords ||= Set.new %w(
|
19
|
+
addrspace addrspacecast alias align alignstack allocsize alwaysinline
|
20
|
+
appending arcp argmemonly arm_aapcs_vfpcc arm_aapcscc arm_apcscc asm
|
21
|
+
attributes available_externally begin builtin byval c cc ccc cold
|
22
|
+
coldcc common constant convergent datalayout dbg declare default
|
23
|
+
define dllexport dllimport end eq exact extern_weak external false
|
24
|
+
fast fastcc gc global hidden inaccessiblemem_or_argmemonly
|
25
|
+
inaccessiblememonly inbounds inlinehint inreg internal jumptable
|
26
|
+
landingpad linker_private linkonce linkonce_odr minsize module naked
|
27
|
+
ne nest ninf nnan no-jump-tables noalias nobuiltin nocapture
|
28
|
+
nocf_check noduplicate noimplicitfloat noinline nonlazybind norecurse
|
29
|
+
noredzone noredzone noreturn nounwind nsw nsz null nuw oeq oge ogt
|
30
|
+
ole olt one opaque optforfuzzing optnone optsize ord personality
|
31
|
+
private protected ptx_device ptx_kernel readnone readonly
|
32
|
+
returns_twice safestack sanitize_address sanitize_hwaddress
|
33
|
+
sanitize_memory sanitize_thread section sge sgt shadowcallstack
|
34
|
+
sideeffect signext sle slt speculatable speculative_load_hardening
|
35
|
+
sret ssp sspreq sspstrong strictfp tail target thread_local to triple
|
36
|
+
true type ueq uge ugt ule ult undef une unnamed_addr uno uwtable
|
37
|
+
volatile weak weak_odr writeonly x x86_fastcallcc x86_stdcallcc
|
38
|
+
zeroext zeroinitializer
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.instructions
|
43
|
+
@instructions ||= Set.new %w(
|
44
|
+
add alloca and ashr bitcast br call catch cleanup extractelement
|
45
|
+
extractvalue fadd fcmp fdiv fmul fpext fptosi fptoui fptrunc free
|
46
|
+
frem fsub getelementptr getresult icmp insertelement insertvalue
|
47
|
+
inttoptr invoke load lshr malloc mul or phi ptrtoint resume ret sdiv
|
48
|
+
select sext shl shufflevector sitofp srem store sub switch trunc udiv
|
49
|
+
uitofp unreachable unwind urem va_arg xor zext
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.types
|
54
|
+
@types ||= Set.new %w(
|
55
|
+
double float fp128 half label metadata ppc_fp128 void x86_fp80 x86mmx
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
17
59
|
state :basic do
|
18
60
|
rule %r/;.*?$/, Comment::Single
|
19
61
|
rule %r/\s+/, Text
|
@@ -33,55 +75,22 @@ module Rouge
|
|
33
75
|
rule %r/[=<>{}\[\]()*.,!]|x/, Punctuation
|
34
76
|
end
|
35
77
|
|
36
|
-
|
37
|
-
|
38
|
-
)
|
78
|
+
state :root do
|
79
|
+
mixin :basic
|
39
80
|
|
40
|
-
state :types do
|
41
81
|
rule %r/i[1-9]\d*/, Keyword::Type
|
42
|
-
rule %r/#{builtin_types.join('|')}/, Keyword::Type
|
43
|
-
end
|
44
|
-
|
45
|
-
builtin_keywords = %w(
|
46
|
-
begin end true false declare define global constant alignstack private
|
47
|
-
landingpad linker_private internal available_externally linkonce_odr
|
48
|
-
linkonce weak weak_odr appending dllimport dllexport common default
|
49
|
-
hidden protected extern_weak external thread_local zeroinitializer
|
50
|
-
undef null to tail target triple datalayout volatile nuw nsw nnan ninf
|
51
|
-
nsz arcp fast exact inbounds align addrspace section alias module asm
|
52
|
-
sideeffect gc dbg ccc fastcc coldcc x86_stdcallcc x86_fastcallcc
|
53
|
-
arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel cc
|
54
|
-
c signext zeroext inreg sret nounwind noreturn noalias nocapture byval
|
55
|
-
nest readnone readonly inlinehint noinline alwaysinline optsize ssp
|
56
|
-
sspreq noredzone noimplicitfloat naked type opaque eq ne slt sgt sle
|
57
|
-
sge ult ugt ule uge oeq one olt ogt ole oge ord uno unnamed_addr ueq
|
58
|
-
une uwtable x personality allocsize builtin cold convergent
|
59
|
-
inaccessiblememonly inaccessiblemem_or_argmemonly jumptable minsize
|
60
|
-
no-jump-tables nobuiltin noduplicate nonlazybind noredzone norecurse
|
61
|
-
optforfuzzing optnone writeonly argmemonly returns_twice safestack
|
62
|
-
sanitize_address sanitize_memory sanitize_thread sanitize_hwaddress
|
63
|
-
speculative_load_hardening speculatable sspstrong strictfp nocf_check
|
64
|
-
shadowcallstack attributes
|
65
|
-
)
|
66
82
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
rule %r/#{builtin_keywords.join('|')}/, Keyword
|
79
|
-
end
|
80
|
-
|
81
|
-
state :root do
|
82
|
-
mixin :basic
|
83
|
-
mixin :keywords
|
84
|
-
mixin :types
|
83
|
+
rule %r/\w+/ do |m|
|
84
|
+
if self.class.types.include? m[0]
|
85
|
+
token Keyword::Type
|
86
|
+
elsif self.class.instructions.include? m[0]
|
87
|
+
token Keyword
|
88
|
+
elsif self.class.keywords.include? m[0]
|
89
|
+
token Keyword
|
90
|
+
else
|
91
|
+
token Error
|
92
|
+
end
|
93
|
+
end
|
85
94
|
end
|
86
95
|
end
|
87
96
|
end
|
@@ -4,8 +4,11 @@
|
|
4
4
|
module Rouge
|
5
5
|
module Lexers
|
6
6
|
load_lexer 'c.rb'
|
7
|
+
load_lexer 'objective_c/common.rb'
|
7
8
|
|
8
9
|
class ObjectiveC < C
|
10
|
+
extend ObjectiveCCommon
|
11
|
+
|
9
12
|
tag 'objective_c'
|
10
13
|
title "Objective-C"
|
11
14
|
desc 'an extension of C commonly used to write Apple software'
|
@@ -13,178 +16,6 @@ module Rouge
|
|
13
16
|
filenames '*.m', '*.h'
|
14
17
|
|
15
18
|
mimetypes 'text/x-objective_c', 'application/x-objective_c'
|
16
|
-
|
17
|
-
def self.at_keywords
|
18
|
-
@at_keywords ||= %w(
|
19
|
-
selector private protected public encode synchronized try
|
20
|
-
throw catch finally end property synthesize dynamic optional
|
21
|
-
interface implementation import
|
22
|
-
)
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.at_builtins
|
26
|
-
@at_builtins ||= %w(true false YES NO)
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.builtins
|
30
|
-
@builtins ||= %w(YES NO nil)
|
31
|
-
end
|
32
|
-
|
33
|
-
id = /[a-z$_][a-z0-9$_]*/i
|
34
|
-
|
35
|
-
prepend :statements do
|
36
|
-
rule %r/@"/, Str, :string
|
37
|
-
rule %r/@'(\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|\\.|[^\\'\n]')/,
|
38
|
-
Str::Char
|
39
|
-
rule %r/@(\d+[.]\d*|[.]\d+|\d+)e[+-]?\d+l?/i,
|
40
|
-
Num::Float
|
41
|
-
rule %r/@(\d+[.]\d*|[.]\d+|\d+f)f?/i, Num::Float
|
42
|
-
rule %r/@0x\h+[lL]?/, Num::Hex
|
43
|
-
rule %r/@0[0-7]+l?/i, Num::Oct
|
44
|
-
rule %r/@\d+l?/, Num::Integer
|
45
|
-
rule %r/\bin\b/, Keyword
|
46
|
-
|
47
|
-
rule %r/@(?:interface|implementation)\b/, Keyword, :classname
|
48
|
-
rule %r/@(?:class|protocol)\b/, Keyword, :forward_classname
|
49
|
-
|
50
|
-
rule %r/@([[:alnum:]]+)/ do |m|
|
51
|
-
if self.class.at_keywords.include? m[1]
|
52
|
-
token Keyword
|
53
|
-
elsif self.class.at_builtins.include? m[1]
|
54
|
-
token Name::Builtin
|
55
|
-
else
|
56
|
-
token Error
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
rule %r/[?]/, Punctuation, :ternary
|
61
|
-
rule %r/\[/, Punctuation, :message
|
62
|
-
rule %r/@\[/, Punctuation, :array_literal
|
63
|
-
rule %r/@\{/, Punctuation, :dictionary_literal
|
64
|
-
end
|
65
|
-
|
66
|
-
state :ternary do
|
67
|
-
rule %r/:/, Punctuation, :pop!
|
68
|
-
mixin :statements
|
69
|
-
end
|
70
|
-
|
71
|
-
state :message_shared do
|
72
|
-
rule %r/\]/, Punctuation, :pop!
|
73
|
-
rule %r/\{/, Punctuation, :pop!
|
74
|
-
rule %r/;/, Error
|
75
|
-
|
76
|
-
mixin :statements
|
77
|
-
end
|
78
|
-
|
79
|
-
state :message do
|
80
|
-
rule %r/(#{id})(\s*)(:)/ do
|
81
|
-
groups(Name::Function, Text, Punctuation)
|
82
|
-
goto :message_with_args
|
83
|
-
end
|
84
|
-
|
85
|
-
rule %r/(#{id})(\s*)(\])/ do
|
86
|
-
groups(Name::Function, Text, Punctuation)
|
87
|
-
pop!
|
88
|
-
end
|
89
|
-
|
90
|
-
mixin :message_shared
|
91
|
-
end
|
92
|
-
|
93
|
-
state :message_with_args do
|
94
|
-
rule %r/\{/, Punctuation, :function
|
95
|
-
rule %r/(#{id})(\s*)(:)/ do
|
96
|
-
groups(Name::Function, Text, Punctuation)
|
97
|
-
pop!
|
98
|
-
end
|
99
|
-
|
100
|
-
mixin :message_shared
|
101
|
-
end
|
102
|
-
|
103
|
-
state :array_literal do
|
104
|
-
rule %r/]/, Punctuation, :pop!
|
105
|
-
rule %r/,/, Punctuation
|
106
|
-
mixin :statements
|
107
|
-
end
|
108
|
-
|
109
|
-
state :dictionary_literal do
|
110
|
-
rule %r/}/, Punctuation, :pop!
|
111
|
-
rule %r/,/, Punctuation
|
112
|
-
mixin :statements
|
113
|
-
end
|
114
|
-
|
115
|
-
state :classname do
|
116
|
-
mixin :whitespace
|
117
|
-
|
118
|
-
rule %r/(#{id})(\s*)(:)(\s*)(#{id})/ do
|
119
|
-
groups(Name::Class, Text,
|
120
|
-
Punctuation, Text,
|
121
|
-
Name::Class)
|
122
|
-
pop!
|
123
|
-
end
|
124
|
-
|
125
|
-
rule %r/(#{id})(\s*)([(])(\s*)(#{id})(\s*)([)])/ do
|
126
|
-
groups(Name::Class, Text,
|
127
|
-
Punctuation, Text,
|
128
|
-
Name::Label, Text,
|
129
|
-
Punctuation)
|
130
|
-
pop!
|
131
|
-
end
|
132
|
-
|
133
|
-
rule id, Name::Class, :pop!
|
134
|
-
end
|
135
|
-
|
136
|
-
state :forward_classname do
|
137
|
-
mixin :whitespace
|
138
|
-
|
139
|
-
rule %r/(#{id})(\s*)(,)(\s*)/ do
|
140
|
-
groups(Name::Class, Text, Punctuation, Text)
|
141
|
-
push
|
142
|
-
end
|
143
|
-
|
144
|
-
rule %r/(#{id})(\s*)(;?)/ do
|
145
|
-
groups(Name::Class, Text, Punctuation)
|
146
|
-
pop!
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
prepend :root do
|
151
|
-
rule %r(
|
152
|
-
([-+])(\s*)
|
153
|
-
([(].*?[)])?(\s*)
|
154
|
-
(?=#{id}:?)
|
155
|
-
)ix do |m|
|
156
|
-
token Keyword, m[1]
|
157
|
-
token Text, m[2]
|
158
|
-
recurse(m[3]) if m[3]
|
159
|
-
token Text, m[4]
|
160
|
-
push :method_definition
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
state :method_definition do
|
165
|
-
rule %r/,/, Punctuation
|
166
|
-
rule %r/[.][.][.]/, Punctuation
|
167
|
-
rule %r/([(].*?[)])(#{id})/ do |m|
|
168
|
-
recurse m[1]; token Name::Variable, m[2]
|
169
|
-
end
|
170
|
-
|
171
|
-
rule %r/(#{id})(\s*)(:)/m do
|
172
|
-
groups(Name::Function, Text, Punctuation)
|
173
|
-
end
|
174
|
-
|
175
|
-
rule %r/;/, Punctuation, :pop!
|
176
|
-
|
177
|
-
rule %r/{/ do
|
178
|
-
token Punctuation
|
179
|
-
goto :function
|
180
|
-
end
|
181
|
-
|
182
|
-
mixin :inline_whitespace
|
183
|
-
rule %r(//.*?\n), Comment::Single
|
184
|
-
rule %r/\s+/m, Text
|
185
|
-
|
186
|
-
rule(//) { pop! }
|
187
|
-
end
|
188
19
|
end
|
189
20
|
end
|
190
21
|
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
module ObjectiveCCommon
|
7
|
+
id = /[a-z$_][a-z0-9$_]*/i
|
8
|
+
|
9
|
+
def at_keywords
|
10
|
+
@at_keywords ||= %w(
|
11
|
+
selector private protected public encode synchronized try
|
12
|
+
throw catch finally end property synthesize dynamic optional
|
13
|
+
interface implementation import
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
def at_builtins
|
18
|
+
@at_builtins ||= %w(true false YES NO)
|
19
|
+
end
|
20
|
+
|
21
|
+
def builtins
|
22
|
+
@builtins ||= %w(YES NO nil)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.extended(base)
|
26
|
+
base.prepend :statements do
|
27
|
+
rule %r/@"/, base::Str, :string
|
28
|
+
rule %r/@'(\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|\\.|[^\\'\n]')/,
|
29
|
+
base::Str::Char
|
30
|
+
rule %r/@(\d+[.]\d*|[.]\d+|\d+)e[+-]?\d+l?/i,
|
31
|
+
base::Num::Float
|
32
|
+
rule %r/@(\d+[.]\d*|[.]\d+|\d+f)f?/i, base::Num::Float
|
33
|
+
rule %r/@0x\h+[lL]?/, base::Num::Hex
|
34
|
+
rule %r/@0[0-7]+l?/i, base::Num::Oct
|
35
|
+
rule %r/@\d+l?/, base::Num::Integer
|
36
|
+
rule %r/\bin\b/, base::Keyword
|
37
|
+
|
38
|
+
rule %r/@(?:interface|implementation)\b/, base::Keyword, :objc_classname
|
39
|
+
rule %r/@(?:class|protocol)\b/, base::Keyword, :forward_classname
|
40
|
+
|
41
|
+
rule %r/@([[:alnum:]]+)/ do |m|
|
42
|
+
if base.at_keywords.include? m[1]
|
43
|
+
token base::Keyword
|
44
|
+
elsif base.at_builtins.include? m[1]
|
45
|
+
token base::Name::Builtin
|
46
|
+
else
|
47
|
+
token Error
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
rule %r/[?]/, base::Punctuation, :ternary
|
52
|
+
rule %r/\[/, base::Punctuation, :message
|
53
|
+
rule %r/@\[/, base::Punctuation, :array_literal
|
54
|
+
rule %r/@\{/, base::Punctuation, :dictionary_literal
|
55
|
+
end
|
56
|
+
|
57
|
+
id = /[a-z$_][a-z0-9$_]*/i
|
58
|
+
|
59
|
+
base.state :ternary do
|
60
|
+
rule %r/:/, base::Punctuation, :pop!
|
61
|
+
mixin :statements
|
62
|
+
end
|
63
|
+
|
64
|
+
base.state :message_shared do
|
65
|
+
rule %r/\]/, base::Punctuation, :pop!
|
66
|
+
rule %r/\{/, base::Punctuation, :pop!
|
67
|
+
rule %r/;/, base::Error
|
68
|
+
|
69
|
+
mixin :statements
|
70
|
+
end
|
71
|
+
|
72
|
+
base.state :message do
|
73
|
+
rule %r/(#{id})(\s*)(:)/ do
|
74
|
+
groups(base::Name::Function, base::Text, base::Punctuation)
|
75
|
+
goto :message_with_args
|
76
|
+
end
|
77
|
+
|
78
|
+
rule %r/(#{id})(\s*)(\])/ do
|
79
|
+
groups(base::Name::Function, base::Text, base::Punctuation)
|
80
|
+
pop!
|
81
|
+
end
|
82
|
+
|
83
|
+
mixin :message_shared
|
84
|
+
end
|
85
|
+
|
86
|
+
base.state :message_with_args do
|
87
|
+
rule %r/\{/, base::Punctuation, :function
|
88
|
+
rule %r/(#{id})(\s*)(:)/ do
|
89
|
+
groups(base::Name::Function, base::Text, base::Punctuation)
|
90
|
+
pop!
|
91
|
+
end
|
92
|
+
|
93
|
+
mixin :message_shared
|
94
|
+
end
|
95
|
+
|
96
|
+
base.state :array_literal do
|
97
|
+
rule %r/]/, base::Punctuation, :pop!
|
98
|
+
rule %r/,/, base::Punctuation
|
99
|
+
mixin :statements
|
100
|
+
end
|
101
|
+
|
102
|
+
base.state :dictionary_literal do
|
103
|
+
rule %r/}/, base::Punctuation, :pop!
|
104
|
+
rule %r/,/, base::Punctuation
|
105
|
+
mixin :statements
|
106
|
+
end
|
107
|
+
|
108
|
+
base.state :objc_classname do
|
109
|
+
mixin :whitespace
|
110
|
+
|
111
|
+
rule %r/(#{id})(\s*)(:)(\s*)(#{id})/ do
|
112
|
+
groups(base::Name::Class, base::Text,
|
113
|
+
base::Punctuation, base::Text,
|
114
|
+
base::Name::Class)
|
115
|
+
pop!
|
116
|
+
end
|
117
|
+
|
118
|
+
rule %r/(#{id})(\s*)([(])(\s*)(#{id})(\s*)([)])/ do
|
119
|
+
groups(base::Name::Class, base::Text,
|
120
|
+
base::Punctuation, base::Text,
|
121
|
+
base::Name::Label, base::Text,
|
122
|
+
base::Punctuation)
|
123
|
+
pop!
|
124
|
+
end
|
125
|
+
|
126
|
+
rule id, base::Name::Class, :pop!
|
127
|
+
end
|
128
|
+
|
129
|
+
base.state :forward_classname do
|
130
|
+
mixin :whitespace
|
131
|
+
|
132
|
+
rule %r/(#{id})(\s*)(,)(\s*)/ do
|
133
|
+
groups(base::Name::Class, base::Text, base::Punctuation, base::Text)
|
134
|
+
push
|
135
|
+
end
|
136
|
+
|
137
|
+
rule %r/(#{id})(\s*)(;?)/ do
|
138
|
+
groups(base::Name::Class, base::Text, base::Punctuation)
|
139
|
+
pop!
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
base.prepend :root do
|
144
|
+
rule %r(
|
145
|
+
([-+])(\s*)
|
146
|
+
([(].*?[)])?(\s*)
|
147
|
+
(?=#{id}:?)
|
148
|
+
)ix do |m|
|
149
|
+
token base::Keyword, m[1]
|
150
|
+
token base::Text, m[2]
|
151
|
+
recurse(m[3]) if m[3]
|
152
|
+
token base::Text, m[4]
|
153
|
+
push :method_definition
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
base.state :method_definition do
|
158
|
+
rule %r/,/, base::Punctuation
|
159
|
+
rule %r/[.][.][.]/, base::Punctuation
|
160
|
+
rule %r/([(].*?[)])(#{id})/ do |m|
|
161
|
+
recurse m[1]; token base::Name::Variable, m[2]
|
162
|
+
end
|
163
|
+
|
164
|
+
rule %r/(#{id})(\s*)(:)/m do
|
165
|
+
groups(base::Name::Function, base::Text, base::Punctuation)
|
166
|
+
end
|
167
|
+
|
168
|
+
rule %r/;/, base::Punctuation, :pop!
|
169
|
+
|
170
|
+
rule %r/{/ do
|
171
|
+
token base::Punctuation
|
172
|
+
goto :function
|
173
|
+
end
|
174
|
+
|
175
|
+
mixin :inline_whitespace
|
176
|
+
rule %r(//.*?\n), base::Comment::Single
|
177
|
+
rule %r/\s+/m, base::Text
|
178
|
+
|
179
|
+
rule(//) { pop! }
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
load_lexer 'cpp.rb'
|
7
|
+
load_lexer 'objective_c/common.rb'
|
8
|
+
|
9
|
+
class ObjectiveCpp < Cpp
|
10
|
+
extend ObjectiveCCommon
|
11
|
+
|
12
|
+
tag 'objective_cpp'
|
13
|
+
title "Objective-C++"
|
14
|
+
desc 'an extension of C++ uncommonly used to write Apple software'
|
15
|
+
aliases 'objcpp', 'obj-cpp', 'obj_cpp', 'objectivecpp',
|
16
|
+
'objc++', 'obj-c++', 'obj_c++', 'objectivec++'
|
17
|
+
filenames '*.mm', '*.h'
|
18
|
+
|
19
|
+
mimetypes 'text/x-objective-c++', 'application/x-objective-c++'
|
20
|
+
|
21
|
+
prepend :statements do
|
22
|
+
rule %r/(\.)(class)/ do
|
23
|
+
groups(Operator, Name::Builtin::Pseudo)
|
24
|
+
end
|
25
|
+
rule %r/(@selector)(\()(class)(\))/ do
|
26
|
+
groups(Keyword, Punctuation, Name::Builtin::Pseudo, Punctuation)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/rouge/lexers/python.rb
CHANGED
@@ -8,7 +8,8 @@ module Rouge
|
|
8
8
|
desc "The Python programming language (python.org)"
|
9
9
|
tag 'python'
|
10
10
|
aliases 'py'
|
11
|
-
filenames '*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac'
|
11
|
+
filenames '*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac',
|
12
|
+
'*.bzl', 'BUCK', 'BUILD', 'BUILD.bazel', 'WORKSPACE'
|
12
13
|
mimetypes 'text/x-python', 'application/x-python'
|
13
14
|
|
14
15
|
def self.detect?(text)
|
data/lib/rouge/lexers/rust.rb
CHANGED
@@ -96,7 +96,7 @@ module Rouge
|
|
96
96
|
rule %r([=-]>), Keyword
|
97
97
|
rule %r(<->), Keyword
|
98
98
|
rule %r/[()\[\]{}|,:;]/, Punctuation
|
99
|
-
rule %r/[
|
99
|
+
rule %r/[*\/!@~&+%^<>=\?-]|\.{2,3}/, Operator
|
100
100
|
|
101
101
|
rule %r/([.]\s*)?#{id}(?=\s*[(])/m, Name::Function
|
102
102
|
rule %r/[.]\s*#{id}/, Name::Property
|
data/lib/rouge/lexers/swift.rb
CHANGED
@@ -25,7 +25,7 @@ module Rouge
|
|
25
25
|
)
|
26
26
|
|
27
27
|
declarations = Set.new %w(
|
28
|
-
class deinit enum convenience extension final func import init internal lazy let optional private protocol public required static struct subscript typealias var dynamic indirect associatedtype open fileprivate
|
28
|
+
class deinit enum convenience extension final func import init internal lazy let optional private protocol public required static struct subscript typealias var dynamic indirect associatedtype open fileprivate some
|
29
29
|
)
|
30
30
|
|
31
31
|
constants = Set.new %w(
|
@@ -67,6 +67,7 @@ module Rouge
|
|
67
67
|
|
68
68
|
state :root do
|
69
69
|
mixin :whitespace
|
70
|
+
|
70
71
|
rule %r/\$(([1-9]\d*)?\d)/, Name::Variable
|
71
72
|
|
72
73
|
rule %r{[()\[\]{}:;,?\\]}, Punctuation
|
data/lib/rouge/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rouge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeanine Adkisson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
|
14
14
|
email:
|
@@ -73,8 +73,10 @@ files:
|
|
73
73
|
- lib/rouge/demos/escape
|
74
74
|
- lib/rouge/demos/factor
|
75
75
|
- lib/rouge/demos/fortran
|
76
|
+
- lib/rouge/demos/freefem
|
76
77
|
- lib/rouge/demos/fsharp
|
77
78
|
- lib/rouge/demos/gdscript
|
79
|
+
- lib/rouge/demos/ghc-core
|
78
80
|
- lib/rouge/demos/gherkin
|
79
81
|
- lib/rouge/demos/glsl
|
80
82
|
- lib/rouge/demos/go
|
@@ -135,6 +137,7 @@ files:
|
|
135
137
|
- lib/rouge/demos/nim
|
136
138
|
- lib/rouge/demos/nix
|
137
139
|
- lib/rouge/demos/objective_c
|
140
|
+
- lib/rouge/demos/objective_cpp
|
138
141
|
- lib/rouge/demos/ocaml
|
139
142
|
- lib/rouge/demos/openedge
|
140
143
|
- lib/rouge/demos/opentype_feature_file
|
@@ -272,8 +275,10 @@ files:
|
|
272
275
|
- lib/rouge/lexers/escape.rb
|
273
276
|
- lib/rouge/lexers/factor.rb
|
274
277
|
- lib/rouge/lexers/fortran.rb
|
278
|
+
- lib/rouge/lexers/freefem.rb
|
275
279
|
- lib/rouge/lexers/fsharp.rb
|
276
280
|
- lib/rouge/lexers/gdscript.rb
|
281
|
+
- lib/rouge/lexers/ghc_core.rb
|
277
282
|
- lib/rouge/lexers/gherkin.rb
|
278
283
|
- lib/rouge/lexers/gherkin/keywords.rb
|
279
284
|
- lib/rouge/lexers/glsl.rb
|
@@ -338,6 +343,8 @@ files:
|
|
338
343
|
- lib/rouge/lexers/nim.rb
|
339
344
|
- lib/rouge/lexers/nix.rb
|
340
345
|
- lib/rouge/lexers/objective_c.rb
|
346
|
+
- lib/rouge/lexers/objective_c/common.rb
|
347
|
+
- lib/rouge/lexers/objective_cpp.rb
|
341
348
|
- lib/rouge/lexers/ocaml.rb
|
342
349
|
- lib/rouge/lexers/ocaml/common.rb
|
343
350
|
- lib/rouge/lexers/openedge.rb
|
@@ -457,7 +464,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
457
464
|
- !ruby/object:Gem::Version
|
458
465
|
version: '0'
|
459
466
|
requirements: []
|
460
|
-
rubygems_version: 3.
|
467
|
+
rubygems_version: 3.1.2
|
461
468
|
signing_key:
|
462
469
|
specification_version: 4
|
463
470
|
summary: A pure-ruby colorizer based on pygments
|