Practical: Traces the recursive expansion of a custom `MySum` function, showing how it is broken down into a standard arithmetic expression.
ID: 1139
See: TraceTransform
using uCalcSoftware;
var uc = new uCalc();
var t = uc.ExpressionTransformer;
// Assume these rules are pre-defined to create a recursive sum
t.FromTo("MySum({x})", "{x}");
t.FromTo("MySum({x}, {y})", "({x} + MySum({y}))").RewindOnChange = true;
uCalc.String trace = t.TraceTransform("MySum(1,2,3,4)");
trace.ListSeparator("\n");
Console.WriteLine(trace);
MySum(1,2,3,4)
(1 + MySum(2,3,4))
(1 + (2 + MySum(3,4)))
(1 + (2 + (3 + MySum(4))))
(1 + (2 + (3 + 4))) using uCalcSoftware; var uc = new uCalc(); var t = uc.ExpressionTransformer; // Assume these rules are pre-defined to create a recursive sum t.FromTo("MySum({x})", "{x}"); t.FromTo("MySum({x}, {y})", "({x} + MySum({y}))").RewindOnChange = true; uCalc.String trace = t.TraceTransform("MySum(1,2,3,4)"); trace.ListSeparator("\n"); Console.WriteLine(trace);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto t = uc.ExpressionTransformer();
// Assume these rules are pre-defined to create a recursive sum
t.FromTo("MySum({x})", "{x}");
t.FromTo("MySum({x}, {y})", "({x} + MySum({y}))").RewindOnChange(true);
uCalc::String trace = t.TraceTransform("MySum(1,2,3,4)");
trace.ListSeparator("\n");
cout << trace << endl;
}
MySum(1,2,3,4)
(1 + MySum(2,3,4))
(1 + (2 + MySum(3,4)))
(1 + (2 + (3 + MySum(4))))
(1 + (2 + (3 + 4))) #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; auto t = uc.ExpressionTransformer(); // Assume these rules are pre-defined to create a recursive sum t.FromTo("MySum({x})", "{x}"); t.FromTo("MySum({x}, {y})", "({x} + MySum({y}))").RewindOnChange(true); uCalc::String trace = t.TraceTransform("MySum(1,2,3,4)"); trace.ListSeparator("\n"); cout << trace << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t = uc.ExpressionTransformer
'// Assume these rules are pre-defined to create a recursive sum
t.FromTo("MySum({x})", "{x}")
t.FromTo("MySum({x}, {y})", "({x} + MySum({y}))").RewindOnChange = true
Dim trace As uCalc.String = t.TraceTransform("MySum(1,2,3,4)")
trace.ListSeparator(vbCrLf)
Console.WriteLine(trace)
End Sub
End Module
MySum(1,2,3,4)
(1 + MySum(2,3,4))
(1 + (2 + MySum(3,4)))
(1 + (2 + (3 + MySum(4))))
(1 + (2 + (3 + 4))) Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim t = uc.ExpressionTransformer '// Assume these rules are pre-defined to create a recursive sum t.FromTo("MySum({x})", "{x}") t.FromTo("MySum({x}, {y})", "({x} + MySum({y}))").RewindOnChange = true Dim trace As uCalc.String = t.TraceTransform("MySum(1,2,3,4)") trace.ListSeparator(vbCrLf) Console.WriteLine(trace) End Sub End Module