Exemple #1
0
        public override IEnumerable <SymbolLValue> GetLValues(ILanguageOperator langOperator)
        {
            var structureConstructor = langOperator as GMacStructureConstructor;

            if (structureConstructor != null)
            {
                var structureCons = structureConstructor;

                if (structureCons.HasDefaultValueSource)
                {
                    return(GetLValues(structureCons.DefaultValueSource));
                }
            }

            else
            {
                var multivectorConstructor = langOperator as GMacFrameMultivectorConstructor;

                if (multivectorConstructor == null)
                {
                    return(Enumerable.Empty <SymbolLValue>());
                }

                var mvTypeCons = multivectorConstructor;

                if (mvTypeCons.HasDefaultValueSource)
                {
                    return(GetLValues(mvTypeCons.DefaultValueSource));
                }
            }

            return(Enumerable.Empty <SymbolLValue>());
        }
Exemple #2
0
        public ILanguageExpressionBasic Generate_TypeCast(ILanguageType targetType, ILanguageOperator castOp, ILanguageExpression expr)
        {
            SetOperands(expr);

            VerifyOperation_TypeCast(targetType);

            return(BasicUnary.CreateTypeCast(targetType, castOp, _atomicOperand1));
        }
Exemple #3
0
        public override ILanguageOperator ReplaceLValueByExpression(ILanguageOperator oldLangOperator, SymbolLValue oldLvalue, ILanguageExpressionAtomic newExpr)
        {
            var structureConstructor = oldLangOperator as GMacStructureConstructor;

            if (structureConstructor != null)
            {
                var structureCons = structureConstructor;

                if (structureCons.HasDefaultValueSource)
                {
                    structureCons.SetDefaultValueSource(
                        ReplaceLValueByExpression(structureCons.DefaultValueSource, oldLvalue, newExpr)
                        );
                }

                return(oldLangOperator);
            }

            var multivectorConstructor = oldLangOperator as GMacFrameMultivectorConstructor;

            if (multivectorConstructor == null)
            {
                return(oldLangOperator);
            }

            var mvTypeCons = multivectorConstructor;

            if (mvTypeCons.HasDefaultValueSource)
            {
                mvTypeCons.SetDefaultValueSource(
                    ReplaceLValueByExpression(mvTypeCons.DefaultValueSource, oldLvalue, newExpr)
                    );
            }

            return(oldLangOperator);
        }
 /// <summary>
 /// Extract a list of all l-values from the given language operator
 /// </summary>
 /// <param name="langOperator"></param>
 /// <returns></returns>
 public abstract IEnumerable <SymbolLValue> GetLValues(ILanguageOperator langOperator);
 /// <summary>
 /// Replace the occurances of the given l-value inside the given language operator with the given atomic expression
 /// </summary>
 /// <param name="oldLangOperator"></param>
 /// <param name="oldLvalue"></param>
 /// <param name="newExpr"></param>
 /// <returns></returns>
 public abstract ILanguageOperator ReplaceLValueByExpression(ILanguageOperator oldLangOperator, SymbolLValue oldLvalue, ILanguageExpressionAtomic newExpr);
Exemple #6
0
 public static BasicBinary Create(ILanguageType exprType, ILanguageOperator langOp, ILanguageExpressionAtomic operand1, ILanguageExpressionAtomic operand2)
 {
     return(new BasicBinary(exprType, langOp, operand1, operand2));
 }
Exemple #7
0
 private BasicBinary(ILanguageType exprType, ILanguageOperator langOp, ILanguageExpressionAtomic operand1, ILanguageExpressionAtomic operand2)
     : base(exprType, langOp)
 {
     Operand1 = operand1;
     Operand2 = operand2;
 }
Exemple #8
0
 public static BasicPolyadic Create(ILanguageType exprType, ILanguageOperator langOp, PolyadicOperands operands)
 {
     return(new BasicPolyadic(exprType, langOp, operands));
 }
Exemple #9
0
 private BasicPolyadic(ILanguageType exprType, ILanguageOperator langOp, PolyadicOperands operands)
     : base(exprType, langOp)
 {
     _operands = operands;
 }
Exemple #10
0
 private BasicPolyadic(ILanguageType exprType, ILanguageOperator langOp)
     : base(exprType, langOp)
 {
 }
Exemple #11
0
 public static BasicUnary CreateTypeCast(ILanguageType exprType, ILanguageOperator langOp, ILanguageExpressionAtomic operand)
 {
     return(new BasicUnary(exprType, langOp, operand));
 }
Exemple #12
0
        public static BasicUnary CreatePrimitive(ILanguageType exprType, string opName, ILanguageExpressionAtomic operand)
        {
            ILanguageOperator langOp = exprType.RootAst.OperatorPrimitiveDictionary[opName];

            return(new BasicUnary(exprType, langOp, operand));
        }
Exemple #13
0
 private BasicUnary(ILanguageType exprType, ILanguageOperator langOp, ILanguageExpressionAtomic operand)
     : base(exprType, langOp)
 {
     Operand = operand;
 }
        protected LanguageExpressionBasic(ILanguageType exprType, ILanguageOperator langOperator)
        {
            ExpressionType = exprType;

            Operator = langOperator;
        }