Table of Contents

Class HeidenhainGoto

Namespace
Hi.NcParsers.Keywords.Heidenhain
Assembly
HiMech.dll

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.

public class HeidenhainGoto
Inheritance
HeidenhainGoto
Inherited Members
Extension Methods

Fields

OpEq

Op normalised from the klartext EQU spelling.

public const string OpEq = "EQ"

Field Value

string

OpGt

Op for the klartext GT comparator.

public const string OpGt = "GT"

Field Value

string

OpLt

Op for the klartext LT comparator.

public const string OpLt = "LT"

Field Value

string

OpNe

Op for the klartext NE comparator.

public const string OpNe = "NE"

Field Value

string

TermFn10

Term of the FN 10 (not-equal) jump.

public const string TermFn10 = "FN10"

Field Value

string

TermFn11

Term of the FN 11 (greater-than) jump.

public const string TermFn11 = "FN11"

Field Value

string

TermFn12

Term of the FN 12 (less-than) jump.

public const string TermFn12 = "FN12"

Field Value

string

TermFn9

Term of the FN 9 (equal) jump.

public const string TermFn9 = "FN9"

Field Value

string

Properties

ConditionEvaluated

Tri-state comparison outcome stamped by the evaluation syntax: true — condition met (jump proceeds); false — not met (falls through silently); null — an operand did not resolve to a finite numeric (warns HeidenhainGoto–ConditionNotEvaluated and falls through — the FN 18 SYSREAD target staying vacant is the designed source of this state).

public bool? ConditionEvaluated { get; set; }

Property Value

bool?

Fired

True when the redirect actually replaced the source layer.

public bool Fired { get; set; }

Property Value

bool

Label

Target label number or name as written (quotes stripped: GOTOLBL"SLOW_FEED" captures SLOW_FEED). Numeric labels canonicalize at match time (“01”1 on a TNC). If a quoted name collides with a set Q spelling the evaluator may have substituted a numeric here; the consumer recovers the original text from the Formula.HeidenhainGoto.Label mirror.

public string Label { get; set; }

Property Value

string

Lhs

Left comparison operand. Parsing-side a pure numeric literal is typed numeric at capture; a Q-reference operand ("+Q94") stays a string and is substituted in place by VariableEvaluatorSyntax's pass-2 walk when it resolves (original text mirrored to Formula.HeidenhainGoto.Lhs). A still-string operand at the evaluation syntax means “unresolved” — the jump falls through with HeidenhainGoto–ConditionNotEvaluated.

public string Lhs { get; set; }

Property Value

string

Op

Comparator normalised to the shared comparison words: one of OpEq, OpNe, OpGt, OpLt. Captured from the spelled word (which on a real TNC always agrees with the opcode).

public string Op { get; set; }

Property Value

string

Rhs

Right comparison operand; same contract as Lhs.

public string Rhs { get; set; }

Property Value

string

Term

Statement opcode: one of TermFn9TermFn12, as spelled in the source (whitespace dropped).

public string Term { get; set; }

Property Value

string