Namespace Hi.NcParsers.Keywords.Siemens
Classes
- Msg
Block-root section recording a Siemens
MSG("...")operator display message, written by SiemensMsgSyntax. A section without Text records the bareMSG()clear form. Record-only: simulation ignores it; the section exists for bidirectional NC-text reconstruction and UI display.
- SiemensCall
Siemens subprogram-call record. Two lifetimes share the shape:
Parsing.SiemensCall— written by SiemensCallStatementSyntax when a whole-line call statement is captured (L9810,L123 P3,HQ_FC(1,2)). Carries Name, optional verbatim Args, optional P.- block-root
SiemensCall— written by SiemensSubProgramCallSyntax on the host block and on every inlined body block once the call is consumed. FileName records the resolved subprogram file; Skipped marks the safe-skip outcome (no file found — OEM / measuring cycles likeHQ_FC, RenishawL9810) where the call is consumed with zero motion effect and a structured warning replaces the raw unparsed-text noise.
- SiemensFor
Siemens
FOR <var> = <start> TO <end> ... ENDFORcounting-loop record. The Parsing capture stores the start expression as a single-entryInitmap ({ “R1”: 0 }) — the variable name is a JSON key, which the evaluator's pass-2 tree walk never rewrites (values only), so a loop variable whose name matches a set named variable is not clobbered; the start/end values are substituted normally. The block-root stamp records the loop variable and its per-iteration Value.
- SiemensGoto
Siemens
GOTOF/GOTOBjump record. Two lifetimes share the shape:Parsing.SiemensGoto— written by SiemensGotoParsingSyntax for both the bare jump (GOTOF LBL1) and the single-line conditional (IF R1==1 GOTOF LBL1).- block-root
SiemensGoto— stamped by SiemensGotoSyntax after the control-flow decision, with Fired flipped true on a successful redirect.
Unlike Fanuc's numbered
GOTO n, the target is a named label (LBL1:line) or anN<num>block number; direction is explicit in the mnemonic —GOTOFscans forward from the host line,GOTOBscans backward to the nearest label above.
- SiemensIf
Siemens
IF/ELSE/ENDIFblock-conditional record.Parsing.SiemensIfcarries the captured phrase; the block-root stamp written by SiemensIfSyntax adds the gate outcome. Unlike the loop family there is no frame stack: anELSEreached in the normal stream always means the true branch just finished (a false condition jumps past theELSEline directly), soELSEunconditionally skips to its matchingENDIFandENDIFitself is a consumed no-op.
- SiemensKeywords
Siemens Sinumerik G-code and M-code constants.
- SiemensLabel
Block-root record for a Siemens label line (
LBL1:), written by SiemensLabelSyntax. Labels are passive jump targets — the record only makes the consumed token visible to cache dumps and lets SiemensRepeatSyntax's scan probe match candidates.
- SiemensLoop
Siemens
LOOP ... ENDLOOPendless-loop record. The construct has no exit condition — real programs leave it viaGOTOF/GOTOBor a subprogram return; offline replay is bounded by SiemensLoopIterationDependency, which is therefore a hard requirement for theENDLOOPback-jump (a missing watchdog suppresses the jump instead of hanging the pipeline).
- SiemensLoopFrame
One entry on the SiemensLoopFrames stack. Identity is
(Kind, FilePath, BeginLineNo)— the file path disambiguates a loop line in the main program from the same line number inside an inlined subprogram, and lets the terminator refuse a cross-file mismatch.
- SiemensLoopFrames
Block-root carrier for the active Siemens loop-construct stack, mutated by SiemensLoopSyntax at the Evaluation stage and carried block-to-block by ModalCarrySyntax's Logic tracked-key list (plus an eager previous-block clone inside the loop syntax itself, mirroring the Fanuc
WhileFramespattern). Wrapped in a JSON object ({ “Frames”: [ ... ] }) rather than a bare array so the ModalCarry deep-clone JsonObject carry applies — the same reason CallStack wraps its frame list.A single shared stack (rather than one per construct kind) is what makes mixed-construct nesting work: a
FORinside aWHILEpushes on top of the WHILE frame, and each terminator validates that the innermost (last) frame carries its own Kind.
- SiemensOrientation
Block-root record of the Siemens orientation-programming words a block carried, written by SiemensOrientationVectorSyntax: the
[ABC][2-8]=address family (A3=/B3=/C3=tool-axis vector under TRAORI,A2=/B2=/C2=Euler / RPY angles,A4=/A5=surface-normal vectors,A6=/A7=/A8=cone and intermediate-orientation vectors) and theORI*interpolation / reference-system words (OrientationWords). Record-only in this phase: the simulation does not derive a posture from it — the rotary axes keep their previously programmed positions and the program is diagnosed once asOrientation-Vector–NotSimulated. Phase P4 of the tool-vector plan reads Words back to write the brand-agnosticToolOrientation/SurfaceNormalsections; the record's shape is the contract that step builds on.The same name under
Parsingis a different thing: the words of the family that could not be recorded (address → the refused text, empty for an address without a value). Nothing consumes it, so the unconsumed check reports it.
- SiemensPathSmoothing
Section data holder for ISiemensPathSmoothingDef.
- SiemensProc
Block-root record for a Siemens
PROCdeclaration header, written by SiemensProcSyntax. The declaration is consumed whole (parameter binding is a later work item); Statement keeps the verbatim remainder visible.
- SiemensRepeat
Siemens
REPEATrecord.Parsing.SiemensRepeatcarries the captured label pair; the block-root section written by SiemensRepeatSyntax adds the firing outcome, and every inlined repetition block is stamped with a clone carrying Iteration so cache-dump readers can see which pass a block belongs to.
- SiemensRepeatUntil
Siemens
REPEAT ... UNTIL <cond>post-test loop record. The bareREPEATline (no label — the labelled forms belong to SiemensRepeat) opens the loop;UNTILevaluates the exit condition after each pass.
- SiemensWhile
Siemens
WHILE ... ENDWHILEpre-test loop record.Parsing.SiemensWhilecarries the captured phrase; the block-root stamp adds the per-arrival gate outcome. Loop state lives on the shared SiemensLoopFrames stack managed by SiemensLoopSyntax.
- Stopre
Block-root section recording a consumed Siemens
STOPRE(stop preprocessing / block-search buffer sync), written by SiemensStopreSyntax. STOPRE has no effect in offline simulation — the section exists solely so the token survives for bidirectional NC-text reconstruction.
Interfaces
- ISiemensPathSmoothingDef
Siemens path-control / smoothing modal registers recorded by SiemensPathSmoothingSyntax under the brand-invariant PathSmoothing section key. Record-only — simulation does not alter the tool path; the registers exist for bidirectional NC-text reconstruction and UI display.
Each property mirrors one orthogonal Sinumerik modal group; a property is absent from the JSON section until its group is first programmed. IsEnabled is derived: true while a CYCLE832 high-speed setting is armed (Tolerance present) or a continuous-path mode (G64/G641/G642) is active. Term records the token that last changed the path-control state (a G code or
CYCLE832).