blob: 495d7906e8508d269997a1e00aa0d107145cbb4a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import re
from .tokeniser import TokenType
def try_parse_class_name(tokens):
if tokens.try_skip(TokenType.SYMBOL, "."):
return parse_identifier(tokens)
else:
return None
def parse_identifier(tokens):
return decode_escape_sequences(tokens.next_value(TokenType.IDENTIFIER))
def parse_string(tokens):
return decode_escape_sequences(tokens.next_value(TokenType.STRING)[1:-1])
_ESCAPE_SEQUENCE_REGEX = re.compile(r"\\(.)")
def decode_escape_sequences(value):
return _ESCAPE_SEQUENCE_REGEX.sub(_decode_escape_sequence, value)
def _decode_escape_sequence(match):
code = match.group(1)
if code == "n":
return "\n"
elif code == "r":
return "\r"
elif code == "t":
return "\t"
else:
return code
|