Class: Jsonerino::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonerino/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(lexer) ⇒ Parser

Returns a new instance of Parser.



8
9
10
11
12
# File 'lib/jsonerino/parser.rb', line 8

def initialize(lexer)
  @lexer = lexer
  @current_token = lexer.next_token
  @previous_token = nil
end

Instance Method Details

#parseObject



14
15
16
17
18
19
20
# File 'lib/jsonerino/parser.rb', line 14

def parse
  raise_end_of_data unless @current_token

  v = parse_json_value
  raise_unexpected_token unless v
  v
end

#parse_json_valueObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/jsonerino/parser.rb', line 22

def parse_json_value
  case @current_token.token
  when Token::TOKEN_LBRACKET
    parse_array
  when Token::TOKEN_LCURLY
    parse_object
  when Token::TOKEN_STRING
    JsonString.new consume(Token::TOKEN_STRING)
  when Token::TOKEN_NUMBER
    JsonNumber.new consume(Token::TOKEN_NUMBER)
  when Token::TOKEN_ID
    parse_id
  end
end