import { YAML } from "https://deno.land/x/aether@v0.0.3/deps.ts";
const { Parser } = YAML;
A YAML concrete syntax tree (CST) parser
const src: string = ...
for (const token of new Parser().parse(src)) {
// token: Token
}
To use the parser with a user-provided lexer:
function* parse(source: string, lexer: Lexer) {
const parser = new Parser()
for (const lexeme of lexer.lex(source))
yield* parser.next(lexeme)
yield* parser.end()
}
const src: string = ...
const lexer = new Lexer()
for (const token of parse(src, lexer)) {
// token: Token
}
Methods
end(): Generator<Token, void, unknown>
Call at end of input to push out any remaining constructions
next(source: string): Generator<Token, void, unknown>
Advance the parser by the source
of one lexical token.
parse(source: string, incomplete?: boolean): Generator<Token, void, unknown>
Parse source
as a YAML stream.
If incomplete
, a part of the last line may be left as a buffer for the next call.
Errors are not thrown, but yielded as { type: 'error', message }
tokens.