blob: 4cf646a78250a8eacd7c4db5c4c5a7c301b988ef (
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
67
68
69
70
71
72
73
74
|
# -*- coding: utf-8 -*-
# date: 20 Mai 2009
class Tag:
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
def __repr__(self):
return "<Tag: %s>" % self
# lexer tokens
Tag.NUMBER = Tag("NUMBER")
Tag.TRUE = Tag("TRUE")
Tag.FALSE = Tag("FALSE")
Tag.IDENT = Tag("IDENT")
Tag.WHILE = Tag("WHILE")
Tag.IF = Tag("IF")
Tag.ELSE = Tag("ELSE")
Tag.END = Tag("END")
Tag.LBRAK = Tag("LBRAK")
Tag.RBRAK = Tag("RBRAK")
Tag.LPAREN = Tag("LPAREN")
Tag.RPAREN = Tag("RPAREN")
Tag.NEWLINE = Tag("NEWLINE")
Tag.COMMA = Tag("COMMA")
Tag.FUN = Tag("FUN")
Tag.ASSIGNMENT = Tag("ASSIGNMENT")
Tag.RETURN = Tag("RETURN")
Tag.OPERATOR = Tag("OPERATOR")
# parser tokens
Tag.BOOL = Tag("BOOL")
Tag.JOIN = Tag("JOIN")
Tag.EQUALITY = Tag("EQUALITY")
Tag.RELATION = Tag("RELATION")
Tag.EXPRESSION = Tag("EXPRESSION")
Tag.TERM = Tag("TERM")
Tag.UNARY = Tag("UNARY")
Tag.FACTOR = Tag("FACTOR")
Tag.IDENT = Tag("IDENT")
Tag.EXPRESSION = Tag("EXPRESSION")
Tag.PROGRAM = Tag("PROGRAM")
Tag.FUNCTION = Tag("FUNCTION")
Tag.STATEMENT = Tag("STATEMENT")
Tag.STATEMENTS = Tag("STATEMENTS")
Tag.IF = Tag("IF")
Tag.WHILE = Tag("WHILE")
Tag.RETURN = Tag("RETURN")
Tag.ASSIGN = Tag("ASSIGN")
Tag.FUNCTION = Tag("FUNCTION")
class Token:
tag = None
def __init__(self, tag):
self.tag = tag
return
def __repr__(self):
return "<Token: %s>" % 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: %s, Value: %s>" % (self.tag, self.value.__str__())
|