def initialize(): global _browser # Initialize reusable parts of the browser infrastructure. tmlParser = parser_generator.makeParser(grammar_parser.parseFile(tmlGrm)) print >> sys.stderr, 'TML parser loaded.' cs164Parser = parser_generator.makeParser( grammar_parser.parseFile(cs164Grm)) print >> sys.stderr, 'CS164 parser loaded.' # TODO: Currently, the interpreter "object" is the module itself. Later, # expose an API for constructing interpreters. renderer = Renderer(interpreter) print >> sys.stderr, 'Renderer initialized.' _browser = Browser(tmlParser, cs164Parser, interpreter, renderer) interpreter.ExecGlobal(cs164Parser.parse(open(cs164Lib).read())) print >> sys.stderr, 'Browser initialized.' print >> sys.stderr, 'Loading the layout engine modules...' # Load the layout engine, which is implemented in 164. dependencies = [ 'object', 'node', 'window', 'box', 'hbox', 'vbox', 'link', 'word', 'img', 'script', 'rx', 'bquery', 'layout', 'browser' ] for dependency in dependencies: print >> sys.stderr, '\tloading ' + dependency ast = cs164Parser.parse( open('./browser/{0}.164'.format(dependency)).read()) interpreter.ExecGlobal(ast) print >> sys.stderr, 'Done.'
#!/usr/bin/env python import sys import getopt, parser_generator, grammar_parser, interpreter if __name__ == '__main__': if len(sys.argv) != 2: print "Please give one argument, the input filename." sys.exit(1) cs164_grammar_file = './cs164b.grm' cs164_input_file = sys.argv[1] cs164_library_file = './library.164' cs164parser = parser_generator.makeParser( grammar_parser.parse(open(cs164_grammar_file).read())) # Load library into the cs164interpreter library_ast = cs164parser.parse(open(cs164_library_file).read()) interpreter.ExecGlobal(library_ast) # Load program into the cs164interpreter input_ast = cs164parser.parse(open(cs164_input_file).read()) interpreter.ExecGlobal(input_ast)
if __name__ == '__main__': server_url = 'https://cs164parser.appspot.com/parser' server_grammar = 'cs164b.grm' library = 'library.164' parser = OptionParser(usage='usage: %prog [options] files...') parser.add_option('--no-library', dest='nolib', help=('do not automatically load the standard library'), action="store_true", default=False) options, args = parser.parse_args() def load(filelist): srcs = [] for filename in filelist: with open(filename) as f: srcs.append(f.read()) result = rparse.remote_parse(srcs, None, server_grammar, server_url) return [result[src] for src in srcs] if result else [] if not args: print "No file given" sys.exit(0) asts = load(args if options.nolib else [library] + args) if not None in asts: for ast in asts: interpreter.ExecGlobal(ast)