protected override ILStatement CompileILStatement(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { GetIndirectionExpression().Compile(context, request, this_value); GetFunctionCall().Compile(context, request, GetIndirectionExpression().GetValue()); return(GetFunctionCall().GetValue().GetILValue().CreateILCalculate()); }
public VariableInstance CompileVariableInstance(CmlContext context) { CmlScriptRequest request = InitializeRequest(context); ILValue il_value = GetExpression().GetValue().GetILValue(); Type expression_type = il_value.GetValueType(); CmlScriptValue_Argument value_argument = request.AddPrimaryArgument( new CmlScriptValue_Argument_Single_Placeholder(expression_type) ); CmlScriptDefinition_Link definition = definitions.GetOrCreateValue(request.GetSignature(), delegate() { return(new CmlScriptDefinition_Link( expression_type, "CmlLink[" + stored_text + "]", il_value.CanStore().IfTrue(() => GetType().CreateDynamicMethodDelegate <Process <object, object, object> >( "CmlLink_Store[" + stored_text + "]", new ILAssign(il_value, value_argument.GetILValue()) ) ), il_value.CanLoad().IfTrue(() => GetType().CreateDynamicMethodDelegate <Operation <object, object, object, object> >( "CmlLink_Load[" + stored_text + "]", new ILReturn(il_value) ) ) )); }); return(definition.CreateVariableInstance(request)); }
protected CmlScriptRequest InitializeRequest(CmlContext context) { request = new CmlScriptRequest(context); this.GetTopicalChildren <CmlScriptElement>().Process(e => e.Compile(context, request, request)); return(request); }
protected override CmlScriptValue CompileValue(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { GetLeft().Compile(context, request, this_value); GetRight().Compile(context, request, this_value); GetOperator().Compile(context, request, this_value, GetLeft().GetValue(), GetRight().GetValue()); return(GetOperator().GetValue()); }
public void Compile(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { GetStatements().Process(s => s.Compile(context, request, this_value)); il_block = new ILBlock( GetStatements().Convert(s => s.GetILStatement()) ); }
protected override ILStatement CompileILStatement(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { GetConditionExpression().Compile(context, request, this_value); GetWhileStatement().Compile(context, request, this_value); return(new ILWhile( GetConditionExpression().GetValue().GetILValue(), GetWhileStatement().GetILStatement() )); }
public void Compile(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { value = new CmlScriptValue_Basic( new ILStringExpression( GetString(), s => CmlScriptExpression.DOMify(s) .Chain(z => z.Compile(context, request, this_value)) .GetValue() .GetILValue() ) ); }
public FunctionInstance CompileFunctionInstance(CmlContext context) { CmlScriptRequest request = InitializeRequest(context); CmlScriptDefinition_Function definition = definitions.GetOrCreateValue(request.GetSignature(), delegate() { string name = "CmlFunction[" + GetFunctionParameters() + stored_text + "]"; return(new CmlScriptDefinition_Function( name, GetFunctionParameters().IfNotNull(p => p.GetParameterTypes()), GetType().CreateDynamicMethodDelegate <Process <object, object, object> >( name, GetLambda().GetILStatement() ) )); }); return(definition.CreateFunctionInstance(request)); }
public FunctionInstance CreateFunctionInstance(CmlScriptRequest request) { return(new FunctionInstance( request.GetTargetInfo().GetTarget().GetStrongTarget(), new Function_Operation( request.GetTargetInfo().GetTargetType(), typeof(void), name, parameter_types, delegate(object t, object[] p) { process( request.GetThisArgument().GetArgument(), request.GetHostArgument().GetArgument(), p ); return null; } ) )); }
public void Compile(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { GetExpressions().Process(e => e.Compile(context, request, request)); }
protected override CmlScriptValue CompileValue(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { return(this_value.GetIndirectValue(GetId()) .AssertNotNull(() => new CmlRuntimeError_InvalidIdForTypeException("value", GetId(), this_value.GetValueType()))); }
protected override ILStatement CompileILStatement(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { GetBlock().Compile(context, request, this_value); return(GetBlock().GetILBlock()); }
protected override CmlScriptValue CompileValue(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { return request.InsertThisRepresentationValue() .AssertNotNull(() => new CmlRuntimeError_InvalidIdException("representation", "this")); }
public void Compile(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { CmlScriptValue_Argument_Host parameter_host = request.AddPrimaryArgument(new CmlScriptValue_Argument_Host()); GetFunctionParameters().Process(p => p.Inject(parameter_host, request)); }
public void Compile(CmlContext context, CmlScriptRequest request, CmlScriptValue this_value) { il_statement = CompileILStatement(context, request, this_value); }