private ExpressionTarget InnerParseExpression( HlCompilation compilation, T expr, ExpressionTarget outputTarget) { if (NeedsOutput) { ExpressionTarget target = outputTarget; if (outputTarget.ResultAddress == null || !outputTarget.IsAddress) { target = new ExpressionTarget( SettingsManager.GetSettings <HlCompilerSettings>().OmitTempVarInit ? compilation.GetTempVar() : compilation.GetTempVar(0), true, compilation.TypeSystem.GetType( compilation.Root, HLBaseTypeNames.s_UintTypeName ) ); } return(ParseExpression(compilation, expr, target)); } if (AllImplementations && outputTarget.ResultAddress != null) { return(ParseExpression(compilation, expr, outputTarget)); } return(ParseExpression(compilation, expr)); }
ExpressionTarget IHlExpressionCompiler.Parse( HlCompilation compilation, HlExpression expr, ExpressionTarget outputTarget) { return(InnerParseExpression(compilation, ( T )expr, outputTarget)); }
public virtual ExpressionTarget ParseExpression( HlCompilation compilation, T expr, ExpressionTarget outputTarget) { throw new NotImplementedException(); }
public override ExpressionTarget ParseExpression( HlCompilation compilation, T expr, ExpressionTarget outputTarget) { if (m_Fallback != null && m_Fallback.ContainsDefinition(compilation, expr)) { return(m_Fallback.ParseExpression(compilation, expr)); } if (!m_OpCompilers.ContainsKey(expr.Type)) { EventManager <ErrorEvent> .SendEvent(new ExpressionCompilerNotFoundEvent( expr )); return(new ExpressionTarget()); } return((m_OpCompilers[expr.Type] as IHlExpressionCompiler).Parse(compilation, expr, outputTarget)); }