def node_file_input(self, node):
        jsvars = self.jsvars.copy()

        # Initialize module creation
        self.add_lines("""\
/* <start module: %(module_name)s */ (function(){
var %(module)s = %(module_store)s[%(module_name)r] = {
+   '$inst': true,
+   '$dict': {
++      '__name__': null
+   },
+   'toString': function() { return "<module " + this['$dict']['__name__'] + ">";},
+   '$module_init': function($name$) {
++      if (%(globals)s['__name__'] !== null) {
+++         return %(module)s;
++      }
++      var $name = $name$;
++      if ($name === null || typeof $name == 'undefined') $name = %(module_name)r;
++      %(builtin)s = %(module_store)s[%(__builtin__)r]['$dict'];
++      %(namestack)s = [%(builtin)s['_builtin_object_'], %(globals)s];""" % jsvars)

        if jsvars['module_name'] != jsvars['__builtin__']:
            self.add_lines("""\
++      %(module)s['__class__'] = %(builtin)s['module'];
++      %(module)s['$new'] = %(builtin)s['$new'];
++      $name = %(module)s['$new'](%(builtin)s['str'], $name);
++      %(globals)s['__doc__'] = %(None)s = %(builtin)s['None'];
++      %(globals)s['__name__'] = $name;""" % jsvars)
            if os.path.basename(self.srcfile) == '__init__.py':
                self.add_lines("""\
++      %(globals)s['__package__'] = $name;""" % jsvars)
        jsvars.update(locals())

        if len(node.children) > 0:
            # Initialize the short names and the constants etc.
            #
            self.add_lines("""\
++      %(locals)s = %(globals)s,
++      %(funcbase)s = %(globals)s,
++      %(globals)s['__builtins__'] = %(module_store)s[%(__builtin__)r]
++      %(track)s['module'] = $name;""" % jsvars)
            if jsvars['module_name'] != jsvars['__builtin__']:
                # Add builtins to the module object _and_ the globals. On 
                # deletion of a global, the builtin (if any) has to be 
                # copied back from module to global.
                # TODO: restrict the number of 'copied' builtins
                self.add_lines("""\
++      init_short_names$();
++      init_constants$();
++      for (var name in %(namestack)s[0]) {
+++         %(globals)s[name] = %(module_store)s[%(module_name)r][name] = %(namestack)s[0][name];
++      }
++      %(globals)s['__name__'] = %(fcall)s(%(module)s, null, %(builtin)s['str'], null, $name);\
""" % jsvars)

        self.indent(2)

        # Now the module content
        for child in node.children:
            self.dispatch(child)

        # Close the module creation
        self.dedent(2)
        self.assert_dedent(self.indent_level, 0)
        self.add_lines("""\
++      return %(module)s;
+   }
};
var %(globals)s = %(module_store)s[%(module_name)r]['$dict'];""" % jsvars)
        if len(node.children) > 0:
            # Declare short names for builtins
            self.add_lines("""\
var %(namestack)s, %(locals)s, %(funcbase)s, %(builtin)s, %(fcall)s, %(fcallext)s, %(mcall)s, %(mcallext)s, %(booljs)s,
    %(getattr)s, %(setattr)s, %(getitem)s, %(None)s, %(int)s, %(bool)s, %(True)s, %(False)s, %(str)s,
    %(constants)s = {};

function init_short_names$(silent) {
+   var builtin = %(builtin)s;
+   try {
++      %(fcall)s = builtin['fcall'];
++      %(fcallext)s = builtin['fcallext'];
++      %(mcall)s = builtin['mcall'];
++      %(mcallext)s = builtin['mcallext'];
++      %(booljs)s = builtin['B$booljs'];
++      %(getattr)s = builtin['getattr'];
++      %(setattr)s = builtin['setattr'];
++      %(getitem)s = 'getitem';
++      %(None)s = builtin['None'];
++      %(int)s = builtin['int'];
++      %(bool)s = builtin['B$bool'];
++      %(True)s = builtin['True'];
++      %(False)s = builtin['False'];
++      %(str)s = builtin['B$str'];
+   } catch (e) {
++      if (silent !== true) {
+++         throw e;
++      }
+   }
};

function init_constants$(silent) {
+   var builtin = %(builtin)s;
+   try {
""" % jsvars)
            # Add constants: int
            for name, value in sorted([(v, k) for k,v in self.const_int.iteritems()]):
                if name is not None:
                    v = abs(int(value))
                    if v > (1 << 30):
                        value = "%s(%r)" % (jsvars['str'], value)
                    jsvars['value'] = value
                    jsvars['name'] = name
                    self.add_lines("""\
++%(name)s = %(fcall)s(%(module)s, null, builtin['int'], null, %(value)s);\
""" % jsvars)
            # Add constants: long
            for name, value in sorted([(v, k) for k,v in self.const_long.iteritems()]):
                if name is not None:
                    v = abs(int(value))
                    if v > (1 << 30):
                        value = "%s(%r)" % (jsvars['str'], value)
                    jsvars['value'] = value
                    jsvars['name'] = name
                    self.add_lines("""\
++%(name)s = %(fcall)s(%(module)s, null, builtin['long'], null, %(value)s);\
""" % jsvars)
            # Add constants: float
            for name, value in sorted([(v, k) for k,v in self.const_float.iteritems()]):
                if name is not None:
                    jsvars['value'] = value
                    jsvars['name'] = name
                    self.add_lines("""\
++%(name)s = %(fcall)s(%(module)s, null, builtin['float'], null, %(value)s);\
""" % jsvars)
            # Add constants: str
            for name, value in sorted([(v,k) for k,v in self.const_str.iteritems()]):
                value = "'%s'" % re_js_string_escape.sub(self.substitute_js_chars, value)
                if isinstance(value, unicode):
                    value = value.encode('ascii', 'xmlcharrefreplace')
                if name is not None:
                    jsvars['value'] = value
                    jsvars['name'] = name
                    self.add_lines("""\
++%(name)s = %(str)s(%(value)s);\
""" % jsvars)
            self.add_lines("""\
+   } catch (e) {
++      if (silent !== true) {
+++         throw e;
++      }
+   }
};""" % jsvars)
        self.add_lines("""\
})();
/* end module: %(module_name)s */
""" % jsvars)
        pyjs_deps = self.imported_modules.keys()
        if pyjs_deps:
            pyjs_deps.sort()
            jsvars.update(pyjs_deps=pyjs_deps)
            self.add_lines("""\
/*
PYJS_DEPS: %(pyjs_deps)r
*/
""" % jsvars)
        pyjs_js = self.imported_js.keys()
        if pyjs_js:
            pyjs_js.sort()
            jsvars.update(pyjs_js=pyjs_js)
            self.add_lines("""\
/*
PYJS_JS: %(pyjs_js)r
*/
""" % jsvars)
dataset/ETHPy150Open anandology/pyjamas/pyjs/src/pyjs/translator_dict.py/Translator.node_file_input/original