# -*- 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 "" % 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 "" % self.tag class ValueToken(Token): value = None def __init__(self, tag, value): Token.__init__(self, tag) self.value = value return def __repr__(self): return "" % (self.tag, self.value.__str__())