Skip to content

Package io.github.qishr.cascara.lang.yaml.processor

Class YamlAstParser

java.lang.Object
        io.github.qishr.cascara.lang.yaml.internal.AbstractYamlProcessor<io.github.qishr.cascara.lang.yaml.processor.YamlAstParser>
                io.github.qishr.cascara.lang.yaml.internal.AbstractYamlParser<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 AbstractYamlParser<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()

Method Summary

Modifier and Type Method Description
protected YamlAstParser self()
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.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.annotation.Experimental YamlStream parseMulti(byte[] data)
public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.annotation.Experimental YamlStream parseMulti(InputStream is) 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.

Method Details

self

protected YamlAstParser self()


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.annotation.Experimental
public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.annotation.Experimental YamlStream parseMulti(String text)

Type-safe method specifically for multi-document scenarios.


parseMulti

@io.github.qishr.cascara.common.annotation.Experimental
public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.annotation.Experimental YamlStream parseMulti(byte[] data)


parseMulti

@io.github.qishr.cascara.common.annotation.Experimental
public io.github.qishr.cascara.lang.yaml.ast.@io.github.qishr.cascara.common.annotation.Experimental YamlStream parseMulti(InputStream is)

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