public ConvertNode(Source source, CodeTreeNode child, CodeTreeNode type) : base(source) { this.child = child; this.type = type; }
public MemberNode(Source source, CodeTreeNode obj, string member) : base(source) { this.obj = obj; this.member = member; }
public PrintNode(Source source, CodeTreeNode expression) : base(source) { this.expression = new ConvertNode( source, expression, new ValueNode( source, typeof(string))); }
public TryNode(Source source, CodeTreeNode tryBody, CodeTreeNode catchVariable, CodeTreeNode catchBody) : base(source) { if (tryBody == null) throw new Exception(); this.tryBody = tryBody; this.catchVariable = catchVariable; this.catchBody = catchBody; }
public NewNode(Source source, CodeTreeNode type, CodeTreeNode[] parameters) : base(source) { this.type = type; if (parameters == null) parameters = zeroParameters; this.parameters = parameters; }
public WhileNode(Source source, CodeTreeNode condition, CodeTreeNode body) : base(source) { this.condition = new ConvertNode( source, condition, new ValueNode( source, typeof(bool))); this.body = body;; }
public TryNode(Source source, CodeTreeNode tryBody, CodeTreeNode catchVariable, CodeTreeNode catchBody) : base(source) { if (tryBody == null) { throw new Exception(); } this.tryBody = tryBody; this.catchVariable = catchVariable; this.catchBody = catchBody; }
public CallNode(Source source, CodeTreeNode callable, bool parentScope, CodeTreeNode[] parameters) : base(source) { this.callable = callable; this.parentScope = parentScope; if (parameters == null) parameters = zeroParameters; this.parameters = parameters; }
public NewNode(Source source, CodeTreeNode type, CodeTreeNode[] parameters) : base(source) { this.type = type; if (parameters == null) { parameters = zeroParameters; } this.parameters = parameters; }
public override CodeTreeNode BuildCodeTree(RuntimeState state) { CodeTreeNode[] parameterNodes = new CodeTreeNode[parameters.Count]; for (int n = 0; n < parameters.Count; n++) parameterNodes[n] = ((Expression) parameters[n]).BuildCodeTree(state); return new CallNode( Source, callable.BuildCodeTree(state), parameterNodes); }
public IfNode(Source source, CodeTreeNode condition, CodeTreeNode trueBody, CodeTreeNode falseBody) : base(source) { this.condition = new ConvertNode( source, condition, new ValueNode( source, typeof(bool))); this.trueBody = trueBody; this.falseBody = falseBody; }
public MethodInfo CompileDynamicMethod(string name, CodeTreeNode codeTreeNode) { Block generator = new Block(); codeTreeNode.EmitRun(generator); DynamicMethod method = new DynamicMethod( name, typeof(object), new Type[]{typeof(Runtime), typeof(IScope)}, moduleBuilder); generator.Build(new DynamicMethodProxy(method)); return method; }
public CallNode(Source source, CodeTreeNode callable, bool parentScope, CodeTreeNode[] parameters) : base(source) { this.callable = callable; this.parentScope = parentScope; if (parameters == null) { parameters = zeroParameters; } this.parameters = parameters; }
public ThrowNode(Source source, CodeTreeNode exception) : base(source) { this.exception = exception; }
public GetToRunNode(Source source, CodeTreeNode child) : base(source) { this.child = child; }
public ReturnNode(Source source, CodeTreeNode expression) : base(source) { this.expression = expression; }
public AssignNode(Source source, CodeTreeNode from, CodeTreeNode to) : base(source) { this.from = from; this.to = to; }
public CallNode(Source source, CodeTreeNode callable, CodeTreeNode[] parameters) : this(source, callable, false, parameters) { }
public void SetCodeTree(CodeTreeNode codeTree) { if (this.codeTree != null) throw new Exception(); this.codeTree = codeTree; }