aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuilder.py16
-rwxr-xr-xinterpreter.py2
-rwxr-xr-xparser.py6
-rwxr-xr-xshellgenerator.py1
-rw-r--r--test cases/1 trivial/builder.txt2
5 files changed, 23 insertions, 4 deletions
diff --git a/builder.py b/builder.py
index 2e21527..b32518c 100755
--- a/builder.py
+++ b/builder.py
@@ -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])
diff --git a/parser.py b/parser.py
index b376dbf..1d59800 100755
--- a/parser.py
+++ b/parser.py
@@ -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')
+