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.
- 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).