Skip to content

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 INDENT and DEDENT tokens 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:

AbstractYamlProcessor


setOptions

public YamlAstParser setOptions(YamlOptions options)


parse

public YamlNode parse(String text)

Entry point for parsing a full YAML source string.

Specified By:

AstParser


parse

public YamlNode parse(byte[] data)


parse

public YamlNode parse(Reader reader)

Specified By:

AstParser


parse

public YamlNode parse(InputStream is)

Entry point for parsing an InputStream.

Specified By:

AstParser


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:

AstParser


getTokens

public List<YamlToken> getTokens()

Specified By:

AstParser


getTokenizer

public YamlTokenizer getTokenizer()

Specified By:

AstParser