Table of Contents

Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain

Classes

HeidenhainBlkFormSyntax

Syntax for Heidenhain BLK FORM command (workpiece blank definition).

HeidenhainCSyntax

Heidenhain circular-motion statement (C X+5.361 Y+23.064 DR-). Mirrors HeidenhainLSyntax: endpoint axis words promote to the Parsing root (shared Logic consumers), a “CArc”: true statement marker (deliberately NOT the bare C key — that is a rotary axis word which McAbcSyntax owns and consumes on rotary machines) gates HeidenhainCircularMotionSyntax, the rotation direction lands in Parsing.DR ("-" = CW = G02, "+" = CCW = G03) and radius-compensation words are captured like on L statements. The word-boundary head guard rejects CC/CT/CR/CP statements.

HeidenhainCallSyntax

Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL).

HeidenhainCcSyntax

Heidenhain circle-center statement (CC X+12.7 Y+12.7). The coordinates land in the nested Parsing.CC record — deliberately not on the Parsing root, where ProgramXyzSyntax would mistake the center for a motion endpoint. The Logic-stage HeidenhainCircleCenterSyntax turns the record into the modal circle-center section consumed by the arc syntax. Must run before HeidenhainCSyntax in the bundle (the \b guard keeps a C statement from matching CC and vice versa, but CC-first is the safe order).

HeidenhainCyclDefSyntax

Initialization Syntax of Heidenhain fixed head block for

CYCL DEF
.
HeidenhainFnAssignmentSyntax

Heidenhain FN variable assignment syntax. Extends TagAssignmentSyntax with FN opcode prefix.

HeidenhainFnFeatureSyntax

Structured skip for the Heidenhain FN opcodes the simulation does not implement (FN 14 error display, FN 16 print, FN 18 SYSREAD, table/pallet opcodes …): the whole statement is consumed and a single HeidenhainFn–Unsupported warning names the opcode. Two opcode families pass through untouched: FN 0-5 belong to HeidenhainFnAssignmentSyntax (which runs earlier), and the jump family FN 9-12 is control flow owned by a later phase.

Claiming the statement here is load-bearing, not cosmetic: an FN 18 line like FN18: SYSREAD Q94= ID50 NR11 contains a Q94= token that the bare Q-assignment capture (later in the Parsing bundle) would otherwise grab, storing the garbage string ID50 into Q94. The target parameter must instead stay vacant so dependent expressions fail soft (VariableExpression--Unevaluated) — no fabricated values.

HeidenhainLSyntax

Heidenhain linear movement (the leading L) syntax. Strips the leading L (word-bounded, so LN/LP/LBL lines are not touched), writes the Parsing.L = true statement marker, and grabs axis-tag values for any of AxisTagList (X, Y, Z, U, V, W, A, B, C) that appear afterwards as {axis}{signed-value} pairs; values are parsed as floats via ToFloat(string).

Axis words land on the root of Parsing (not nested under L) so the shared Logic consumers — ProgramXyzSyntax, McAbcSyntax, MachineCoordSelectSyntax, IncrementalResolveSyntax — read them without per-brand path configuration. The L marker is consumed by HeidenhainMotionModeSyntax which maps the statement (plus a one-shot FMAX flag) onto the shared G00/G01 motion-mode vocabulary.

The radius-compensation words RL/RR/R0 are captured as boolean records on the Parsing root; the Logic-stage HeidenhainRadiusCompSyntax maps them onto the shared G41/G42/G40 vocabulary consumed by the radius compensation pass.

HeidenhainLblSyntax

Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram.

HeidenhainM128Syntax

Captures the klartext M128 word (RTCP on) together with its optional feed-limit argument (M128 F6000.) into Parsing.M128 { F? }. Must run before the shared F tag-value syntax — the F belongs to M128 (feed limit for compensating movements), and letting it reach the Parsing root would pollute the modal feedrate. M129 (RTCP off) carries no argument and stays on the shared numbered-flag path.

HeidenhainM140Syntax

Captures the klartext M140 MB tool-axis retract statement into Parsing.M140 { MB, F? }. MB MAX retracts to the traverse limit (recorded as the string “MAX”); MB+n retracts by n mm along the tool axis. Handles the corpus forms M140 MB+50 F6000, L M140 MB MAX (M word carried on an L statement) and the glued LM140 MB MAX (TongTai post). Must run before HeidenhainLSyntax (it claims the whole retract statement including a leading L) and before the shared F tag-value syntax (the F is the retract feed).

HeidenhainPlaneSyntax

Syntax for Heidenhain PLANE command. Handles:

  • PLANE RESET
  • PLANE SPATIAL SPA SPB SPC SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY]
  • PLANE PROJECTED PROPR PROMIN ROT SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY]
HeidenhainProgramSyntax

Syntax for Heidenhain BEGIN PGM and END PGM commands.

HeidenhainToolCallSyntax

Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…]