Since I've been writing the parser for H2D2 - the continuation of my work on DALIS, I thought
that it might be useful to see the syntax trees
that are being generated. So I found a
nifty tool called phpSyntaxTree
which is a website that will draw a graphical version of a tree from bracketed notation.
So I added some code to H2D2 which will output the syntax tree created by the parser in bracketed
notation, and now I can paste the resulting text into phpSyntaxTree and see what the results look like.
Whilst the H2D2 language doesn't have much of a syntax yet, I have been able to parse things like
this example code:
an = 99
mynum = 88
PRINT 1 + 2*3
IF 1 PRINT 1 PRINT 0
That program tests the majority of things that I have written so far, simple things like branching, expression parsing and assigning numeric variables. This is how that program comes out:
You can see the difference between the two expressions, one with brackets and the other without, and when I run
the program, the first result is 7 and the second result is 9, so it seems to be working fine. When H2D2 programs
are executed I'm using a non-recursive algorithm, which means that the code can be frozen at any point and then
resumed - even if the code was part way through evaluating an expression there's no problem in carrying on exactly
where the code was paused. So far I've only tested all this in Pelles C on Windows, but I will put a quick
makefile together soon so that I can compile it with GCC (on linux), I want to keep the C code for H2D2 as portable as I can. The next thing that I'm going to try and build is a loop, which is kinda important.