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); }
public override void Compile(CompilerContext context) { base.Compile(context); Expression.Compile(context); context.CodeGenerator.AssignExpression(VariableName); }
public void Compile(CompilerContext context) { context.CodeGenerator.BeginMethod(Name); foreach (var statement in Statements) { statement.Compile(context); } context.CodeGenerator.EndMethod(); }
public override void Compile(CompilerContext context) { base.Compile(context); context.CodeGenerator.BeginExpression(); Expression.Compile(context); context.CodeGenerator.EndExpression(); context.CodeGenerator.ReturnExpression(Expression.Type); }
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); }
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); }
public virtual void Compile(CompilerContext context) { }
public override void Compile(CompilerContext context) { base.Compile(context); }
public override void Compile(CompilerContext context) { base.Compile(context); context.CodeGenerator.ExprNumber(Value); }