blob: def0236311e58f288daa2f173eba011d67ea8234 (
plain) (
blame)
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
|
# -*- coding: utf-8 -*-
# date: 20 Mai 2009
class Tag:
# lexer tokens
NUMBER = 1
TRUE = 2
FALSE = 3
IDENT = 4
WHILE = 5
IF = 6
ELSE = 7
END = 8
LBRAK = 9
RBRAK = 10
LPAREN = 11
RPAREN = 12
NEWLINE = 13
COMMA = 14
FUN = 15
ASSIGNMENT = 16
RETURN = 17
OPERATOR = 18
# parser tokens
BOOL = 19
JOIN = 20
EQUALITY = 21
RELATION = 22
EXPRESSION = 23
TERM = 24
UNARY = 25
FACTOR = 26
IDENT_LIST = 27
EXPRESSION_LIST = 28
PROGRAM = 29
FUNCTION = 30
STATEMENT = 31
STATEMENTS = 32
IF_STATEMENT = 33
WHILE_STATEMENT = 34
RETURN_STATEMENT = 35
ASSIGN_STATEMENT = 36
FUNCTION_CALL = 37
class Token:
tag = None
def __init__(self, tag):
self.tag = tag
return
def __repr__(self):
return "<Token: %d>" % self.tag
class ValueToken(Token):
value = None
def __init__(self, tag, value):
Token.__init__(self, tag)
self.value = value
return
def __repr__(self):
return "<Token: %d Value: %s>" % (self.tag, self.value.__str__())
|