Table of Contents

Namespace Hi.NcParsers.Keywords.Heidenhain

Classes

HeidenhainCall

Block-root record left on a CALL LBL/CALL PGM host block by HeidenhainSubProgramCallSyntax. Inlined callee blocks are stamped with a clone of the same record.

HeidenhainCyclCall

Block-root record left on a cycle-call host block by HeidenhainCannedCycleSyntax, making the consumed call visible in cache dumps and carrying the deferred M140 retract hand-off for HeidenhainCycleRetractSyntax.

HeidenhainGoto

Heidenhain FN 9–12 conditional jump record (FN 12: IF +Q1 LT +5 GOTO LBL n). Two lifetimes share the shape:

  • Parsing.HeidenhainGoto — written by HeidenhainGotoParsingSyntax for all four opcodes, in both the spaced standard spelling and the compressed post spelling (FN12:IF+Q94 LT+1GOTOLBL"NAME").
  • block-root HeidenhainGoto — stamped by HeidenhainGotoSyntax after the control-flow decision, with Fired flipped true on a successful redirect.

Unlike the Fanuc / Siemens jump records the condition is not one expression string: the klartext jump grammar is strictly <value> <comparator> <value>, 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: Lhs/Rhs 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 (EQUEQ; NE/GT/LT as written). The comparison itself happens in the evaluation syntax.

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 (LBL n / LBL "name"), forward or backward alike.

HeidenhainLbl

Block-root record left on a consumed LBL marker block by HeidenhainSubProgramReturnSyntax. A plain definition marker produces no motion; the record keeps the label visible for cache dumps (and the P5 jump family).

MachiningCycleDef

Block-root section carrying the stored Heidenhain machining-cycle definition (the CYCL DEF 2xx “setup half”). Written by HeidenhainCannedCycleSyntax on every block (self-carrying modal state, the P1 datum-shift pattern) — a klartext definition never executes by itself; execution is gated on CYCL CALL/M99 (call-once) or M89 (modal call on positioning blocks), which convert this store into a direct ISO cycle sub-section under Parsing.

Interfaces

ICyclDef

JSON section schema for Heidenhain CYCL DEF blocks. The CyclHead string captures either the cycle title (e.g. “DATUM SETTING”) or a parameter line (e.g. “Q339=+1”).