Recursive Nesting: Alternation -> Optional -> Alternation.
ID: 244
See: Nested Patterns
using uCalcSoftware;
var uc = new uCalc();
var t = uc.NewTransformer();
// Structure:
// 1. Alternation: "Open" OR "Save"
// 2. Inside "Open": Optional "Recent"
// 3. Inside "Recent": Alternation "File" OR "Project"
var pattern = "Menu { Open [ Recent {type: File | Project } ] | Save }";
t.FromTo(pattern, "Action Detected");
Console.WriteLine(t.Transform("Menu Save")); // Match (Simple Alternation)
Console.WriteLine(t.Transform("Menu Open")); // Match (Optional omitted)
Console.WriteLine(t.Transform("Menu Open Recent File")); // Match (Deep nesting)
Console.WriteLine(t.Transform("Menu Open Recent Project")); // Match (Deep nesting alt)
Action Detected
Action Detected
Action Detected
Action Detected using uCalcSoftware; var uc = new uCalc(); var t = uc.NewTransformer(); // Structure: // 1. Alternation: "Open" OR "Save" // 2. Inside "Open": Optional "Recent" // 3. Inside "Recent": Alternation "File" OR "Project" var pattern = "Menu { Open [ Recent {type: File | Project } ] | Save }"; t.FromTo(pattern, "Action Detected"); Console.WriteLine(t.Transform("Menu Save")); // Match (Simple Alternation) Console.WriteLine(t.Transform("Menu Open")); // Match (Optional omitted) Console.WriteLine(t.Transform("Menu Open Recent File")); // Match (Deep nesting) Console.WriteLine(t.Transform("Menu Open Recent Project")); // Match (Deep nesting alt)
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto t = uc.NewTransformer();
// Structure:
// 1. Alternation: "Open" OR "Save"
// 2. Inside "Open": Optional "Recent"
// 3. Inside "Recent": Alternation "File" OR "Project"
auto pattern = "Menu { Open [ Recent {type: File | Project } ] | Save }";
t.FromTo(pattern, "Action Detected");
cout << t.Transform("Menu Save") << endl; // Match (Simple Alternation)
cout << t.Transform("Menu Open") << endl; // Match (Optional omitted)
cout << t.Transform("Menu Open Recent File") << endl; // Match (Deep nesting)
cout << t.Transform("Menu Open Recent Project") << endl; // Match (Deep nesting alt)
}
Action Detected
Action Detected
Action Detected
Action Detected #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; auto t = uc.NewTransformer(); // Structure: // 1. Alternation: "Open" OR "Save" // 2. Inside "Open": Optional "Recent" // 3. Inside "Recent": Alternation "File" OR "Project" auto pattern = "Menu { Open [ Recent {type: File | Project } ] | Save }"; t.FromTo(pattern, "Action Detected"); cout << t.Transform("Menu Save") << endl; // Match (Simple Alternation) cout << t.Transform("Menu Open") << endl; // Match (Optional omitted) cout << t.Transform("Menu Open Recent File") << endl; // Match (Deep nesting) cout << t.Transform("Menu Open Recent Project") << endl; // Match (Deep nesting alt) }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t = uc.NewTransformer()
'// Structure:
'// 1. Alternation: "Open" OR "Save"
'// 2. Inside "Open": Optional "Recent"
'// 3. Inside "Recent": Alternation "File" OR "Project"
Dim pattern = "Menu { Open [ Recent {type: File | Project } ] | Save }"
t.FromTo(pattern, "Action Detected")
Console.WriteLine(t.Transform("Menu Save")) '// Match (Simple Alternation)
Console.WriteLine(t.Transform("Menu Open")) '// Match (Optional omitted)
Console.WriteLine(t.Transform("Menu Open Recent File")) '// Match (Deep nesting)
Console.WriteLine(t.Transform("Menu Open Recent Project")) '// Match (Deep nesting alt)
End Sub
End Module
Action Detected
Action Detected
Action Detected
Action Detected Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim t = uc.NewTransformer() '// Structure: '// 1. Alternation: "Open" OR "Save" '// 2. Inside "Open": Optional "Recent" '// 3. Inside "Recent": Alternation "File" OR "Project" Dim pattern = "Menu { Open [ Recent {type: File | Project } ] | Save }" t.FromTo(pattern, "Action Detected") Console.WriteLine(t.Transform("Menu Save")) '// Match (Simple Alternation) Console.WriteLine(t.Transform("Menu Open")) '// Match (Optional omitted) Console.WriteLine(t.Transform("Menu Open Recent File")) '// Match (Deep nesting) Console.WriteLine(t.Transform("Menu Open Recent Project")) '// Match (Deep nesting alt) End Sub End Module