Class SyntaxPiece
One NC block's source line paired with its parsed JSON payload during soft-NC processing.
public class SyntaxPiece : ISentenceCarrier, IGetSentence, ISentenceIndexed
- Inheritance
-
SyntaxPiece
- Implements
- Inherited Members
- Extension Methods
Remarks
The design pattern of Sentence and JsonObject are one-one mapping.
JSON value type convention: Prefer base types (double, int) over string for numeric values in JsonObject. This applies to both parsing syntaxes and logic syntaxes. Strings should only be used when the value is genuinely textual (e.g., macro variable references like "#1", "Q2", coordinate IDs like "G54") or when the value cannot be parsed to a number. Use FloatTagValueSyntax, IntegerTagValueSyntax, or FloatParamPrefixes / IntParamPrefixes to store typed values at parse time.
Constructors
SyntaxPiece(Sentence, JsonObject, int)
Creates a piece binding sentence to jsonObject with its execution-order sentenceIndex.
public SyntaxPiece(Sentence sentence, JsonObject jsonObject, int sentenceIndex)
Parameters
sentenceSentencejsonObjectJsonObjectsentenceIndexint
Properties
JsonObject
Structured parse result built by syntax passes.
public JsonObject JsonObject { get; set; }
Property Value
Sentence
Indexed source line and block text for this piece.
public Sentence Sentence { get; set; }
Property Value
SentenceIndex
0-based ordinal in NC execution order. Stamped at piece construction
time by GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
layers[0]'s running count, so subprogram pieces inlined by
SubProgramCallSyntax get sequential indices that interleave
correctly between host blocks. Useful as a cross-process alignment
key (messages, ClStripPos, MachiningStep) — unlike
FileLineUtil.MixedIndex(), it reflects execution order rather
than (FileIndex, LineIndex) source order.
Required at construction: the index is identity, not optional metadata. Read-only after construction; the pipeline guarantees one stamping per piece at the wrapping chokepoint.
public int SentenceIndex { get; }
Property Value
Methods
GetSentence()
Returns the source Sentence carried by this object.
public Sentence GetSentence()
Returns
ToString()
Serialize with Hi.NcParsers.Syntaxs.NcSyntaxUtil.Options to support NaN/Infinity.
public override string ToString()