rouge 3.14.0 → 3.15.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|