From b8e617bd394401ec09c6f2b384707219004c5cfb Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 30 Aug 2011 10:58:36 -0400 Subject: [PATCH] change Node to nodes module; use a class hierarchy for node types --- parser/Node.py | 7 ------- parser/nodes.py | 17 +++++++++++++++++ parser/parserules.py | 6 +++--- 3 files changed, 20 insertions(+), 10 deletions(-) delete mode 100644 parser/Node.py create mode 100644 parser/nodes.py diff --git a/parser/Node.py b/parser/Node.py deleted file mode 100644 index ea0963a..0000000 --- a/parser/Node.py +++ /dev/null @@ -1,7 +0,0 @@ - -class Node(object): - def __init__(self, type, children=None, node=None, data=None): - self.type = type - self.children = children - self.node = node - self.data = data diff --git a/parser/nodes.py b/parser/nodes.py new file mode 100644 index 0000000..998508c --- /dev/null +++ b/parser/nodes.py @@ -0,0 +1,17 @@ + +class Node(object): + def __init__(self, children=None): + self.children = children + +class StatementNode(Node): + def __init__(self, children=None): + Node.__init__(self, children) + +class ExprNode(Node): + def __init__(self, children=None): + Node.__init__(self, children) + +class CExprNode(ExprNode): + def __init__(self, cstring): + ExprNode.__init__(self) + self.cstring = cstring diff --git a/parser/parserules.py b/parser/parserules.py index be5d412..4da62f9 100644 --- a/parser/parserules.py +++ b/parser/parserules.py @@ -1,10 +1,10 @@ from lexrules import tokens -from Node import Node +from nodes import * def p_statement(p): 'statement : expr SEMICOLON' - p[0] = Node('statement', [p[1]]) + p[0] = StatementNode([p[1]]) def p_expr(p): 'expr : c_expr' @@ -12,4 +12,4 @@ def p_expr(p): def p_c_expr(p): 'c_expr : C LPAREN STRING RPAREN' - p[0] = Node('c_expr', data=p[3]) + p[0] = CExprNode(p[3])