IBPCI is a simple interpreter made to be used by students and teachers to develop and practice pseudocode in IB CS program. It is not an ideal replication of the paper version as it maintains the syntax but it has more constraints than its paper counterpart. (see the wiki for details)
You need a C++14 compiler and optionally cmake.
mkdir build
cd build
cmake ..
make
g++ -o ibpci -std=c++14 src/*.cpp
- code execution - IBPCC can execute pseudocode, see the wiki for details on grammar and scoping
- error detection - IBPCC can detect and throw lexical, syntactic and run-time errors
- outputting difference phases of interpretation - IBPCC allows for peeking under its hood hopefully to some educational merit:
- token stream - output of lexical analysis
- abstract syntax tree (AST) - output of parser
- call stack - used during execution
IBPCI is in its very early infancy plus a first time building an interpreter for me, so it is riddled with errors. Because I am making this project as my Internal Assessment for IB Computer Science, I cannot open it for other contributors, but as soon as this project gets assessed, I welcome the interested. Other goal than making a working interpreter is to make an unofficial standard. All of the grammar is based on two PDF's that only describe basic use cases. I would like this project to be a starting point for a unofficial standard that will describe all features of the language in detail and evolve with the IB CS curriculum.
-
- getting rid of all bugs
- passing arguments by reference
- consistent error messages
- syntax error output correct grammar
- binary packages for Linux, Windows and MacOS
-
I would like for IBPCC to become a back-end for a bigger suite of educational tools used for teaching basic computer science concepts. Here are some of the rough ideas for features and development:
- GUI build using Qt
- text editor with syntax highlighting
- live error detection
- boolean algebra calculator
- mini interpreter computing and displaying results
- available as binary package on every platform