deploy fixed MRR drift and webservice CylindroidHolder buckle branch update issue.
This commit is contained in:
+52
-1
@@ -6,7 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Class VariableEvaluatorSyntax | HiAPI-C# 2025 ">
|
||||
|
||||
<meta name="description" content="Pure expression normalizer for Custom Macro B syntax. Walks the parser-stage residue on a single block and inlines numeric values wherever a Fanuc-style variable reference or bracket expression appears — but does not write to any specific store. Routing &ldquo;where the resolved literal lands&rdquo; stays in the brand-specific reader syntaxes (, 's reader, , …) which run after this syntax on the same block. Two passes per block: Assignments normalize — Parsing.Assignments.#nnn entries whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]") are evaluated via the and the RHS string is replaced with the resolved literal (round-trip-safe "R"-format). The entry stays in Parsing.Assignments so downstream reader syntaxes consume it as a pure-literal assignment. Iteration follows source order (Parsing.Assignments insertion order). Parsing tree substitution — every string-typed value reachable from Parsing.&lt;tag&gt; (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric . Failures silently leave the original string and rely on downstream at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read. Lookup chain (first non-null wins, configured per brand preset via + instances on NcDependencyList): Current block's own resolved assignments — built-in to ; covers same-block forward references in source order (an earlier #nnn=literal is visible to a later RHS that mentions #nnn).Each in , in list order. Typical contents for a Fanuc-family preset: (#1-#33), (#100-#499), (#5001-#5043).Each on the runner's NcDependencyList, in registration order (, , ). Each lookup self-gates its id range; the evaluator stays brand- and range-agnostic. Adding a new variable surface is additive: register an on a dependency or push an onto the per-preset list. Same-block forward reference — when an Assignment RHS references a #nnn that is also being assigned later in the same block (i.e. listed in Parsing.Assignments after the RHS being evaluated), the cannot pick up the not-yet-resolved value and falls back to traceback / dependency-table reads — effectively the pre-block value. A VariableEvaluator--SameBlockForwardReference warning is emitted per such RHS so the user is told the source-order semantics were not honoured. Practical impact is near-zero for typical CAM-emitted NC (one assignment per line).">
|
||||
<meta name="description" content="Pure expression normalizer for Custom Macro B syntax. Walks the parser-stage residue on a single block and inlines numeric values wherever a Fanuc-style variable reference or bracket expression appears — but does not write to any specific store. Routing &ldquo;where the resolved literal lands&rdquo; stays in the brand-specific reader syntaxes (, 's reader, , …) which run after this syntax on the same block. Two passes per block: Assignments normalize — Parsing.Assignments.#nnn entries whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]") are evaluated via the and the RHS string is replaced with the resolved literal (round-trip-safe "R"-format). The entry stays in Parsing.Assignments so downstream reader syntaxes consume it as a pure-literal assignment. Iteration follows source order (Parsing.Assignments insertion order). Parsing tree substitution — every string-typed value reachable from Parsing.&lt;tag&gt; (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric . Failures silently leave the original string and rely on downstream at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read. Lookup chain (first non-null wins, configured per brand preset via + instances on NcDependencyList): Current block's own resolved assignments — built-in to ; covers same-block forward references in source order (an earlier #nnn=literal is visible to a later RHS that mentions #nnn).Each in , in list order. Typical contents for a Fanuc-family preset: (#1-#33), (#100-#499), (#5001-#5043).Each on the runner's NcDependencyList, in registration order (, , ). Each lookup self-gates its id range; the evaluator stays brand- and range-agnostic. Adding a new variable surface is additive: register an on a dependency or push an onto the per-preset list. Same-block forward reference — when an Assignment RHS references a #nnn that is also being assigned later in the same block (i.e. listed in Parsing.Assignments after the RHS being evaluated), the cannot pick up the not-yet-resolved value and falls back to traceback / dependency-table reads — effectively the pre-block value. A VariableEvaluator--SameBlockForwardReference warning is emitted per such RHS so the user is told the source-order semantics were not honoured. Practical impact is near-zero for typical CAM-emitted NC (one assignment per line). Formula mirror tree — when either pass actually performs a non-trivial expression evaluation (i.e. the RHS / tag value was not already a pure literal and the evaluator returned a finite value), the original expression string is mirrored to a parallel Formula.&lt;same path&gt; entry at the root of the block JSON. The Parsing.* subtree carries the resolved value (R-format string for Assignments; numeric for tags); the Formula.* subtree preserves the source-text expression for diagnostics, round-trip reconstruction, and downstream inspection. Pure-literal RHS / tag values produce no Formula entry — the Parsing value is already the original text. Evaluation failures (parse error, vacant variable, non-finite result) also produce no Formula entry — the original string is still in Parsing.* untouched, no preservation needed.">
|
||||
<link rel="icon" href="../img/HiAPI.favicon.ico">
|
||||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../public/main.css">
|
||||
@@ -163,6 +163,22 @@ emitted per such RHS so the user is told the source-order semantics
|
||||
were not honoured. Practical impact is near-zero for typical
|
||||
CAM-emitted NC (one assignment per line).
|
||||
</p>
|
||||
<p>
|
||||
<b>Formula mirror tree</b> — when either pass actually performs a
|
||||
non-trivial expression evaluation (i.e. the RHS / tag value was not
|
||||
already a pure literal and the evaluator returned a finite value),
|
||||
the original expression string is mirrored to a parallel
|
||||
<code>Formula.<same path></code> entry at the root of the block JSON.
|
||||
The <code>Parsing.*</code> subtree carries the resolved value (R-format
|
||||
string for Assignments; numeric <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonvalue">JsonValue</a> for tags);
|
||||
the <code>Formula.*</code> subtree preserves the source-text expression
|
||||
for diagnostics, round-trip reconstruction, and downstream
|
||||
inspection. Pure-literal RHS / tag values produce no Formula entry —
|
||||
the Parsing value is already the original text. Evaluation failures
|
||||
(parse error, vacant variable, non-finite result) also produce no
|
||||
Formula entry — the original string is still in <code>Parsing.*</code>
|
||||
untouched, no preservation needed.
|
||||
</p>
|
||||
</div>
|
||||
<div class="markdown conceptual"></div>
|
||||
|
||||
@@ -310,6 +326,41 @@ CAM-emitted NC (one assignment per line).
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="fields">Fields
|
||||
</h2>
|
||||
|
||||
|
||||
|
||||
<h3 id="Hi_NcParsers_EvaluationSyntaxs_VariableEvaluatorSyntax_FormulaKey" data-uid="Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.FormulaKey">
|
||||
FormulaKey
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Top-level key under which the Formula mirror tree is written.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public const string FormulaKey = "Formula"</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Field Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="properties">Properties
|
||||
</h2>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user