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()); }
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); }