diff options
author | Benedikt Böhm <bb@xnull.de> | 2009-05-21 18:21:20 +0200 |
---|---|---|
committer | Benedikt Böhm <bb@xnull.de> | 2009-05-21 18:21:20 +0200 |
commit | 028a685f7c19dee1af0482cf5ed142e751d36a62 (patch) | |
tree | 3b857f3ae599175e2ad9726b2e1e340501473582 /src/front/token.py | |
parent | ccdf1686129f73765cf9b771c04f4676e0ad22bd (diff) | |
download | swppy-028a685f7c19dee1af0482cf5ed142e751d36a62.tar.gz swppy-028a685f7c19dee1af0482cf5ed142e751d36a62.tar.xz swppy-028a685f7c19dee1af0482cf5ed142e751d36a62.zip |
implement AST interfaces, which also superseeds parser tokens
Diffstat (limited to 'src/front/token.py')
-rw-r--r-- | src/front/token.py | 47 |
1 files changed, 6 insertions, 41 deletions
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 "<Tag: %s>" % 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 "<Token: %s>" % 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 "<LeafToken: %s, Value: %s>" % (self.tag, self.value.__str__()) - return "<LeafToken: %s>" % self.tag - -class NodeToken(Token): - pass + return "<Token: %s, Value: %s>" % (self.tag, str(self.value)) + return "<Token: %s>" % self.tag |