Method: Minjs::Lex::Statement#semicolon

Defined in:
lib/minjs/lex/statement.rb

#semicolon(var_env) ⇒ Object

Tests next literal is ‘;’ or ‘}’ or LT



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/minjs/lex/statement.rb', line 8

def semicolon(var_env)
  a = peek_lit_nolt(nil)
  # ; ?
  if a == ECMA262::PUNC_SEMICOLON
    fwd_after_peek
    a
  # } ?
  elsif a == ECMA262::PUNC_RCURLYBRAC
    a
  # line feed?
  elsif a == ECMA262::LIT_LINE_TERMINATOR
    fwd_after_peek
    a
  # end of program
  elsif a.nil?
    fwd_after_peek
    ECMA262::LIT_LINE_TERMINATOR
  # line terminator?
  elsif a.lt?
    fwd_after_peek
    a
  else
    nil
  end
end