diff options
-rwxr-xr-x | builder.py | 16 | ||||
-rwxr-xr-x | interpreter.py | 2 | ||||
-rwxr-xr-x | parser.py | 6 | ||||
-rwxr-xr-x | shellgenerator.py | 1 | ||||
-rw-r--r-- | test cases/1 trivial/builder.txt | 2 |
5 files changed, 23 insertions, 4 deletions
@@ -17,7 +17,9 @@ from optparse import OptionParser import sys, stat import os.path -import environment +import environment, interpreter +import shellgenerator +from interpreter import InvalidCode parser = OptionParser() @@ -60,6 +62,16 @@ class Builder(): if self.has_builder_file(ndir2): return (ndir2, ndir1) raise RuntimeError('Neither directory contains a builder file %s.' % Builder.builder_filename) + + def generate(self): + code = open(os.path.join(self.source_dir, Builder.builder_filename)).read() + if len(code.strip()) == 0: + raise interpreter.InvalidCode('Builder file is empty.') + assert(isinstance(code, str)) + env = environment.Environment(self.source_dir, self.build_dir) + intr = interpreter.Interpreter(code) + g = shellgenerator.ShellGenerator(intr, env) + g.generate() if __name__ == '__main__': (options, args) = parser.parse_args(sys.argv) @@ -74,3 +86,5 @@ if __name__ == '__main__': builder = Builder(dir1, dir2, options) print ('Source dir: ' + builder.source_dir) print ('Build dir: ' + builder.build_dir) + builder.generate() + diff --git a/interpreter.py b/interpreter.py index 1cd5ad5..e35c203 100755 --- a/interpreter.py +++ b/interpreter.py @@ -124,7 +124,7 @@ class Interpreter(): if self.project is not None: raise InvalidCode('Second call to project() on line %d.' % node.lineno()) self.project = args[0] - print("Project name is %s." % self.project) + print('Project name is "%s".' % self.project) def func_message(self, node, args): self.validate_arguments(args, 1, [str]) @@ -125,7 +125,11 @@ def p_args_none(t): t[0] = nodes.Arguments(t.lineno(0)) def p_error(t): - print('Parser errored out at: ' + t.value) + if t is None: + txt = 'NONE' + else: + txt = t.value + print('Parser errored out at: ' + txt) def test_lexer(): s = """hello = (something) # this = (that) diff --git a/shellgenerator.py b/shellgenerator.py index b74ad9b..92f1e05 100755 --- a/shellgenerator.py +++ b/shellgenerator.py @@ -19,7 +19,6 @@ import os, stat class ShellGenerator(): def __init__(self, interpreter, environment): - self.code = code self.environment = environment self.interpreter = interpreter self.build_filename = 'compile.sh' diff --git a/test cases/1 trivial/builder.txt b/test cases/1 trivial/builder.txt index e69de29..a499cf7 100644 --- a/test cases/1 trivial/builder.txt +++ b/test cases/1 trivial/builder.txt @@ -0,0 +1,2 @@ +project('trivial test') + |