summaryrefslogblamecommitdiffstats
path: root/src/front/token.py
blob: 4cf646a78250a8eacd7c4db5c4c5a7c301b988ef (plain) (tree)
1
2
3
4
5
6
7



                       

                             
 













































                                   








                            
                                       









                                   
                                                                          
# -*- 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__())