uCalc API Version: 2.1.3-preview.2 Released: 6/16/2026
Warning
uCalc API Preview Release Notice:The documentation describes the intended behavior of the API. The current preview build contains incomplete features, unoptimized performance, and is subject to breaking changes.
Token Category Operators
Product:
Class:
Explains the operators used within pattern syntax to match tokens by their category (@) or to exclude tokens by category (!).
Remarks
🎯 Token Category Operators: The @ and ! Prefixes
[not implemented yet]
The @ and ! operators are powerful prefixes used inside pattern variable syntax ({...}) to match tokens based on their lexical category rather than their literal text. This is the core mechanism that makes uCalc's Transformer token-aware, giving it a structural understanding of text that traditional regular expressions lack.
The @ Operator: Matching by Category
The @ operator is the standard way to match a token based on its type. Instead of looking for a specific word like "if", you can look for any alphanumeric identifier using {@Alphanumeric}.
Syntax
{@Category}: Matches any token belonging toCategorybut does not capture its value.{@Category:varName}: Matches any token belonging toCategoryand captures its text into the variable{varName}.
This makes patterns both readable and robust. A pattern to find a number is simply {@Number}, which is far clearer than a complex regex like [-+]?[0-9]*\.?[0-9]+.
For a complete list of categories, see the Matching by token category topic.
The ! Operator: Negating a Category
The ! operator is the logical inverse of @. It matches any token that does not belong to the specified category. This is extremely useful for capturing 'everything else' or for defining boundaries in a pattern.
Syntax
{!Category}: Matches any token that is not inCategory.{!Category:varName}: Matches and captures any token that is not inCategory.
For example, the pattern {!Bracket:content} will capture any token as long as it isn't an opening or closing bracket. This is a simple and powerful way to capture the content between delimiters.
⚖️ Comparative Analysis
| Feature | uCalc Category Operators | Regular Expressions |
|---|---|---|
| Matching | Token-based. {@Alphanumeric} matches a whole word. | Character-based. \w+ matches a sequence of word characters. |
| Safety | High. {@Alphanumeric} will not match inside a string literal like "my_variable_name" by default. | Low. \w+ can easily and incorrectly match text inside strings or comments. |
| Readability | High. {@Number} is self-documenting. | Low. [-+]?\d*\.?\d+ is cryptic. |
| Negation | Simple. {!Whitespace} clearly means 'not whitespace'. | Complex. Requires negative lookarounds like (?!\s) which are less intuitive. |
Summary Table
| Operator | Name | Syntax | Purpose |
|---|---|---|---|
@ | Category Matcher | {@Category:var} | Matches a token that is a member of Category. |
! | Negation Operator | {!Category:var} | Matches any token that is not a member of Category. |