class Emfrp::CompileError

Attributes

factors[R]
message[R]

Public Class Methods

new(message, code, *factors) click to toggle source
# File lib/emfrp/compile_error.rb, line 7
def initialize(message, code, *factors)
  @message = message
  @code = message
  @factors = factors
end

Public Instance Methods

code() click to toggle source
# File lib/emfrp/compile_error.rb, line 13
def code
  @code
end
collect_factor_tags(factor) click to toggle source
# File lib/emfrp/compile_error.rb, line 21
def collect_factor_tags(factor)
  case factor
  when Syntax
    if factor.has_key?(:start_pos)
      collect_factor_tags(factor.values) + [[factor[:start_pos], factor[:end_pos]]]
    else
      collect_factor_tags(factor.values)
    end
  when Array
    factor.flat_map{|x| collect_factor_tags(x)}
  else
    []
  end
end
factor_name(factor) click to toggle source
# File lib/emfrp/compile_error.rb, line 54
def factor_name(factor)
  klass = factor.class.name.split("::").last
  if factor.is_a?(Syntax)
    name = factor.has_key?(:name) ? "`#{factor[:name][:desc]}`" : ""
  else
    name = factor.inspect
  end
  klass + " " + name
end
find_factor_file_name(factor) click to toggle source
# File lib/emfrp/compile_error.rb, line 36
def find_factor_file_name(factor)
  case factor
  when Syntax
    if factor.has_key?(:start_pos)
      return factor[:start_pos][:document_name]
    else
      return find_factor_file_name(factor.values)
    end
  when Array
    factor.each do |x|
      if res = find_factor_file_name(x)
        return res
      end
    end
  end
  nil
end
print_error(output_io, file_loader) click to toggle source
print_lexical_factor(factor, output_io, file_loader) click to toggle source
tag_comp(a, b) click to toggle source
# File lib/emfrp/compile_error.rb, line 17
def tag_comp(a, b)
  [a[:line_number], a[:column_number]] <=> [b[:line_number], b[:column_number]]
end