Class: MiniRuby::Parser

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/miniruby/parser.rb

Overview

MiniRuby parser

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ Parser

Returns a new instance of Parser.



23
24
25
26
27
28
29
# File 'lib/miniruby/parser.rb', line 23

def initialize(source)
  # Lexer/Tokenizer that produces tokens
  @lexer = T.let(Lexer.new(source), Lexer)
  # Next token used for predicting productions
  @lookahead = T.let(Token.new(Token::NONE, Span::ZERO), Token)
  @errors = T.let([], T::Array[String])
end

Class Method Details

.parse(source) ⇒ Object



15
16
17
# File 'lib/miniruby/parser.rb', line 15

def parse(source)
  new(source).parse
end

Instance Method Details

#parseObject



32
33
34
35
36
# File 'lib/miniruby/parser.rb', line 32

def parse
  advance # populate @lookahead
  ast = parse_program
  Result.new(ast, @errors)
end