Skip to content

createParser

createParser<TNodes, TScope>(nodes, options?): Parser<ComputeGrammar<TNodes>, TNodes, { [name in string | number | symbol]: bootstrapAliases<TScope>[name] extends Def<def> ? inferDefinition<def, bootstrapAliases<TScope>, {}> : bootstrapAliases<TScope>[name] extends { t: g } ? bindGenericToScope<g, bootstrapAliases<TScope>> : bootstrapAliases<TScope>[name] }>

Defined in: src/createParser.ts:276

Create a type-safe parser from node schemas.

TNodes extends readonly NodeSchema<string, readonly PatternSchema[], number, ResultSpec | undefined>[]

TScope extends ScopeAliases = { }

TNodes

Tuple of node schemas defining the grammar

TScope

Extra type aliases available in constraints, resultTypes, and schemas (e.g. { Money: “number” })

Parser<ComputeGrammar<TNodes>, TNodes, { [name in string | number | symbol]: bootstrapAliases<TScope>[name] extends Def<def> ? inferDefinition<def, bootstrapAliases<TScope>, {}> : bootstrapAliases<TScope>[name] extends { t: g } ? bindGenericToScope<g, bootstrapAliases<TScope>> : bootstrapAliases<TScope>[name] }>

const parser = createParser([ternary, add, atoms] as const);
const result = parser.safeParse(dynamic, { x: "number" });
const sum = parser.evaluate("1+2", {}, {}); // 3