-
Notifications
You must be signed in to change notification settings - Fork 1
/
rules.py
76 lines (72 loc) · 1.98 KB
/
rules.py
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
lex_rule = [ #Identifier, Keyword //
(r'[ \t]+', None),
(r'#[^\n]*', None),
(r'[\n]+[ \t]*\'\'\'[(?!(\'\'\'))\w\W]*\'\'\'', None),
(r'[\n]+[ \t]*\"\"\"[(?!(\"\"\"))\w\W]*\"\"\"', None),
(r'\n', "newline"),
(r'[\+\-]?[0-9]*\.[0-9]+', "numbers"),
(r'[\+\-]?[1-9][0-9]+', "numbers"),
(r'[\+\-]?[0-9]', "numbers"),
(r'\"[^\"\n]*\"', "string"),
(r'\'[^\'\n]*\'', "string"),
(r'\=(?!\=)', "equal"),
(r'\==', "iseq"),
(r'!=', "neq"),
(r'<=', "le"),
(r'<', "l"),
(r'>=', "ge"),
(r'>', "g"),
(r'\(', "lp"), #left parenthesis
(r'\)', "rp"), #right parenthesis
(r'\[', "lsb"), #left square bracket
(r'\]', "rsb"), #right square bracket
(r'\{', "lcb"), #left curly bracket
(r'\}', "rcb"), #right curly bracket
(r'\:', "colon"),
(r'-=', "subtreq"),
(r'\*=', "muleq"),
(r'\+=', "sumeq"),
(r'/=', "diveq"),
(r'\+\+', "increment"),
(r'\-\-', "decrement"),
(r'\*\*', "pow"),
(r'\+', "add"),
(r'\-', "subtr"),
(r'\*', "mul"),
(r'/', "div"),
(r'\,', "comma"),
(r'\w+[.]\w+', "dotbetween"),
(r'\.', "dot"),
(r'\%', "mod"),
(r'\;', "semicolon"),
(r'\&\&', "and"),
(r'\|\|', "or"),
(r'\!', "not"),
(r'\blet\b', "let"),
(r'\bconst\b', "const"),
(r'\band\b', "and"),
(r'\bor\b', "or"),
(r'\bnot\b', "not"),
(r'\btrue\b', "true"),
(r'\bfalse\b', "false"),
(r'\bdelete\b', "delete"),
(r'\bif\b', "if"),
(r'\belse\b', "else"),
(r'\bfor\b', "for"),
(r'\bin\b', "in"),
(r'\bwhile\b', "while"),
(r'\bbreak\b', "break"),
(r'\bcontinue\b', "continue"),
(r'\breturn\b', "return"),
(r'\btry\b', "try"),
(r'\bcatch\b', "catch"),
(r'\bfinally\b', "finally"),
(r'\bswitch\b', "switch"),
(r'\bcase\b', "case"),
(r'\bdefault\b', "default"),
(r'\bthrow\b', "throw"),
(r'\bnull\b', "null"),
(r'\bvar\b', "varjs"),
(r'\bfunction\b', "function"),
(r'[A-Za-z_][A-Za-z0-9_]*', "var"),
]