ebnf

Types

pub type Ebnf =
  List(Production)
pub type Node {
  Terminal(String)
  NonTerminal(String)
  Optional(Node)
  Repetition(Node)
  Sequence(List(Node))
  Alternative(Node)
}

Constructors

  • Terminal(String)
  • NonTerminal(String)
  • Optional(Node)
  • Repetition(Node)
  • Sequence(List(Node))
  • Alternative(Node)

Parser errors

pub type ParseError {
  UnterminatedTerminal(pos: Position)
  UnterminatedComment(pos: Position)
  EmptyTerminal(pos: Position)
  UnexpectedCharacter(c: String, pos: Position)
  UnexpectedToken(token: Token, expected: String)
  UnexpectedEnd(expected: String)
  DuplicateProductions(prods: List(String))
  UnusedProductions(prods: List(String))
  UndefinedProductions(prods: List(String))
}

Constructors

  • UnterminatedTerminal(pos: Position)
  • UnterminatedComment(pos: Position)
  • EmptyTerminal(pos: Position)
  • UnexpectedCharacter(c: String, pos: Position)
  • UnexpectedToken(token: Token, expected: String)
  • UnexpectedEnd(expected: String)
  • DuplicateProductions(prods: List(String))
  • UnusedProductions(prods: List(String))
  • UndefinedProductions(prods: List(String))
pub type Position {
  Position(row: Int, col: Int)
}

Constructors

  • Position(row: Int, col: Int)
pub type Production {
  Production(lhs: String, rhs: Node, is_start: Bool)
}

Constructors

  • Production(lhs: String, rhs: Node, is_start: Bool)
pub type Token {
  Token(TokenKind, Position)
}

Constructors

pub type TokenKind {
  Eof
  LParen
  RParen
  LBracket
  RBracket
  LBrace
  RBrace
  Dot
  Bar
  Equal
  STerminal(String)
  SNonTerminal(String)
}

Constructors

  • Eof
  • LParen
  • RParen
  • LBracket
  • RBracket
  • LBrace
  • RBrace
  • Dot
  • Bar
  • Equal
  • STerminal(String)
  • SNonTerminal(String)

Values

pub fn parse(s: String) -> Result(List(Production), ParseError)
Search Document