ThirdParty/Pygments/pygments/lexers/crystal.py

Tue, 25 Apr 2017 18:36:38 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 25 Apr 2017 18:36:38 +0200
changeset 5713
6762afd9f963
permissions
-rw-r--r--

Updated Pygments to 2.2.0.

5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 """
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 pygments.lexers.crystal
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 ~~~~~~~~~~~~~~~~~~~~~~~
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 Lexer for Crystal.
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 :license: BSD, see LICENSE for details.
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 """
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import re
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from pygments.lexer import ExtendedRegexLexer, include, \
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 bygroups, default, LexerContext, words
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 Number, Punctuation, Error
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 __all__ = ['CrystalLexer']
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 line_re = re.compile('.*?\n')
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 CRYSTAL_OPERATORS = [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 '!=', '!~', '!', '%', '&&', '&', '**', '*', '+', '-', '/', '<=>', '<<', '<=', '<',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 '===', '==', '=~', '=', '>=', '>>', '>', '[]=', '[]?', '[]', '^', '||', '|', '~'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 ]
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 class CrystalLexer(ExtendedRegexLexer):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 For `Crystal <http://crystal-lang.org>`_ source code.
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 .. versionadded:: 2.2
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 name = 'Crystal'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 aliases = ['cr', 'crystal']
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 filenames = ['*.cr']
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 mimetypes = ['text/x-crystal']
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 flags = re.DOTALL | re.MULTILINE
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 def heredoc_callback(self, match, ctx):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 # okay, this is the hardest part of parsing Crystal...
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 # match: 1 = <<-?, 2 = quote? 3 = name 4 = quote? 5 = rest of line
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 start = match.start(1)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 yield start, Operator, match.group(1) # <<-?
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 yield match.start(2), String.Heredoc, match.group(2) # quote ", ', `
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 yield match.start(3), String.Delimiter, match.group(3) # heredoc name
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 yield match.start(4), String.Heredoc, match.group(4) # quote again
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 heredocstack = ctx.__dict__.setdefault('heredocstack', [])
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 outermost = not bool(heredocstack)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 heredocstack.append((match.group(1) == '<<-', match.group(3)))
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 ctx.pos = match.start(5)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 ctx.end = match.end(5)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 # this may find other heredocs
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 for i, t, v in self.get_tokens_unprocessed(context=ctx):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 yield i, t, v
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 ctx.pos = match.end()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 if outermost:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 # this is the outer heredoc again, now we can process them all
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 for tolerant, hdname in heredocstack:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 lines = []
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 for match in line_re.finditer(ctx.text, ctx.pos):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 if tolerant:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 check = match.group().strip()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 else:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 check = match.group().rstrip()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 if check == hdname:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 for amatch in lines:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 yield amatch.start(), String.Heredoc, amatch.group()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 yield match.start(), String.Delimiter, match.group()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 ctx.pos = match.end()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 break
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 else:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 lines.append(match)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 else:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 # end of heredoc not found -- error!
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 for amatch in lines:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 yield amatch.start(), Error, amatch.group()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 ctx.end = len(ctx.text)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 del heredocstack[:]
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 def gen_crystalstrings_rules():
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 def intp_regex_callback(self, match, ctx):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 yield match.start(1), String.Regex, match.group(1) # begin
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 nctx = LexerContext(match.group(3), 0, ['interpolated-regex'])
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 for i, t, v in self.get_tokens_unprocessed(context=nctx):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 yield match.start(3)+i, t, v
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 yield match.start(4), String.Regex, match.group(4) # end[imsx]*
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 ctx.pos = match.end()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 def intp_string_callback(self, match, ctx):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 yield match.start(1), String.Other, match.group(1)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 nctx = LexerContext(match.group(3), 0, ['interpolated-string'])
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 for i, t, v in self.get_tokens_unprocessed(context=nctx):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 yield match.start(3)+i, t, v
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 yield match.start(4), String.Other, match.group(4) # end
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 ctx.pos = match.end()
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 states = {}
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 states['strings'] = [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 (r'\:@{0,2}[a-zA-Z_]\w*[!?]?', String.Symbol),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 (words(CRYSTAL_OPERATORS, prefix=r'\:@{0,2}'), String.Symbol),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 (r":'(\\\\|\\'|[^'])*'", String.Symbol),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 # This allows arbitrary text after '\ for simplicity
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 (r"'(\\\\|\\'|[^']|\\[^'\\]+)'", String.Char),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 (r':"', String.Symbol, 'simple-sym'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 # Crystal doesn't have "symbol:"s but this simplifies function args
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 (r'([a-zA-Z_]\w*)(:)(?!:)', bygroups(String.Symbol, Punctuation)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 (r'"', String.Double, 'simple-string'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 (r'(?<!\.)`', String.Backtick, 'simple-backtick'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 ]
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 # double-quoted string and symbol
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 for name, ttype, end in ('string', String.Double, '"'), \
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 ('sym', String.Symbol, '"'), \
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 ('backtick', String.Backtick, '`'):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 states['simple-'+name] = [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 include('string-escaped' if name == 'sym' else 'string-intp-escaped'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 (r'[^\\%s#]+' % end, ttype),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 (r'[\\#]', ttype),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 (end, ttype, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 ]
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 # braced quoted strings
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 for lbrace, rbrace, bracecc, name in \
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 ('\\{', '\\}', '{}', 'cb'), \
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 ('\\[', '\\]', '\\[\\]', 'sb'), \
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 ('\\(', '\\)', '()', 'pa'), \
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 ('<', '>', '<>', 'ab'):
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 states[name+'-intp-string'] = [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 (r'\\[' + lbrace + ']', String.Other),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 (lbrace, String.Other, '#push'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 (rbrace, String.Other, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 include('string-intp-escaped'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 (r'[\\#' + bracecc + ']', String.Other),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 (r'[^\\#' + bracecc + ']+', String.Other),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 ]
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 states['strings'].append((r'%' + lbrace, String.Other,
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 name+'-intp-string'))
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 states[name+'-string'] = [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 (r'\\[\\' + bracecc + ']', String.Other),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 (lbrace, String.Other, '#push'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 (rbrace, String.Other, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 (r'[\\#' + bracecc + ']', String.Other),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 (r'[^\\#' + bracecc + ']+', String.Other),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 ]
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 # http://crystal-lang.org/docs/syntax_and_semantics/literals/array.html
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 states['strings'].append((r'%[wi]' + lbrace, String.Other,
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 name+'-string'))
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 states[name+'-regex'] = [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 (r'\\[\\' + bracecc + ']', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 (lbrace, String.Regex, '#push'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 (rbrace + '[imsx]*', String.Regex, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 include('string-intp'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 (r'[\\#' + bracecc + ']', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 (r'[^\\#' + bracecc + ']+', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 ]
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 states['strings'].append((r'%r' + lbrace, String.Regex,
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 name+'-regex'))
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 # these must come after %<brace>!
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 states['strings'] += [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 # %r regex
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 (r'(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[imsx]*)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 intp_regex_callback),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 # regular fancy strings with qsw
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 (r'(%[wi]([\W_]))((?:\\\2|(?!\2).)*)(\2)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 intp_string_callback),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 # special forms of fancy strings after operators or
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 # in method calls with braces
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 (r'(?<=[-+/*%=<>&!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 bygroups(Text, String.Other, None)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 # and because of fixed width lookbehinds the whole thing a
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 # second time for line startings...
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 (r'^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 bygroups(Text, String.Other, None)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 # all regular fancy strings without qsw
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 (r'(%([\[{(<]))((?:\\\2|(?!\2).)*)(\2)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 intp_string_callback),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 ]
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 return states
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 tokens = {
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 'root': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 (r'#.*?$', Comment.Single),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 # keywords
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 (words('''
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 abstract asm as begin break case do else elsif end ensure extend ifdef if
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 include instance_sizeof next of pointerof private protected rescue return
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 require sizeof super then typeof unless until when while with yield
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 '''.split(), suffix=r'\b'), Keyword),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 (words(['true', 'false', 'nil'], suffix=r'\b'), Keyword.Constant),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 # start of function, class and module names
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 (r'(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 bygroups(Keyword, Text, Name.Namespace)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 (r'(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 bygroups(Keyword, Text, Name.Namespace), 'funcname'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 (r'def(?=[*%&^`~+-/\[<>=])', Keyword, 'funcname'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 (r'(class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 bygroups(Keyword, Text, Name.Namespace), 'classname'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 (r'(self|out|uninitialized)\b|(is_a|responds_to)\?', Keyword.Pseudo),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 # macros
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 (words('''
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 debugger record pp assert_responds_to spawn parallel
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 getter setter property delegate def_hash def_equals def_equals_and_hash
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 forward_missing_to
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 '''.split(), suffix=r'\b'), Name.Builtin.Pseudo),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 (r'getter[!?]|property[!?]|__(DIR|FILE|LINE)__\b', Name.Builtin.Pseudo),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 # builtins
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 # http://crystal-lang.org/api/toplevel.html
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 (words('''
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 Object Value Struct Reference Proc Class Nil Symbol Enum Void
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 Bool Number Int Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 Float Float32 Float64 Char String
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 Pointer Slice Range Exception Regex
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 Mutex StaticArray Array Hash Set Tuple Deque Box Process File
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 Dir Time Channel Concurrent Scheduler
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 abort at_exit caller delay exit fork future get_stack_top gets
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 lazy loop main p print printf puts
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 raise rand read_line sleep sprintf system with_color
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 '''.split(), prefix=r'(?<!\.)', suffix=r'\b'), Name.Builtin),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 # normal heredocs
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 (r'(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 heredoc_callback),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 # empty string heredocs
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 (r'(<<-?)("|\')()(\2)(.*?\n)', heredoc_callback),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 (r'__END__', Comment.Preproc, 'end-part'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 # multiline regex (after keywords or assignments)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 (r'(?:^|(?<=[=<>~!:])|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 r'(?<=(?:\s|;)when\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 r'(?<=(?:\s|;)or\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 r'(?<=(?:\s|;)and\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 r'(?<=\.index\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 r'(?<=\.scan\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 r'(?<=\.sub\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 r'(?<=\.sub!\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 r'(?<=\.gsub\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 r'(?<=\.gsub!\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 r'(?<=\.match\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 r'(?<=(?:\s|;)if\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 r'(?<=(?:\s|;)elsif\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 r'(?<=^when\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 r'(?<=^index\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 r'(?<=^scan\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 r'(?<=^sub\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 r'(?<=^gsub\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 r'(?<=^sub!\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 r'(?<=^gsub!\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 r'(?<=^match\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 r'(?<=^if\s)|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 r'(?<=^elsif\s)'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 r')(\s*)(/)', bygroups(Text, String.Regex), 'multiline-regex'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 # multiline regex (in method calls or subscripts)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 (r'(?<=\(|,|\[)/', String.Regex, 'multiline-regex'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 # multiline regex (this time the funny no whitespace rule)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 (r'(\s+)(/)(?![\s=])', bygroups(Text, String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 'multiline-regex'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 # lex numbers and ignore following regular expressions which
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 # are division operators in fact (grrrr. i hate that. any
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 # better ideas?)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 # since pygments 0.7 we also eat a "?" operator after numbers
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 # so that the char operator does not work. Chars are not allowed
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 # there so that you can use the ternary operator.
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 # stupid example:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 # x>=0?n[x]:""
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 (r'(0o[0-7]+(?:_[0-7]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 bygroups(Number.Oct, Text, Operator)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 (r'(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 bygroups(Number.Hex, Text, Operator)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 (r'(0b[01]+(?:_[01]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 bygroups(Number.Bin, Text, Operator)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 # 3 separate expressions for floats because any of the 3 optional
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 # parts makes it a float
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 (r'((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)(?:e[+-]?[0-9]+)?'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 r'(?:_?f[0-9]+)?)(\s*)([/?])?',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 bygroups(Number.Float, Text, Operator)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 (r'((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 r'(?:_?f[0-9]+)?)(\s*)([/?])?',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 bygroups(Number.Float, Text, Operator)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 (r'((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)?'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 r'(?:_?f[0-9]+))(\s*)([/?])?',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 bygroups(Number.Float, Text, Operator)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 (r'(0\b|[1-9][\d]*(?:_\d+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 bygroups(Number.Integer, Text, Operator)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 # Names
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 (r'@@[a-zA-Z_]\w*', Name.Variable.Class),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 (r'@[a-zA-Z_]\w*', Name.Variable.Instance),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 (r'\$\w+', Name.Variable.Global),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 (r'\$[!@&`\'+~=/\\,;.<>_*$?:"^-]', Name.Variable.Global),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 (r'\$-[0adFiIlpvw]', Name.Variable.Global),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 (r'::', Operator),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 include('strings'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 # chars
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 (r'\?(\\[MC]-)*' # modifiers
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 r'(\\([\\befnrtv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 r'(?!\w)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 String.Char),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 (r'[A-Z][A-Z_]+\b', Name.Constant),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 # macro expansion
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 (r'\{%', String.Interpol, 'in-macro-control'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 (r'\{\{', String.Interpol, 'in-macro-expr'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 # attributes
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 (r'(@\[)(\s*)([A-Z]\w*)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 bygroups(Operator, Text, Name.Decorator), 'in-attr'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 # this is needed because Crystal attributes can look
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 # like keywords (class) or like this: ` ?!?
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 (words(CRYSTAL_OPERATORS, prefix=r'(\.|::)'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 bygroups(Operator, Name.Operator)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 (r'(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 bygroups(Operator, Name)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 # Names can end with [!?] unless it's "!="
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 (r'[a-zA-Z_]\w*(?:[!?](?!=))?', Name),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 (r'(\[|\]\??|\*\*|<=>?|>=|<<?|>>?|=~|===|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 r'!~|&&?|\|\||\.{1,3})', Operator),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 (r'[-+/*%=<>&!^|~]=?', Operator),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 (r'[(){};,/?:\\]', Punctuation),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 (r'\s+', Text)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 'funcname': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 (r'(?:([a-zA-Z_]\w*)(\.))?'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 r'([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|'
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 r'[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 bygroups(Name.Class, Operator, Name.Function), '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 default('#pop')
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 'classname': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 (r'[A-Z_]\w*', Name.Class),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 (r'(\()(\s*)([A-Z_]\w*)(\s*)(\))',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 bygroups(Punctuation, Text, Name.Class, Text, Punctuation)),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 default('#pop')
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 'in-intp': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 (r'\{', String.Interpol, '#push'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 (r'\}', String.Interpol, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 include('root'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 'string-intp': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 (r'#\{', String.Interpol, 'in-intp'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 'string-escaped': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 (r'\\([\\befnstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})', String.Escape)
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 'string-intp-escaped': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 include('string-intp'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 include('string-escaped'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 'interpolated-regex': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 include('string-intp'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 (r'[\\#]', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 (r'[^\\#]+', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 'interpolated-string': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 include('string-intp'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 (r'[\\#]', String.Other),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 (r'[^\\#]+', String.Other),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 'multiline-regex': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 include('string-intp'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 (r'\\\\', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 (r'\\/', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 (r'[\\#]', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 (r'[^\\/#]+', String.Regex),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 (r'/[imsx]*', String.Regex, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 'end-part': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 (r'.+', Comment.Preproc, '#pop')
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 'in-macro-control': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 (r'\{%', String.Interpol, '#push'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 (r'%\}', String.Interpol, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 (r'for\b|in\b', Keyword),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 include('root'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 'in-macro-expr': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 (r'\{\{', String.Interpol, '#push'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 (r'\}\}', String.Interpol, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 include('root'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 'in-attr': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 (r'\[', Operator, '#push'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 (r'\]', Operator, '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 include('root'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 }
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 tokens.update(gen_crystalstrings_rules())

eric ide

mercurial