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());
        }
Example #2
0
        private ILanguageExpression CompileSymbolicExpressionCall(GMacParametricSymbolicExpression expr, OperandsByName operands)
        {
            var compiledOperands = OperandsByName.Create();

            foreach (var pair in operands.OperandsDictionary)
            {
                var compiledRhsExpr =
                    (ILanguageExpressionAtomic)CompileExpression(pair.Value);

                compiledOperands.AddOperand(pair.Key, compiledRhsExpr);
            }

            var compiledExpr = BasicPolyadic.Create(GMacRootAst.ScalarType, expr);

            compiledExpr.Operands = compiledOperands;

            return(compiledExpr);
        }