### O ### This is the main O project manager and compiler. At the moment it just puts together compiler components, but later on it will provide more advanced functionality such as testing, package management, and build pipeline tools. ### USAGE The O compiler uses a syntax similar to that of pacman - Arch's package manager. The general command format is this: o -h|--help o -<TASK> [OPTIONS...] Options may be provided in either short or long form. Some take an argument. Short form arguments are a single character and are prefixed with a single '-', where long form arguments may be multiple characters and are prefixed with '--'. Short form arguments may be provided in groups with multiple characters together with a single '-' at the start of them. The task at the start is a single-character option and will have a number of task-specific options immediately after it. TASKS -B : Build the project -I : Show project information OPTIONS -l <level> , --log <level> : Set the logging level. Possible values are: silent : No logging at all error : Only log errors warn : Default, log errors and warnings info : Log errors, warnings, and extra information verbose : Log verbose messages dbug : Log excessively lexer : Include internal logging from the lexer parser : Include internal logging from the parser semantic : Include internal logging from the semantic analyser -p <path> , --project <path> : Set the path of the project. By default, the compiler will search upwards from the current working directory until it finds a file with a '.op' (O project) extension. If provided, the compiler will use the specified file as the project file if the path is a file, or it will look for a '.op' file in the provided directory if the path is a directory. ### BUILDING First satisfy dependencies. As the compiler is written in D, you will need the 'dmd' compiler and 'libphobos', D's standard library. Most distros will have a 'dlang' or similarly-named package in their repositories that will provide both of these. You will also need 'make', which comes pre-installed on just about every distro. Note that - at the moment - the compiler targets Linux *only*. It *should* run on other UNIX-family OSs such as BSDs, but this is not guaranteed. Multi-platform support is a goal though. Once you have the dependencies satisfied, it's very easy to build: ./make.sh Tidy up: ./make.sh clean Build and run with some sane default (read: "the arguments I'm using to test the bit I'm working on") development arguments for lots of logging to build the test project: ./make.sh test Internally, the script just generates a makefile with all the inter-file dependencies resolved and then pushes it through make.