コード例 #1
0
ファイル: runtime.py プロジェクト: knd/BerkeleyEducation
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.'
コード例 #2
0
#!/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)
コード例 #3
0
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)