124 # String.Double: 'strings' is factorised for 'dqs' and 'sqs' |
124 # String.Double: 'strings' is factorised for 'dqs' and 'sqs' |
125 'strings': [ |
125 'strings': [ |
126 (r'[^\\\'"\n]+', String), |
126 (r'[^\\\'"\n]+', String), |
127 # quotes, percents and backslashes must be parsed one at a time |
127 # quotes, percents and backslashes must be parsed one at a time |
128 (r'[\'"\\]', String), |
128 (r'[\'"\\]', String), |
129 ], |
129 ], |
130 'stringescape': [ |
130 'stringescape': [ |
131 (r'\\([\\btnfr"\']|u[0-3][0-7]{2}|u[0-7]{1,2})', String.Escape) |
131 (r'\\([\\btnfr"\']|u[0-3][0-7]{2}|u[0-7]{1,2})', String.Escape) |
132 ], |
132 ], |
133 'dqs': [ # double-quoted string |
133 'dqs': [ # double-quoted string |
134 (r'"', String, '#pop'), |
134 (r'"', String, '#pop'), |
135 (r'\\\\|\\"', String.Escape), |
135 (r'\\\\|\\"', String.Escape), |
136 include('strings') |
136 include('strings') |
137 ], |
137 ], |
138 'sqs': [ # single-quoted string |
138 'sqs': [ # single-quoted string |
139 (r"'", String, '#pop'), |
139 (r"'", String, '#pop'), |
140 (r"\\\\|\\'", String.Escape), |
140 (r"\\\\|\\'", String.Escape), |
141 include('strings') |
141 include('strings') |
142 ], |
142 ], |
143 'name': [ |
143 'name': [ |
144 ('[a-zA-Z_]\w*', Name), |
144 (r'[a-zA-Z_]\w*', Name), |
145 ], |
145 ], |
146 # numbers: excerpt taken from the python lexer |
146 # numbers: excerpt taken from the python lexer |
147 'numbers': [ |
147 'numbers': [ |
148 (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float), |
148 (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float), |
149 (r'\d+[eE][+-]?[0-9]+', Number.Float), |
149 (r'\d+[eE][+-]?[0-9]+', Number.Float), |
150 (r'\d+', Number.Integer) |
150 (r'\d+', Number.Integer) |