With last week’s progress, I am quite happy by the way things are going. I implemented partial support for compartments and species (1). Once the AST code problems are out of the way, I will be able to finish support for compartments and species.
I finished writing the function(2) to select an element from an array but for one small hiccup. The code written to calculate the Value that an AST represents does not actually calculate the values at compile time. This is the LLVM optimized IR that will be used at runtime. So the Value* received from calling ASTNodeCodeGen::codeGen does not contain a value that can be used. But for accessing an array, say Y-9 = X-0, we require the value of the dimension which is calculated with the help of the math present in the index which references the dimension. Since we cannot get the value of the dimension, we will have to rewrite the whole AST calculation in terms of C++ data structures(shouldn’t be too hard) so that we can precompute(simplify) the AST’s beforehand and when we reach the actual AST codeGen it would be much simpler to return the values.