class MODL::Parser::Parser
This class converts the input string into a Modl:Parser::Parsed object for further processing.
Public Class Methods
check_modl_version(global, e)
click to toggle source
# File lib/modl/parser/parser.rb, line 62 def self.check_modl_version(global, e) if global.syntax_version > global.interpreter_syntax_version raise InterpreterError, 'Interpreter Error: ' + e.message + ' - MODL Version ' + global.interpreter_syntax_version.to_s + ' interpreter cannot process this MODL Version ' + global.syntax_version.to_s + ' file.' end end
parse(str, global = nil)
click to toggle source
# File lib/modl/parser/parser.rb, line 33 def self.parse(str, global = nil) begin lexer = MODL::Parser::MODLLexer.new(Antlr4::Runtime::CharStreams.from_string(str, 'String')) lexer.remove_error_listeners lexer.add_error_listener ThrowingErrorListener.instance tokens = Antlr4::Runtime::CommonTokenStream.new(lexer) parser = MODL::Parser::MODLParser.new(tokens) parser.remove_error_listeners parser.add_error_listener ThrowingErrorListener.instance global = GlobalParseContext.new if global.nil? parsed = Parsed.new(global) parser.modl.enter_rule(parsed) parsed rescue Antlr4::Runtime::ParseCancellationException => e check_modl_version(global, e) raise ParserError, 'Parser Error: ' + e.message rescue StandardError => e check_modl_version(global, e) raise InterpreterError, 'Interpreter Error: ' + e.message rescue InterpreterError => e check_modl_version(global, e) raise InterpreterError, 'Interpreter Error: ' + e.message end end