atproto_sdl/parser/types

Parses type expressions, field lists, and parameter lists: the mutually recursive cluster of the grammar (a type can be an inline object of fields; a field has a type), kept in one module because Gleam forbids import cycles. Union !-closed markers glue to the last member (a | b!); parens spell single-member and required unions (see parse_paren_union).

Values

pub fn parse_fields(
  tokens: List(#(token.Token, token.Span)),
  acc: List(tree.Field),
) -> Result(
  #(List(tree.Field), List(#(token.Token, token.Span))),
  error.ParseError,
)
pub fn parse_params(
  tokens: List(#(token.Token, token.Span)),
  acc: List(tree.Field),
) -> Result(
  #(List(tree.Field), List(#(token.Token, token.Span))),
  error.ParseError,
)
pub fn parse_type(
  tokens: List(#(token.Token, token.Span)),
) -> Result(
  #(tree.SType, List(#(token.Token, token.Span))),
  error.ParseError,
)
Search Document