diff options
author | Ian Johnson <ian.johnson@appliedlanguage.com> | 2013-05-07 18:26:13 +0400 |
---|---|---|
committer | Ian Johnson <ian.johnson@appliedlanguage.com> | 2013-05-07 18:26:13 +0400 |
commit | 139baeffad90c29a1c4a8c3a2bb8bfea364d8ddd (patch) | |
tree | fb472a52731b0206e9934e1df8dce83136cc6994 | |
parent | 3defd7e03d5ac35af0354ddb4fbc4214b3bfbbef (diff) |
Add usage and gave the compiler executable a tidy up.
-rwxr-xr-x | src/pcl/pclc.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/pcl/pclc.py b/src/pcl/pclc.py index 8efef80..b0d1197 100755 --- a/src/pcl/pclc.py +++ b/src/pcl/pclc.py @@ -23,6 +23,13 @@ from visitors.executor_visitor import ExecutorVisitor if __name__ == '__main__': + # Check we've got at least one command line argument + if len(sys.argv) < 2: + print "Usage:" + print "\t%s [PCL filename]" % os.path.basename(sys.argv[0]) + print + sys.exit(2) + # Add the PCL extension is one is missing basename = os.path.basename(sys.argv[1]) basename_bits = basename.split(".") @@ -35,10 +42,13 @@ if __name__ == '__main__': if os.path.isfile(pcl_filename) is False: print "ERROR: Cannot find file %s" % pcl_filename sys.exit(1) + + # Parse... ast = parse_component(pcl_filename) if not ast: sys.exit(1) + # Resolve... resolver = Resolver(os.getenv("PCL_IMPORT_PATH", ".")) resolver.resolve(ast) for warning in resolver.get_warnings(): @@ -47,8 +57,13 @@ if __name__ == '__main__': for error in resolver.get_errors(): print error sys.exit(1) - else: - executor = ExecutorVisitor(basename_bits[0]) + + # Execute. + executor = ExecutorVisitor(basename_bits[0]) + try: ast.accept(executor) + except Exception as ex: + print "ERROR: Code generation failed: %s" % ex + sys.exit(1) sys.exit(0) |