summaryrefslogtreecommitdiffstats
path: root/src/front/token.py
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__())