Example #1
0
        private void translate_Dependency_List(string expressionText, out MathematicaScalar scalar, out OperandsByName operands)
        {
            var finalScalarText = new StringBuilder(expressionText);

            operands = OperandsByName.Create();

            var varIdx = 1;

            var allMatches = GenUtils.ExtractDistinctInternalExpressions(expressionText);

            foreach (var rgexMatch in allMatches)
            {
                var rhsExprText = rgexMatch.Value.Substring(1, rgexMatch.Value.Length - 2);

                var rhsExpr =
                    BasicExpressionGenerator.Generate_PolyadicOperand(
                        GMacRootAst.ScalarType,
                        translate_LanguageExpression(rhsExprText)
                        );

                var lhsVarName = "var" + (varIdx++).ToString("0000");

                finalScalarText = finalScalarText.Replace(rgexMatch.Value, lhsVarName);

                operands.AddOperand(lhsVarName, rhsExpr);
            }

            scalar = MathematicaScalar.Create(Cas, finalScalarText.ToString());
        }
        public OperandsByName ReplaceLValueByExpression(OperandsByName oldOperands, SymbolLValue oldLvalue, ILanguageExpressionAtomic newExpr)
        {
            var newOperands = new Dictionary <string, ILanguageExpressionAtomic>();

            foreach (var pair in oldOperands.OperandsDictionary)
            {
                var newOpExpr = ReplaceLValueByExpression(pair.Value, oldLvalue, newExpr);

                newOperands.Add(pair.Key, newOpExpr);
            }

            oldOperands.OperandsDictionary.Clear();

            foreach (var pair in newOperands)
            {
                oldOperands.AddOperand(pair.Key, pair.Value);
            }

            return(oldOperands);
        }