diff --git a/README.md b/README.md new file mode 100644 index 0000000..880684d --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# c2logic + +Compiles C code to Mindustry logic. + +# Usage + +`python3 -m c2logic filename -O optimization_level` + +where `filename` is a string and `optimization_level` is an int + +See [examples](./examples) for API sample usage. diff --git a/a.out b/a.out deleted file mode 100755 index 4f2f6cb..0000000 Binary files a/a.out and /dev/null differ diff --git a/c2logic/compiler.py b/c2logic/compiler.py index 3c1ad0b..360c302 100644 --- a/c2logic/compiler.py +++ b/c2logic/compiler.py @@ -41,7 +41,6 @@ class Compiler(c_ast.NodeVisitor): self.loop_start = None self.cond_jump_offset = None ast = parse_file(filename, use_cpp=True, cpp_args=["-I", "include/"]) - print(ast) self.visit(ast) #TODO actually handle functions properly out = [] @@ -93,8 +92,6 @@ class Compiler(c_ast.NodeVisitor): #in case for loop is the last thing in a function to ensure the jump target is valid #TODO avoid this when for loop isn't last thing self.push(Noop()) - - print(self.curr_function) self.functions.append(self.curr_function) def visit_Decl(self, node): @@ -160,7 +157,6 @@ class Compiler(c_ast.NodeVisitor): self.loop_start = len(self.curr_function.instructions) self.visit(node.cond) # jump over loop body when cond is false - print(self.peek()) if isinstance(self.peek(), BinaryOp): self.push(RelativeJump(None, JumpCondition.from_binaryop(self.pop()))) else: @@ -302,7 +298,12 @@ class Compiler(c_ast.NodeVisitor): raise NotImplementedError(node) def main(): - print(Compiler(opt_level=1).compile("examples/test.c")) + import argparse + parser = argparse.ArgumentParser() + parser.add_argument("file") + parser.add_argument("-O", "--optimization-level", type=int, default=1) + args = parser.parse_args() + print(Compiler(args.optimization_level).compile(args.file)) if __name__ == "__main__": main() \ No newline at end of file diff --git a/examples/test2.c b/examples/control_flow.c similarity index 100% rename from examples/test2.c rename to examples/control_flow.c diff --git a/examples/test.c b/examples/funcs.c similarity index 100% rename from examples/test.c rename to examples/funcs.c diff --git a/setup.py b/setup.py index 0c1b1fc..8bd3318 100755 --- a/setup.py +++ b/setup.py @@ -4,10 +4,10 @@ with open("README.md", "r") as f: setuptools.setup( name="c2logic", version="0.1", - descripton="Compile c to mindustry logic.", + descripton="Compiles C code to mindustry logic.", long_description=long_description, long_description_content_type="text/markdown", - packages=["c2logic"], + packages=["c2logic"], license="MIT", author="SuperStormer", url="https://github.com/SuperStormer/c2logic",