Makeup.Lexers.CureLexer (MakeupCure v0.4.1)

View Source

A Makeup lexer for the Cure programming language.

Cure is a dependently-typed language for the BEAM with first-class finite state machines, typed supervision trees, OTP applications, SMT-backed verification, and propositional equality. Its syntax is indentation- significant, ML-influenced, and includes FSM transition literals, the Melquiades send operator, and Erlang-style bitstring segments.

The tokeniser tracks the surface features of the language as of Cure v0.34.1. See the top of cure/CHANGELOG.md in the Cure repository for the authoritative reference.

Registering the lexer

The lexer is automatically registered on application start for the language name "cure" and the file extension ".cure".

Summary

Functions

Parses the given binary as root.

Parses the given binary as root_element.

Functions

root(binary, opts \\ [])

@spec root(binary(), keyword()) ::
  {:ok, [term()], rest, context, line, byte_offset}
  | {:error, reason, rest, context, line, byte_offset}
when line: {pos_integer(), byte_offset},
     byte_offset: non_neg_integer(),
     rest: binary(),
     reason: String.t(),
     context: map()

Parses the given binary as root.

Returns {:ok, [token], rest, context, position, byte_offset} or {:error, reason, rest, context, line, byte_offset} where position describes the location of the root (start position) as {line, offset_to_start_of_line}.

To column where the error occurred can be inferred from byte_offset - offset_to_start_of_line.

Options

  • :byte_offset - the byte offset for the whole binary, defaults to 0
  • :line - the line and the byte offset into that line, defaults to {1, byte_offset}
  • :context - the initial context value. It will be converted to a map

root_element(binary, opts \\ [])

@spec root_element(binary(), keyword()) ::
  {:ok, [term()], rest, context, line, byte_offset}
  | {:error, reason, rest, context, line, byte_offset}
when line: {pos_integer(), byte_offset},
     byte_offset: non_neg_integer(),
     rest: binary(),
     reason: String.t(),
     context: map()

Parses the given binary as root_element.

Returns {:ok, [token], rest, context, position, byte_offset} or {:error, reason, rest, context, line, byte_offset} where position describes the location of the root_element (start position) as {line, offset_to_start_of_line}.

To column where the error occurred can be inferred from byte_offset - offset_to_start_of_line.

Options

  • :byte_offset - the byte offset for the whole binary, defaults to 0
  • :line - the line and the byte offset into that line, defaults to {1, byte_offset}
  • :context - the initial context value. It will be converted to a map