deploy fixed MRR drift and webservice CylindroidHolder buckle branch update issue.
This commit is contained in:
@@ -94,6 +94,44 @@
|
||||
<h3 id="classes">
|
||||
Classes
|
||||
</h3>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucConditionReader.html">FanucConditionReader</a></dt>
|
||||
<dd><p>Shared polymorphic reader for Fanuc Custom Macro B conditional gate
|
||||
expressions (<code>IF [...] GOTO</code>, <code>IF [...] THEN</code>,
|
||||
<code>WHILE [...] DO m</code>). The condition node is read post-evaluation —
|
||||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html">VariableEvaluatorSyntax</a>'s pass-2 tree walk has already
|
||||
substituted the original expression string with a numeric
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonvalue">JsonValue</a> when evaluation succeeded; this helper maps
|
||||
that node to a tri-state truthy outcome plus a display form for
|
||||
diagnostics.</p>
|
||||
<p>
|
||||
Three states, mapping directly to the
|
||||
<code>ConditionEvaluated: true | false | null</code> stamp shape used by
|
||||
all three consumers (see <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html">FanucGotoSyntax</a>,
|
||||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html">FanucIfThenSyntax</a>, and the WHILE-loop syntax):
|
||||
</p>
|
||||
<ul><li><b>Truthy = true</b> — node is a finite non-zero numeric;
|
||||
gate fires.</li><li><b>Truthy = false</b> — node is a finite numeric equal to
|
||||
zero; gate falls through silently.</li><li><b>Truthy = null</b> — node is null, still a string
|
||||
(evaluator failed), or non-finite double (NaN / ±∞); gate falls
|
||||
through and the caller emits its own
|
||||
<code><Syntax>--ConditionNotEvaluated</code> warning.</li></ul>
|
||||
<p>
|
||||
The <code>Display</code> form is the human-readable expression text for
|
||||
diagnostic messages. For resolved numerics it is the value formatted
|
||||
via <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo.invariantculture">InvariantCulture</a>; for unresolved
|
||||
strings it is the original expression text. Diagnostics build their
|
||||
own message text — the helper just provides the source string so the
|
||||
caller can compose <code>"IF [<Display>] GOTO ..."</code> etc.
|
||||
</p>
|
||||
<p>
|
||||
Callers typically <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonnode.deepclone">DeepClone()</a> the original node
|
||||
before passing in here, then again before stamping back, so removing
|
||||
the parsing section and writing the host-level stamp can happen in
|
||||
any order without dangling references.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html">FanucGotoSyntax</a></dt>
|
||||
<dd><p>Resolves Fanuc Custom Macro B GOTO control flow.
|
||||
@@ -111,10 +149,11 @@ Both unconditional <code>GOTO <n></code> and conditional
|
||||
form leans on <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html">VariableEvaluatorSyntax</a>'s pass-2 tree walk
|
||||
to substitute <code>Parsing.FanucGoto.Condition</code> with a numeric
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonvalue">JsonValue</a> when the expression
|
||||
evaluates successfully — <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonnode">ReadCondition(JsonNode)</a> then reads the
|
||||
node polymorphically. Truthy non-zero fires the redirect; zero falls
|
||||
through silently; a still-string (unresolved) Condition emits
|
||||
<code>FanucGoto--ConditionNotEvaluated</code> and falls through.
|
||||
evaluates successfully — <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucConditionReader.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucConditionReader_ReadCondition_System_Text_Json_Nodes_JsonNode_">ReadCondition(JsonNode)</a>
|
||||
then reads the node polymorphically. Truthy non-zero fires the
|
||||
redirect; zero falls through silently; a still-string (unresolved)
|
||||
Condition emits <code>FanucGoto--ConditionNotEvaluated</code> and falls
|
||||
through.
|
||||
</p>
|
||||
<p>
|
||||
Pipeline placement: tail of the Fanuc / Mazak / Syntec Evaluation
|
||||
@@ -171,7 +210,7 @@ the lifted entries reach the readers as if they had been written by
|
||||
</p>
|
||||
<p>
|
||||
Three condition outcomes mirror the
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonnode">ReadCondition(JsonNode)</a> shape:
|
||||
<code>FanucGotoSyntax.ReadCondition</code> shape:
|
||||
<ul><li>Truthy non-zero → lift assignments, stamp Applied=true.</li><li>Truthy zero → fall through silently, Applied=false.</li><li>Truthy null (evaluator failed, condition still a string or
|
||||
non-finite) → warn <code>FanucIfThen--ConditionNotEvaluated</code>, do not
|
||||
lift, Applied=false.</li></ul>
|
||||
@@ -356,6 +395,58 @@ Fanuc-family only — Siemens uses named system variables
|
||||
(<code>$AC_TIME</code>, <code>$A_DAY</code>, …) and Heidenhain uses
|
||||
<code>FN18: SYSREAD</code>; neither flows through <code>Parsing.Assignments.#nnn</code>.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucWhileDoSyntax.html">FanucWhileDoSyntax</a></dt>
|
||||
<dd><p>Resolves Fanuc Custom Macro B <code>WHILE [..] DO m ... END m</code>
|
||||
bounded loops. Two phrases dispatched by
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.FanucWhileDo.html#Hi_NcParsers_Keywords_FanucWhileDo_Term">Term</a>:</p>
|
||||
<ul><li><code>WHILE [..] DO m</code> — entry: reads the resolved condition
|
||||
via <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucConditionReader.html">FanucConditionReader</a>, manages the per-LoopId
|
||||
frame in the top-level <code>WhileFrames</code> dict, and either falls
|
||||
through (truthy) or forward-jumps past the matching END m
|
||||
(falsy / unresolved).</li><li><code>END m</code> — terminator: unconditionally reverse-jumps to
|
||||
the WHILE block recorded in <code>WhileFrames[LoopId].BeginLineNo</code>
|
||||
so the next iteration re-evaluates the entry condition. Increments
|
||||
the per-loop iteration counter on
|
||||
<a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucWhileDoIterationDependency.html">FanucWhileDoIterationDependency</a>; suppresses the
|
||||
redirect above <a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucWhileDoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucWhileDoIterationDependency_MaxIterationsPerLoopId">MaxIterationsPerLoopId</a>.</li></ul>
|
||||
<p>
|
||||
<b>WhileFrames carrier.</b> The top-level <code>WhileFrames</code> JSON
|
||||
section is a <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a> keyed by LoopId-as-string
|
||||
whose values are <code>{ BeginLineNo: int }</code>. Frames are pushed when
|
||||
a WHILE block first encounters a truthy condition with no existing
|
||||
frame for that LoopId; popped when the condition becomes falsy or
|
||||
unresolved; otherwise carried forward unchanged by
|
||||
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>'s
|
||||
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Logic">Logic</a> tracked-key
|
||||
list. Nested loops with distinct LoopIds coexist in the same dict;
|
||||
same-LoopId nesting (spec-undefined) overwrites and is not given
|
||||
special handling.
|
||||
</p>
|
||||
<p>
|
||||
<b>Pipeline placement.</b> Evaluation bundle, after the variable
|
||||
readers (defensive — WHILE/END blocks per spec do not carry
|
||||
assignments, but the placement is consistent with GOTO). Must run
|
||||
after <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html">VariableEvaluatorSyntax</a> so the condition string
|
||||
has been substituted to numeric.
|
||||
</p>
|
||||
<p>
|
||||
<b>Forward scan to matching END m</b> uses the
|
||||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html">LabelScanUtil</a> predicate overload — probe runs the
|
||||
brand-default <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucWhileDoParsingSyntax.html">FanucWhileDoParsingSyntax</a> on each
|
||||
candidate, predicate matches on
|
||||
<code>Parsing.FanucWhileDo.Term == "END" && LoopId == target</code>.
|
||||
</p>
|
||||
<p>
|
||||
<b>Reverse scan to WHILE BeginLineNo</b> does not need a label
|
||||
predicate — the BeginLineNo is a known file-line index recorded in
|
||||
the active frame, so the END side re-segments the file from the top
|
||||
and returns the slice starting at the first piece whose
|
||||
<a class="xref" href="Hi.NcParsers.Sentence.html#Hi_NcParsers_Sentence_CharIndexSegment">CharIndexSegment</a>.<code>Begin.LineIndex</code>
|
||||
matches.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<h3 id="enums">
|
||||
|
||||
Reference in New Issue
Block a user