deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.

This commit is contained in:
2026-08-27 14:51:37 +08:00
parent 1fc510af5e
commit 2a98ae7556
1468 changed files with 182837 additions and 18888 deletions
@@ -91,6 +91,78 @@
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCall.html">HeidenhainCall</a></dt>
<dd><p>Block-root record left on a <code>CALL LBL</code>/<code>CALL PGM</code> host block
by <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainSubProgramCallSyntax.html">HeidenhainSubProgramCallSyntax</a>.
Inlined callee blocks are stamped with a clone of the same record.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCall.html">HeidenhainCyclCall</a></dt>
<dd><p>Block-root record left on a cycle-call host block by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html">HeidenhainCannedCycleSyntax</a>,
making the consumed call visible in cache dumps and carrying the
deferred <code>M140</code> retract hand-off for
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCycleRetractSyntax.html">HeidenhainCycleRetractSyntax</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html">HeidenhainGoto</a></dt>
<dd><p>Heidenhain FN 9–12 conditional jump record
(<code>FN 12: IF +Q1 LT +5 GOTO LBL n</code>). Two lifetimes share the shape:</p>
<ul><li><code>Parsing.HeidenhainGoto</code> — written by
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainGotoParsingSyntax.html">HeidenhainGotoParsingSyntax</a> for
all four opcodes, in both the spaced standard spelling and the
compressed post spelling (<code>FN12:IF+Q94 LT+1GOTOLBL"NAME"</code>).</li><li>block-root <code>HeidenhainGoto</code> — stamped by
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainGotoSyntax.html">HeidenhainGotoSyntax</a> after
the control-flow decision, with <a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html#Hi_NcParsers_Keywords_Heidenhain_HeidenhainGoto_Fired">Fired</a> flipped true on a
successful redirect.</li></ul>
<p>
Unlike the Fanuc / Siemens jump records the condition is not one
expression string: the klartext jump grammar is strictly
<code>&lt;value&gt; &lt;comparator&gt; &lt;value&gt;</code>, and the
Heidenhain expression grammar deliberately has no comparison layer
(its bare-word rejection is what keeps the evaluator's Parsing-tree
pass off non-expression strings). The parsing owner therefore
pre-normalises the statement: <a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html#Hi_NcParsers_Keywords_Heidenhain_HeidenhainGoto_Lhs">Lhs</a>/<a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html#Hi_NcParsers_Keywords_Heidenhain_HeidenhainGoto_Rhs">Rhs</a> are
captured as separate value operands (pure literals typed numeric at
capture, Q references kept as strings for the evaluator's pass-2
substitution) and the comparator spelling is normalised to the shared
comparison words (<code>EQU</code>→<code>EQ</code>; <code>NE</code>/<code>GT</code>/<code>LT</code>
as written). The comparison itself happens in the evaluation syntax.
</p>
<p>
Klartext has no unconditional jump statement and no direction
mnemonic — a TNC label is unique per program, so the consumer scans
the whole host file and takes the first matching definition
(<code>LBL n</code> / <code>LBL "name"</code>), forward or backward alike.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.HeidenhainLbl.html">HeidenhainLbl</a></dt>
<dd><p>Block-root record left on a consumed <code>LBL</code> marker block by
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainSubProgramReturnSyntax.html">HeidenhainSubProgramReturnSyntax</a>.
A plain definition marker produces no motion; the record keeps the
label visible for cache dumps (and the P5 jump family).</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.MachiningCycleDef.html">MachiningCycleDef</a></dt>
<dd><p>Block-root section carrying the stored Heidenhain machining-cycle
definition (the <code>CYCL DEF 2xx</code> &ldquo;setup half&rdquo;). Written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html">HeidenhainCannedCycleSyntax</a> on
every block (self-carrying modal state, the P1 datum-shift pattern) —
a klartext definition never executes by itself; execution is gated on
<code>CYCL CALL</code>/<code>M99</code> (call-once) or <code>M89</code> (modal call on
positioning blocks), which convert this store into a direct ISO cycle
sub-section under <code>Parsing</code>.</p>
</dd>
</dl>
<h3 id="interfaces">
Interfaces
</h3>