Beispiel #1
1
        public ConvertNode(Source source, CodeTreeNode child,
            CodeTreeNode type)
			    : base(source)
        {
            this.child = child;
            this.type = type;
        }
Beispiel #2
0
 public ConvertNode(Source source, CodeTreeNode child,
                    CodeTreeNode type)
     : base(source)
 {
     this.child = child;
     this.type  = type;
 }
Beispiel #3
0
 public MemberNode(Source source, CodeTreeNode obj,
                   string member)
     : base(source)
 {
     this.obj    = obj;
     this.member = member;
 }
Beispiel #4
0
        public MemberNode(Source source, CodeTreeNode obj,
            string member)
			    : base(source)
        {
            this.obj = obj;
            this.member = member;
        }
Beispiel #5
0
        public PrintNode(Source source, CodeTreeNode expression)
			: base(source)
        {
            this.expression = new ConvertNode(
                source,
                expression,
                new ValueNode(
                    source,
                    typeof(string)));
        }
Beispiel #6
0
 public PrintNode(Source source, CodeTreeNode expression)
     : base(source)
 {
     this.expression = new ConvertNode(
         source,
         expression,
         new ValueNode(
             source,
             typeof(string)));
 }
Beispiel #7
0
        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;
        }
Beispiel #8
0
        public NewNode(Source source, CodeTreeNode type,
			CodeTreeNode[] parameters)
				: base(source)
        {
            this.type = type;
            
            if (parameters == null)
                parameters = zeroParameters;
            
            this.parameters = parameters;
        }
Beispiel #9
0
        public WhileNode(Source source, CodeTreeNode condition,
                         CodeTreeNode body)
            : base(source)
        {
            this.condition = new ConvertNode(
                source,
                condition,
                new ValueNode(
                    source,
                    typeof(bool)));

            this.body = body;;
        }
Beispiel #10
0
        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;
        }
Beispiel #11
0
        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;
        }
Beispiel #12
0
        public NewNode(Source source, CodeTreeNode type,
                       CodeTreeNode[] parameters)
            : base(source)
        {
            this.type = type;

            if (parameters == null)
            {
                parameters = zeroParameters;
            }

            this.parameters = parameters;
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        public WhileNode(Source source, CodeTreeNode condition,
			CodeTreeNode body)
				: base(source)
        {
            this.condition = new ConvertNode(
                source,
                condition,
                new ValueNode(
                    source,
                    typeof(bool)));
            
            this.body = body;;
        }
Beispiel #15
0
        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;
        }
Beispiel #16
0
        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;
        }
Beispiel #17
0
        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;
        }
Beispiel #18
0
        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;
        }
Beispiel #19
0
 public ThrowNode(Source source, CodeTreeNode exception)
     : base(source)
 {
     this.exception = exception;
 }
Beispiel #20
0
        public GetToRunNode(Source source, CodeTreeNode child)
			: base(source)
        {
            this.child = child;
        }
Beispiel #21
0
        public ReturnNode(Source source, CodeTreeNode expression)
			    : base(source)
        {
            this.expression = expression;
        }
Beispiel #22
0
        public ThrowNode(Source source, CodeTreeNode exception)
			: base(source)
        {
            this.exception = exception;
        }
Beispiel #23
0
        public AssignNode(Source source, CodeTreeNode from, CodeTreeNode to)
			: base(source)
        {
            this.from = from;
            this.to = to;
        }
Beispiel #24
0
 public CallNode(Source source, CodeTreeNode callable,
                 CodeTreeNode[] parameters)
     : this(source, callable, false, parameters)
 {
 }
Beispiel #25
0
 public ReturnNode(Source source, CodeTreeNode expression)
     : base(source)
 {
     this.expression = expression;
 }
Beispiel #26
0
 public AssignNode(Source source, CodeTreeNode from, CodeTreeNode to)
     : base(source)
 {
     this.from = from;
     this.to   = to;
 }
Beispiel #27
0
 public GetToRunNode(Source source, CodeTreeNode child)
     : base(source)
 {
     this.child = child;
 }
Beispiel #28
0
 public void SetCodeTree(CodeTreeNode codeTree)
 {
     if (this.codeTree != null)
         throw new Exception();
     
     this.codeTree = codeTree;
 }
Beispiel #29
0
        public CallNode(Source source, CodeTreeNode callable,
			CodeTreeNode[] parameters)
			    : this(source, callable, false, parameters)
		{
		}