module Minjs::Lex::Program

14 Program

Public Instance Methods

program(var_env) click to toggle source

Tests next literals sequence is Program or not.

If sequence is Program return ECMA262::Prog object and forward lexical parser position. Otherwise return nil and position is not changed.

@return [ECMA262::Prog] element

@see www.ecma-international.org/ecma-262 ECMA262 14

# File lib/minjs/lex/program.rb, line 18
def program(var_env)
  prog = source_elements(var_env)
  if eof?
    return prog
  else
    raise ParseError.new("unexpceted token", self)
  end
end
source_elements(var_env) click to toggle source

Tests next literals sequence is SourceElements or not.

If sequence is SourceElements return ECMA262::SourceElements object and forward lexical parser position. Otherwise return nil and position is not changed.

@return [ECMA262::SourceElements] element

@see www.ecma-international.org/ecma-262 ECMA262 14

# File lib/minjs/lex/program.rb, line 37
def source_elements(var_env)
  prog = []
  while t = source_element(var_env)
    prog.push(t)
  end
  ECMA262::Prog.new(var_env, ECMA262::SourceElements.new(prog))
end

Private Instance Methods

source_element(var_env) click to toggle source
# File lib/minjs/lex/program.rb, line 45
def source_element(var_env)
  #eval_lit{
  statement(var_env)
  #} or eval_lit{ => statement
  #  func_declaration(var_env)
  #}
end