class LDLgeneratedLanguage::Language_gds_check

Constants

GrammarDef

Public Class Methods

parse( s ) click to toggle source
# File lib/gds-data-validation/lng_gds_check.rb, line 11
def self.parse( s )
  @parserClass ||= begin
    Treetop.load_from_string GrammarDef
    instance_eval( 'Language_gds_check_05Parser' )
  end
  parser = @parserClass.new

  parseTree = parser.parse( s + "\n" )

  unless parseTree
    lineOfFailure   = parser.failure_line
    columnOfFailure = parser.failure_column

    s = "LANGUAGE_GDS_CHECK: Error happend, while parsing the definition: line #{lineOfFailure}, column #{columnOfFailure}" + "\n"
    s += parser.failure_reason + "\n"  if parser.failure_reason
    s += "--->" + "\n"
    s += parser.input.lines[((lineOfFailure-1-5)>0 ? (lineOfFailure-1-5) : 0)..(lineOfFailure-1)].join.chomp + "\n"
    s += ' '*((parser.failure_column) -1) + '^' + "\n"
    s += "<---" + "\n"

    raise SyntaxError, s
  end

  parseTree.ast
end