diff options
author | Miikka Salminen <miikka.salminen@gmail.com> | 2016-02-06 22:01:49 +0200 |
---|---|---|
committer | Miikka Salminen <miikka.salminen@gmail.com> | 2016-02-06 22:01:49 +0200 |
commit | 995aa30dfb51621a017833258654d35ec3fc2c30 (patch) | |
tree | 478df67e08fb01720e3426f7006c0ab2f322a35e /pygments/lexers/c_cpp.py | |
parent | 0c812483363f57bc812f979d70d6b6773da6135f (diff) | |
download | pygments-995aa30dfb51621a017833258654d35ec3fc2c30.tar.gz |
Add tokens for string affixes and heredoc delimiters. Add lexing for them in C/C++, Perl, PHP, Python and Ruby. Update my old style Lovelace accordingly.
Diffstat (limited to 'pygments/lexers/c_cpp.py')
-rw-r--r-- | pygments/lexers/c_cpp.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/pygments/lexers/c_cpp.py b/pygments/lexers/c_cpp.py index 5c724d03..7f061539 100644 --- a/pygments/lexers/c_cpp.py +++ b/pygments/lexers/c_cpp.py @@ -50,8 +50,9 @@ class CFamilyLexer(RegexLexer): (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline), ], 'statements': [ - (r'L?"', String, 'string'), - (r"L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'", String.Char), + (r'(L?)(")', bygroups(String.Affix, String), 'string'), + (r"(L?)(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')", + bygroups(String.Affix, String.Char, String.Char, String.Char)), (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*', Number.Float), (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float), (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex), @@ -217,7 +218,11 @@ class CppLexer(CFamilyLexer): (r'char(16_t|32_t)\b', Keyword.Type), (r'(class)(\s+)', bygroups(Keyword, Text), 'classname'), # C++11 raw strings - (r'R"\(', String, 'rawstring'), + (r'(R)(")([^\\()\s]{,16})(\((?:.|\n)*?\))(\3)(")', + bygroups(String.Affix, String, String.Delimiter, String, + String.Delimiter, String)), + # C++11 UTF-8/16/32 strings + (r'(u8|u|U)(")', bygroups(String.Affix, String), 'string'), inherit, ], 'root': [ @@ -234,11 +239,6 @@ class CppLexer(CFamilyLexer): # template specification (r'\s*(?=>)', Text, '#pop'), ], - 'rawstring': [ - (r'\)"', String, '#pop'), - (r'[^)]+', String), - (r'\)', String), - ], } def analyse_text(text): |