Manual for the compiler written in Python :
$python sccdc.py --help
usage: sccdc.py [-h] [-o OUTPUT] [-v VERBOSE] [-p PROTOCOL] [-l LANGUAGE]
input
positional arguments:
input The path to the XML file to be compiled.
optional arguments:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
The path to the generated code. Defaults to the same
name as the input file but with matching extension.
-v VERBOSE, --verbose VERBOSE
2 = all output; 1 = only warnings and errors; 0 = only
errors; -1 = no output. Defaults to 2.
-p PLATFORM, --platform PLATFORM
Let the compiled code run on top of threads or
gameloop. The default is threads.
-l LANGUAGE, --language LANGUAGE
Target language, either "csharp" or "python". Defaults
to the latter.
For a detailed explanation on the formalism's syntax please consult the latest report here.
Executing the tests written for the Python compiler and generated Python code can be done by running tests.py
. This file imports the test cases from the test_files
folder.
In the tanks
folder a tanks game can be found for which both the input handling of the player-controlled tank, and the behaviour of the NPC tank are modelled using the SCCD formalism. For this specific example the commands to compile the models are as follows :
python sccdc.py tanks/player_controller.xml -o tanks/player_controller.py -p gameloop
python sccdc.py tanks/ai_controller.xml -o tanks/ai_controller.py -p gameloop
The resulting files player_controller.py
and ai_controller.py
(and any other compiled code) depend on the runtime files found in python_runtime
, so this folder should either be put in PYTHONPATH
or directly in the tanks
directory (you can use a symbolic link).