def parse_stmt_load
Kwartz::assert() unless token() == :load
scan()
_syntaxerr("':load' requires '('.") unless token() == '('
scan()
filename_expr = parse_expression()
_syntaxerr("':load(' is not closed.") unless token() == ')'
scan()
_syntaxerr("':load' requires filename as a string.") unless filename_expr.token == :string
filename = filename_expr.left
@toppings[:load_path].each do |dir|
if test(?d, dir) && test(?f, "#{dir}/#{filename}")
filename = "#{dir}/#{filename}"
break
end
end if @toppings[:load_path]
unless test(?f, filename)
msg = "'#{filename}': not found."
raise ParseError.new(msg)
end
plcode = File.open(filename) { |f| f.read }
nodelist = Kwartz::Helper.parse(plcode, @toppings)
return nodelist
end