Class: TRuby::ParserCombinator::DeclarationParser

Inherits:
Object
  • Object
show all
Includes:
DSL
Defined in:
lib/t_ruby/parser_combinator/declaration_parser.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.



9
10
11
12
# File 'lib/t_ruby/parser_combinator/declaration_parser.rb', line 9

def initialize
  @type_parser = TypeParser.new
  build_parsers
end

Instance Method Details

#parse(input) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/t_ruby/parser_combinator/declaration_parser.rb', line 14

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



23
24
25
26
27
28
29
30
# File 'lib/t_ruby/parser_combinator/declaration_parser.rb', line 23

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