public void SetCodeTree(CodeTreeNode codeTree) { if (this.codeTree != null) { throw new Exception(); } this.codeTree = codeTree; }
public override CodeTreeNode BuildCodeTree(RuntimeState state) { CodeTreeNode node = obj.BuildCodeTree(state); string name = member.name; node = new MemberNode(Source, node, name); return(node); }
public override CodeTreeNode BuildCodeTree(RuntimeState state) { List <CodeTreeNode> children = new List <CodeTreeNode>(); foreach (Statement statement in body) { CodeTreeNode tree = statement.BuildCodeTree(state); children.Add(tree); } return(new CodeTree.SeqNode( Source, children)); }
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 NewNode( Source, type.BuildCodeTree(state), parameterNodes)); }
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 override CodeTreeNode BuildCodeTree(RuntimeState state) { Expression firstExpression = (Expression)expressions[0]; CodeTreeNode printed = firstExpression.BuildCodeTree(state); printed = new ConvertNode( Source, printed, new ValueNode( Source, typeof(string))); for (int n = 1; n < expressions.Count; n++) { Expression expression = (Expression)expressions[n]; CodeTreeNode append = expression.BuildCodeTree(state); CodeTreeNode sep = new ValueNode( Source, " "); append = new OperationNode( Source, Operation.Add, sep, append); printed = new OperationNode( Source, Operation.Add, printed, append); } return(new PrintNode( Source, printed)); }
public void Set(RuntimeState state, object v) { CodeTreeNode tree = BuildCodeTree(state); tree.Set(state, v); }
public object Get(RuntimeState state) { CodeTreeNode tree = BuildCodeTree(state); return(tree.Get(state, null)); }
public object Run(RuntimeState state) { CodeTreeNode tree = BuildCodeTree(state); return(tree.Run(state)); }