Exception: EBNF::LL1::Parser::Error

Inherits:
StandardError
  • Object
show all
Defined in:
lib/ebnf/ll1/parser.rb

Overview

Raised for errors during parsing.

Examples:

Raising a parser error

raise Error.new(
  "invalid token '%' on line 10",
  token: '%', lineno: 9, production: :turtleDoc)

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message, **options) ⇒ Error

Initializes a new lexer error instance.

Parameters:

  • message (String, #to_s)
  • options (Hash{Symbol => Object})

Options Hash (**options):

  • :production (Symbol) — default: nil
  • :token (String) — default: nil
  • :lineno (Integer) — default: nil

794
795
796
797
798
799
# File 'lib/ebnf/ll1/parser.rb', line 794

def initialize(message, **options)
  @production = options[:production]
  @token      = options[:token]
  @lineno     = options[:lineno] || (@token.lineno if @token.respond_to?(:lineno))
  super(message.to_s)
end

Instance Attribute Details

#linenoInteger (readonly)

The line number where the error occurred.

Returns:

  • (Integer)

784
785
786
# File 'lib/ebnf/ll1/parser.rb', line 784

def lineno
  @lineno
end

#productionSymbol (readonly)

The current production.

Returns:

  • (Symbol)

772
773
774
# File 'lib/ebnf/ll1/parser.rb', line 772

def production
  @production
end

#tokenString (readonly)

The invalid token which triggered the error.

Returns:

  • (String)

778
779
780
# File 'lib/ebnf/ll1/parser.rb', line 778

def token
  @token
end