Sha256: 36a4df600f7526a0edcb654b1ecd740c5c66aaf162f88f152b7190ad2d23fd15
Contents?: true
Size: 1.65 KB
Versions: 2
Compression:
Stored size: 1.65 KB
Contents
module Pione module Parser # ParserError is raised when the parser finds syntax error. class ParserError < Parslet::ParseFailed # Creates an error. # @param [String] str # target string # @param [Array<String>] expected # expected names # @param [Parslet::Source] source # parser source def initialize(str, expected, source) @str = str @expected = expected @source = source super(str) end # @api private def message line, column = @source.line_and_column expected = @expected.join(", ") left = @source.consume(@source.chars_left) "%s(expected: %s, line: %s, column: %s):\n%s" % [ @str, expected, line, column, left ] end end # @api private class SyntaxErrorAtom < Parslet::Atoms::Base def initialize(msg, expected_elements=[]) @msg = msg @expected_elements = expected_elements end def try(source, context) raise ParserError.new(@msg, @expected_elements, source) end def to_s_inner(prec) "SYNTAX_ERROR" end end # SyntaxError provides notification methods for syntax error. module SyntaxError # Raises syntax error. This method returns a dummy atom and the parser # evaluates it as error. # @param [String] msg # error message # @param [Array<String>] expected_elements # expected name list # @return [SyntaxErrorAtom] # dummy atom for parser def syntax_error(msg, *expected_elements) SyntaxErrorAtom.new(msg, expected_elements) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pione-0.1.1 | lib/pione/parser/syntax-error.rb |
pione-0.1.0 | lib/pione/parser/syntax-error.rb |