From 028a685f7c19dee1af0482cf5ed142e751d36a62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20B=C3=B6hm?= Date: Thu, 21 May 2009 18:21:20 +0200 Subject: implement AST interfaces, which also superseeds parser tokens --- src/front/token.py | 47 ++++++----------------------------------------- 1 file changed, 6 insertions(+), 41 deletions(-) (limited to 'src/front/token.py') diff --git a/src/front/token.py b/src/front/token.py index 31159bf..e1bc8d8 100644 --- a/src/front/token.py +++ b/src/front/token.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -# date: 20 Mai 2009 class Tag(object): __slots__ = ["name"] @@ -13,10 +12,9 @@ class Tag(object): def __repr__(self): return "" % self -# lexer tokens +# token tags Tag.NUMBER = Tag("NUMBER") -Tag.TRUE = Tag("TRUE") -Tag.FALSE = Tag("FALSE") +Tag.BOOL = Tag("BOOL") Tag.IDENT = Tag("IDENT") Tag.WHILE = Tag("WHILE") Tag.IF = Tag("IF") @@ -33,47 +31,14 @@ 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(object): - __slots__ = ["tag"] - - def __init__(self, tag): - self.tag = tag - - def __repr__(self): - return "" % self.tag - -class LeafToken(Token): - __slots__ = ["value"] + __slots__ = ["tag","value"] def __init__(self, tag, value = None): - Token.__init__(self, tag) + self.tag = tag self.value = value def __repr__(self): if self.value: - return "" % (self.tag, self.value.__str__()) - return "" % self.tag - -class NodeToken(Token): - pass + return "" % (self.tag, str(self.value)) + return "" % self.tag -- cgit v1.2.3