예제 #1
0
 public override CodeTreeNode BuildCodeTree(RuntimeState state)
 {
     return(new WhileNode(
                Source,
                condition.BuildCodeTree(state),
                body.BuildCodeTree(state)));
 }
예제 #2
0
 public override CodeTreeNode BuildCodeTree(RuntimeState state)
 {
     return(new IfNode(
                Source,
                condition.BuildCodeTree(state),
                trueBody.BuildCodeTree(state),
                falseBody == null ?
                null
           : falseBody.BuildCodeTree(state)));
 }
예제 #3
0
 public override CodeTreeNode BuildCodeTree(RuntimeState state)
 {
     return(new TryNode(
                Source,
                tryBody.BuildCodeTree(state),
                catchVariable != null ?
                catchVariable.BuildCodeTree(state)
           : null,
                catchBody.BuildCodeTree(state)));
 }
예제 #4
0
        public void Define(RuntimeState state)
        {
            List <string> parameters = new List <string>();

            foreach (Name parameter in this.parameters)
            {
                parameters.Add(parameter.name);
            }

            Method function = new Method(
                name.name,
                name.name,
                false,
                parameters);

            function.SetCodeTree(body.BuildCodeTree(state));

            state.Scope.SetName(name.name, function);
        }
예제 #5
0
        public override void Build(RuntimeState state, ClassBuilder builder)
        {
            List <string> parameters = new List <string>();

            foreach (Name parameter in this.parameters)
            {
                parameters.Add(parameter.name);
            }

            Method method = new Method(
                builder.TypeBuilder.Name + "." + name.name,
                name.name,
                true,
                parameters);

            method.SetCodeTree(body.BuildCodeTree(state));

            builder.AddMethod(method);
        }