Example #1
0
        public void Register(CompilerContext context)
        {
            var parameters = (from p in Arguments
                              select new Parameter(p.Type, p.Name)).ToArray();

            context.CodeGenerator.RegisterMethod(Name, ReturnType, parameters);
        }
Example #2
0
        public override void Compile(CompilerContext context)
        {
            base.Compile(context);

            Expression.Compile(context);
            context.CodeGenerator.AssignExpression(VariableName);
        }
Example #3
0
        public void Compile(CompilerContext context)
        {
            context.CodeGenerator.BeginMethod(Name);

            foreach (var statement in Statements)
            {
                statement.Compile(context);
            }

            context.CodeGenerator.EndMethod();
        }
Example #4
0
        public override void Compile(CompilerContext context)
        {
            base.Compile(context);

            context.CodeGenerator.BeginExpression();

            Expression.Compile(context);

            context.CodeGenerator.EndExpression();

            context.CodeGenerator.ReturnExpression(Expression.Type);
        }
Example #5
0
        public override void Compile(CompilerContext context)
        {
            base.Compile(context);

            if (Type != Expression.Type)
            {
                context.ErrorSet.Add(new CompileError(CompileErrorType.TypeMismatch));
                return;
            }

            context.CodeGenerator.DefineVariable(VariableName, Type);
            Expression.Compile(context);
            context.CodeGenerator.AssignExpression(VariableName);
        }
Example #6
0
        public static void Main(string[] args)
        {
            var inputFile = args[0];
            var outputFile = args[2];

            var antlrStringStream = new ANTLRFileStream(inputFile);
            var lexter = new CFlatLexer(antlrStringStream);
            var tokens = new CommonTokenStream(lexter);
            var parser = new CFlatParser(tokens);

            var tree = parser.prog().Tree;

            var nodes = new CommonTreeNodeStream(tree);
            var walker = new CFlatTree(nodes, new ErrorSet());

            var prog = walker.prog();

            var context = new CompilerContext(new ClrCodeGenerator(outputFile), new ErrorSet());
            prog.Compile(context);

            context.Save(true);
        }
Example #7
0
 public virtual void Compile(CompilerContext context)
 {
 }
Example #8
0
 public override void Compile(CompilerContext context)
 {
     base.Compile(context);
 }
Example #9
0
 public override void Compile(CompilerContext context)
 {
     base.Compile(context);
     context.CodeGenerator.ExprNumber(Value);
 }