Aether.Reader.Grammar (Ichor v0.2.0)

Copy Markdown View Source

The CST Aether.Reader.read/2 produces: grammar-wide pragmas plus every token/rule definition in file order, each body an Aether.Reader.cst() tree. Aether.Eval.build/1 is the only consumer.

Summary

Types

def_t()

@type def_t() ::
  {:token, atom(), Aether.Reader.cst(), Aether.Reader.pos()}
  | {:rule, atom(), Aether.Reader.cst(), Aether.Reader.pos()}
  | {:keywords, atom(), %{required(String.t()) => atom()}, Aether.Reader.pos()}
  | {:refine, atom(), String.t(), String.t(), [atom()], Aether.Reader.pos()}

t()

@type t() :: %Aether.Reader.Grammar{
  case_insensitive: boolean(),
  defs: [def_t()],
  engine: :peg | :lr | :glr,
  file: String.t() | nil,
  name: String.t(),
  root: atom(),
  root_pos: Aether.Reader.pos(),
  skip_mode: :none | :default | {:custom, atom()},
  skip_pos: Aether.Reader.pos() | nil,
  source: String.t()
}