Exception: Emfrp::Parser::ParsingError
- Inherits:
-
StandardError
- Object
- StandardError
- Emfrp::Parser::ParsingError
- Defined in:
- lib/emfrp/parser/parsing_error.rb
Instance Method Summary collapse
- #code ⇒ Object
- #column_number ⇒ Object
-
#initialize(src_str, file_name, status) ⇒ ParsingError
constructor
A new instance of ParsingError.
- #line ⇒ Object
- #line_number ⇒ Object
- #print_error(output_io) ⇒ Object
Constructor Details
#initialize(src_str, file_name, status) ⇒ ParsingError
Returns a new instance of ParsingError.
6 7 8 9 10 |
# File 'lib/emfrp/parser/parsing_error.rb', line 6 def initialize(src_str, file_name, status) @src_str = src_str @file_name = file_name @status = status end |
Instance Method Details
#code ⇒ Object
12 13 14 |
# File 'lib/emfrp/parser/parsing_error.rb', line 12 def code @status.[:code] || :noname end |
#column_number ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/emfrp/parser/parsing_error.rb', line 24 def column_number if @status.rest.length > 0 @status.rest[0].tag[:column_number] else @src_str.each_line.last.length end end |
#line ⇒ Object
32 33 34 |
# File 'lib/emfrp/parser/parsing_error.rb', line 32 def line @src_str.each_line.to_a[line_number - 1] end |
#line_number ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/emfrp/parser/parsing_error.rb', line 16 def line_number if @status.rest.length > 0 @status.rest[0].tag[:line_number] else @src_str.each_line.count end end |
#print_error(output_io) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/emfrp/parser/parsing_error.rb', line 36 def print_error(output_io) output_io << "#{@file_name}:#{line_number}: " output_io << "SyntaxError, in `#{@status.message[:place]}`: " output_io << "#{@status.message[:required]} is expected" if @status.rest.length == 0 output_io << ", but parser reached end-of-file\n" else output_io << "\n#{line.chomp}\n" output_io << "#{" " * (column_number - 1)}#{"^".colorize(:green)}\n" end end |