I am at the stage with my MUSS restoration that I can process the Flocoder FLIP source code with my own implementation of FLIP written in Flex and Bison.
My MUSL compiler can’t process all the Flocoder source files yet though, for a couple of reasons.
The first is that some of the source files appear to have too many END statements. I need to look into this to see if my understanding of the grammar is incorrect. However, these problems occur in files that I don’t think I need in order to re-create FLIP, so I will defer investigation. I may hit problems again when I try to build the MUSL compiler sources.
The second is that there are some elements of the syntax that are context-sensitive and can’t be parsed with Bison without some additional work. There are actually a couple of areas where this does not currently work. First, one of the Flocoder modules declares both a type and variable with the same name. The second is where addresses of procedures are declared, these create a syntax ambiguity which needs additional semantic processing. These problems are solvable, but I have not looked at them yet.
My next steps are to start generating C code from MUSL, but I think that to do it correctly I am going to have to resolve the context problems mentioned above.