Class: TRuby::ParserCombinator::DeclarationParser

Inherits:
Object
  • Object
show all
Includes:
DSL
Defined in:
lib/t_ruby/parser_combinator.rb

Overview

Declaration Parser - Parse T-Ruby declarations

Instance Method Summary collapse

Methods included from DSL

#alphanumeric, #chainl, #char, #choice, #digit, #eof, #fail, #float, #identifier, #integer, #lazy, #letter, #lexeme, #literal, #newline, #pure, #quoted_string, #regex, #satisfy, #sequence, #spaces, #spaces1, #string, #whitespace

Constructor Details

#initializeDeclarationParser

Returns a new instance of DeclarationParser.



754
755
756
757
# File 'lib/t_ruby/parser_combinator.rb', line 754

def initialize
  @type_parser = TypeParser.new
  build_parsers
end

Instance Method Details

#parse(input) ⇒ Object



759
760
761
762
763
764
765
766
# File 'lib/t_ruby/parser_combinator.rb', line 759

def parse(input)
  result = @declaration.parse(input.strip)
  if result.success?
    { success: true, declarations: result.value }
  else
    { success: false, error: result.error, position: result.position }
  end
end

#parse_file(input) ⇒ Object



768
769
770
771
772
773
774
775
# File 'lib/t_ruby/parser_combinator.rb', line 768

def parse_file(input)
  result = @program.parse(input)
  if result.success?
    { success: true, declarations: result.value.compact }
  else
    { success: false, error: result.error, position: result.position }
  end
end