lib/rouge/lexers/cpp.rb in rouge-1.3.1 vs lib/rouge/lexers/cpp.rb in rouge-1.3.2
- old
+ new
@@ -1,8 +1,8 @@
module Rouge
module Lexers
- Lexer.load_const :C, 'c.rb'
+ load_const :C, 'c.rb'
class Cpp < C
desc "The C++ programming language"
tag 'cpp'
@@ -35,11 +35,20 @@
prepend :root do
# Offload C++ extensions, http://offload.codeplay.com/
rule /(?:__offload|__blockingoffload|__outer)\b/, Keyword::Pseudo
end
+ # digits with optional inner quotes
+ # see www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf
+ dq = /\d('?\d)*/
+
prepend :statements do
rule /class\b/, Keyword, :classname
+ rule %r((#{dq}[.]#{dq}?|[.]#{dq})(e[+-]?#{dq}[lu]*)?)i, Num::Float
+ rule %r(#{dq}e[+-]?#{dq}[lu]*)i, Num::Float
+ rule /0x\h('?\h)*[lu]*/i, Num::Hex
+ rule /0[0-7]('?[0-7])*[lu]*/i, Num::Oct
+ rule /#{dq}[lu]*/i, Num::Integer
end
state :classname do
rule id, Name::Class, :pop!