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 (EQU→EQ; 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
OpGt
Op for the klartext GT comparator.
public const string OpGt = "GT"
Field Value
OpLt
Op for the klartext LT comparator.
public const string OpLt = "LT"
Field Value
OpNe
Op for the klartext NE comparator.
public const string OpNe = "NE"
Field Value
TermFn10
Term of the FN 10 (not-equal) jump.
public const string TermFn10 = "FN10"
Field Value
TermFn11
Term of the FN 11 (greater-than) jump.
public const string TermFn11 = "FN11"
Field Value
TermFn12
Term of the FN 12 (less-than) jump.
public const string TermFn12 = "FN12"
Field Value
TermFn9
Term of the FN 9 (equal) jump.
public const string TermFn9 = "FN9"
Field Value
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
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
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
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
Rhs
Right comparison operand; same contract as Lhs.
public string Rhs { get; set; }
Property Value
Term
public string Term { get; set; }