uCalc API Version: 5.7.0-preview.1 Released: 7/30/2026
Warning
uCalc API Preview Release Notice:This preview documentation describes the intended behavior of the API. It is not fully accurate or complete.The current preview build contains incomplete features, unoptimized performance, and is subject to breaking changes.Use of the preview version in your production code is not recommended.
Product:
Class:
Retrieves a singleton transformer that pre-processes pattern definition strings before they are compiled into rules.
The TransformerForRulePatterns() method retrieves a special, singleton Transformer instance that pre-processes the pattern part of a rule before it is compiled. This "meta-transformer" allows you to create aliases, macros, or syntactic sugar for your pattern definitions, effectively enabling you to build a custom, higher-level pattern language.
When you define a rule using methods like FromTo() or Pattern(), the pattern string goes through this pipeline:
TransformerForRulePatterns instance.This process is transparent. By default, this transformer has no rules and does nothing. It is lazily instantiated only when this method is called for the first time, ensuring no performance overhead for users who don't need it.
{@StringSQ} repeatedly, you can define a rule to transform a simple alias like @sqs into the full token name.IPV4_ADDRESS could be expanded into {@Number}.{@Number}.{@Number}.{@Number}.| Method | TransformerForRulePatterns() | ExpressionTransformer() | NewTransformer() |
|---|---|---|---|
| Purpose | Transforms pattern definition strings before they become rules. | Transforms user expressions before they are parsed (e.g., EvalStr). | A general-purpose tool for transforming any user data string. |
| Scope | Affects how FromTo() and Pattern() rules are created. | Affects the uCalc expression parser. | Standalone; does not affect any internal process. |
Using this meta-transformer is similar to using C/C++ preprocessor macros (#define) to create aliases for complex code, but with the full, token-aware power of a uCalc Transformer.
ID: 187
using uCalcSoftware;
var uc = new uCalc();
var t = uc.NewTransformer();
var Pattern = uc.TransformerForRulePatterns;
var Replacement = uc.TransformerForRuleReplacements;
Pattern.FromTo("@sq", "{@Eval: '{@Token(_Token_String_SingleQuoted)}'}");
Replacement.FromTo("~", "{@Eval: '{@Self}'}");
t.FromTo("@sq", "");
// Same as t.FromTo("{@Token(_Token_QuoteChar_Single)}", "");
Console.WriteLine(t.Transform("Test: 'some text'."));
Test: <single quote txt = 'some text'>. using uCalcSoftware; var uc = new uCalc(); var t = uc.NewTransformer(); var Pattern = uc.TransformerForRulePatterns; var Replacement = uc.TransformerForRuleReplacements; Pattern.FromTo("@sq", "{@Eval: '{@Token(_Token_String_SingleQuoted)}'}"); Replacement.FromTo("~", "{@Eval: '{@Self}'}"); t.FromTo("@sq", "<single quote txt = ~>"); // Same as t.FromTo("{@Token(_Token_QuoteChar_Single)}", "<single quote txt = {@Self}>"); Console.WriteLine(t.Transform("Test: 'some text'."));
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto t = uc.NewTransformer();
auto Pattern = uc.TransformerForRulePatterns();
auto Replacement = uc.TransformerForRuleReplacements();
Pattern.FromTo("@sq", "{@Eval: '{@Token(_Token_String_SingleQuoted)}'}");
Replacement.FromTo("~", "{@Eval: '{@Self}'}");
t.FromTo("@sq", "");
// Same as t.FromTo("{@Token(_Token_QuoteChar_Single)}", "");
cout << t.Transform("Test: 'some text'.") << endl;
}
Test: <single quote txt = 'some text'>. #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; auto t = uc.NewTransformer(); auto Pattern = uc.TransformerForRulePatterns(); auto Replacement = uc.TransformerForRuleReplacements(); Pattern.FromTo("@sq", "{@Eval: '{@Token(_Token_String_SingleQuoted)}'}"); Replacement.FromTo("~", "{@Eval: '{@Self}'}"); t.FromTo("@sq", "<single quote txt = ~>"); // Same as t.FromTo("{@Token(_Token_QuoteChar_Single)}", "<single quote txt = {@Self}>"); cout << t.Transform("Test: 'some text'.") << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t = uc.NewTransformer()
Dim Pattern = uc.TransformerForRulePatterns
Dim Replacement = uc.TransformerForRuleReplacements
Pattern.FromTo("@sq", "{@Eval: '{@Token(_Token_String_SingleQuoted)}'}")
Replacement.FromTo("~", "{@Eval: '{@Self}'}")
t.FromTo("@sq", "")
'// Same as t.FromTo("{@Token(_Token_QuoteChar_Single)}", "");
Console.WriteLine(t.Transform("Test: 'some text'."))
End Sub
End Module
Test: <single quote txt = 'some text'>. Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim t = uc.NewTransformer() Dim Pattern = uc.TransformerForRulePatterns Dim Replacement = uc.TransformerForRuleReplacements Pattern.FromTo("@sq", "{@Eval: '{@Token(_Token_String_SingleQuoted)}'}") Replacement.FromTo("~", "{@Eval: '{@Self}'}") t.FromTo("@sq", "<single quote txt = ~>") '// Same as t.FromTo("{@Token(_Token_QuoteChar_Single)}", "<single quote txt = {@Self}>"); Console.WriteLine(t.Transform("Test: 'some text'.")) End Sub End Module