Stage 3 of the faithful libyaml scanner port, continued. Translates fetch_flow_collection_start, fetch_flow_collection_end, and fetch_flow_entry (the [ ] { } , indicators), with the flow-level push/pop already ported. Combined with the plain-scalar scanner's flow-aware termination, the port now tokenizes flow sequences and mappings of plain scalars, and the simple-key splice promotes a flow mapping key. Unit-tested for [a, b] and {k: v}. Remaining unported fetchers: quoted/block scalars, anchors, tags, directives. 307 tests, no regression.
24 lines
755 B
Swift
24 lines
755 B
Swift
extension PureYAML.Parsing.LibYAML {
|
|
/// A scanner token kind, mirroring `yaml_token_type_t`. The flow-collection,
|
|
/// anchor, tag, alias, and directive kinds are added as their fetchers are
|
|
/// ported; the block + plain-scalar core is present.
|
|
enum TokenType: Equatable {
|
|
case streamStart
|
|
case streamEnd
|
|
case documentStart
|
|
case documentEnd
|
|
case blockSequenceStart
|
|
case blockMappingStart
|
|
case blockEnd
|
|
case blockEntry
|
|
case flowSequenceStart
|
|
case flowMappingStart
|
|
case flowSequenceEnd
|
|
case flowMappingEnd
|
|
case flowEntry
|
|
case key
|
|
case value
|
|
case scalar(value: String, style: PureYAML.Parsing.ScalarStyle)
|
|
}
|
|
}
|