56 lines
1.1 KiB
Python
56 lines
1.1 KiB
Python
|
|
# AST nodes for the Jackal compiler
|
|
# Author: Josh Holtrop
|
|
# Date: 2010-09-14
|
|
|
|
class Node:
|
|
pass
|
|
|
|
class BinOpNode(Node):
|
|
def __init__(self, binop, s1, s2):
|
|
self.binop = binop
|
|
self.s1 = s1
|
|
self.s2 = s2
|
|
|
|
class ModuleNode(Node):
|
|
def __init__(self, classes):
|
|
self.classes = classes
|
|
|
|
class ClassNode(Node):
|
|
def __init__(self, name, items):
|
|
self.name = name
|
|
self.items = items
|
|
|
|
class TypeNode(Node):
|
|
def __init__(self, name):
|
|
self.name = name
|
|
|
|
class FunctionNode(Node):
|
|
def __init__(self, name, parameters, rtype, body):
|
|
self.name = name
|
|
self.parameters = parameters
|
|
self.rtype = rtype
|
|
self.body = body
|
|
|
|
class BlockNode(Node):
|
|
def __init__(self, body):
|
|
self.body = body
|
|
|
|
class VarspecNode(Node):
|
|
def __init__(self, name, typ):
|
|
self.name = name
|
|
self.typ = typ
|
|
|
|
class ReturnNode(Node):
|
|
def __init__(self, expr):
|
|
self.expr = expr
|
|
|
|
class ParamNode(Node):
|
|
def __init__(self, name, typ):
|
|
self.name = name
|
|
self.typ = typ
|
|
|
|
class IntegerNode(Node):
|
|
def __init__(self, value):
|
|
self.value = value
|