| | 10 | * CIVL debugger |
| | 11 | * Able to manually step through code choosing which transitions to take. |
| | 12 | * Breakpoints |
| | 13 | * Some statement that you can insert that, when in debugging mode, asks which transition to take at that point. `$ask;` |
| | 14 | * At any stopped point in the code be able to observe the current execution path and state. |
| | 15 | * Similarly, be able to evaluate expressions at any point from any specific process. |
| | 16 | * Be able to store high memory items into the hard drive to save memory while executing. |
| | 17 | * `-showProgram` should be able to be directly executed by CIVL. |
| | 18 | * Be able to specify which transformations we apply when executing `-showProgram` |
| | 19 | * If `-showProgram` enabled and we get an error, then print AST before exiting. |
| | 20 | * Be able to specify hardware environment to verify under like ints are 32 bits, floats are 32 bits, big-endian vs little-endian, etc. |
| | 25 | * The ability to associate static traits to ASTs like "no for loops" or "side effect free", etc. |
| | 26 | * Be able to easily loop over AST nodes of a certain type (in program order). Maybe just support visitor pattern. |
| | 27 | * CIVL-C language and library must be completely well-defined and documented. |
| | 28 | * CIVL-IR must be completely well-defined and documented. |
| | 29 | * Break up Evaluator by removing big switch: |
| | 30 | * Have "ExecutableExpression" and "ExecutableStatement"-type classes which have an evaluate method and extend the syntactic Expression and Statement classes. |
| | 31 | * Components: |
| | 32 | * Util - uses nothing |
| | 33 | * SARL - uses Util |
| | 34 | * ABC - uses SARL, Util |
| | 35 | * MC - uses ABC, SARL, Util |