class LDLgeneratedLanguage::Gds
Constants
- GrammarDef
Public Class Methods
parse( s, config = {} )
click to toggle source
# File lib/gdstruct/lng_gds.rb, line 13 def self.parse( s, config = {} ) @parserClass ||= begin Treetop.load_from_string GrammarDef instance_eval( 'Language_gds_03Parser' ) end parser = @parserClass.new parseTree = parser.parse( s + "\n" ) unless parseTree lineOfFailure = parser.failure_line columnOfFailure = parser.failure_column s = "LANGUAGE_GDS: 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 context = Struct.new( :config, :globalvars ).new( { allow_env: false, context: nil }.merge( config ), {} ) parseTree.ast( context ) end