class For(StatementNode): start = NodeField(ExpressionNode) stop = NodeField(ExpressionNode) step = NodeField(ExpressionNode) target = NodeField(Name) body = NodeListField(StatementNode)
class FunctionLocal(StatementNode): name = NodeField(Name) args = NodeListField(Name) body = NodeListField(StatementNode) varargs = ValueField(bool)
class Repeat(StatementNode): body = NodeListField(StatementNode) test = NodeField(ExpressionNode)
class If(StatementNode): test = NodeField(ExpressionNode) body = NodeListField(StatementNode) orelse = NodeListField(StatementNode)
class CallStatement(StatementNode): body = NodeField(Call)
class While(StatementNode): test = NodeField(ExpressionNode) body = NodeListField(StatementNode)
class UnaryOp(ExpressionNode): op = ValueField(str) operand = NodeField(ExpressionNode)
class Call(ExpressionNode): func = NodeField(ExpressionNode) args = NodeListField(ExpressionNode)
class BinOp(ExpressionNode): op = ValueField(str) left = NodeField(ExpressionNode) right = NodeField(ExpressionNode)
class Field(Node): key = NodeField(ExpressionNode) value = NodeField(ExpressionNode)
class Method(FuncNameNode): value = NodeField(ExpressionNode) method = ValueField(Name)
class Attribute(FuncNameNode): value = NodeField(ExpressionNode) attr = ValueField(Name)
class Subscript(VarNode): value = NodeField(ExpressionNode) slice = NodeField(ExpressionNode)