Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 ExpressionTarget IHlExpressionCompiler.Parse(
     HlCompilation compilation,
     HlExpression expr,
     ExpressionTarget outputTarget)
 {
     return(InnerParseExpression(compilation, ( T )expr, outputTarget));
 }
Exemplo n.º 3
0
 public virtual ExpressionTarget ParseExpression(
     HlCompilation compilation,
     T expr,
     ExpressionTarget outputTarget)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 4
0
        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));
        }