Package io.github.qishr.cascara.lang.yaml.processor
Class YamlAstParser
java.lang.Object
io.github.qishr.cascara.lang.yaml.processor.AbstractYamlProcessor<io.github.qishr.cascara.lang.yaml.processor.YamlAstParser>
io.github.qishr.cascara.lang.yaml.processor.YamlAstParser
All Implemented Interfaces:
AstParser<YamlNode, YamlToken, YamlTokenizer>
public class YamlAstParser
extends AbstractYamlProcessor<YamlAstParser>
A recursive descent parser that transforms a stream of YamlTokens into a YamlNode AST.This parser is designed for high-fidelity AST construction, meaning it preserves comments, indentation styles, and quote styles for round-tripping.
Core Responsibilities
- Structural Validation: Enforces strict column alignment for map keys and sequence items.
- Trivia Management: Buffers comments using pendingComments and attaches them to the next appropriate data node (Scalar, Map, or Sequence).
- Indentation Lifecycle: Manages block boundaries by consuming
INDENTandDEDENTtokens through the parseValue dispatcher.
Constructor Summary
| Constructor | Description |
|---|---|
| YamlAstParser() | Default constructor for SPI. |
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
| protected YamlAstParser | self() | |
| public YamlAstParser | setOptions(YamlOptions options) | |
| public YamlNode | parse(String text) | Entry point for parsing a full YAML source string. |
| public YamlNode | parse(byte[] data) | |
| public YamlNode | parse(Reader reader) | |
| public YamlNode | parse(InputStream is) | Entry point for parsing an InputStream. |
| public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.lang.annotation.Experimental YamlStream | parseMulti(String text) | Type-safe method specifically for multi-document scenarios. |
| public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.lang.annotation.Experimental YamlStream | parseMulti(byte[] data) | |
| public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.lang.annotation.Experimental YamlStream | parseMulti(InputStream is) | Type-safe method specifically for multi-document scenarios. |
| public YamlNode | parse(YamlTokenizer tokenizer) | Primary parsing core driven directly by the Tokenizer interface structure. |
| public YamlNode | parse(List<YamlToken> tokens) | Entry point for parsing a list of tokens. |
| public List<YamlToken> | getTokens() | |
| public YamlTokenizer | getTokenizer() |
Methods inherited from AbstractYamlProcessor
setReporter, getOptions, getContentType, getServiceProperties, getVersion, getReporter, setOptions
Method Details
self
protected YamlAstParser self()
Overrides:
setOptions
public YamlAstParser setOptions(YamlOptions options)
parse
public YamlNode parse(String text)
Entry point for parsing a full YAML source string.
Specified By:
parse
public YamlNode parse(byte[] data)
parse
public YamlNode parse(Reader reader)
Specified By:
parse
public YamlNode parse(InputStream is)
Entry point for parsing an InputStream.
Specified By:
parseMulti
@io.github.qishr.cascara.common.lang.annotation.Experimental
public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.lang.annotation.Experimental YamlStream parseMulti(String text)
Type-safe method specifically for multi-document scenarios.
parseMulti
@io.github.qishr.cascara.common.lang.annotation.Experimental
public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.lang.annotation.Experimental YamlStream parseMulti(byte[] data)
parseMulti
@io.github.qishr.cascara.common.lang.annotation.Experimental
public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.lang.annotation.Experimental YamlStream parseMulti(InputStream is)
Type-safe method specifically for multi-document scenarios.
parse
public YamlNode parse(YamlTokenizer tokenizer)
Primary parsing core driven directly by the Tokenizer interface structure.
parse
public YamlNode parse(List<YamlToken> tokens)
Entry point for parsing a list of tokens.
Specified By:
getTokens
public List<YamlToken> getTokens()
Specified By:
getTokenizer
public YamlTokenizer getTokenizer()
Specified By: