<D <M <Y
Y> M> D>

: The abstract syntax tree construction code is about to start working, I think. Programming in C or C++ is like building a watch with a million little gears. You build all these components and then you try to get all the gears to mesh together. I get sick of this very quickly. I'd much rather be building things with Legos. Metaphorical Legos, I mean. Or real Legos, for that matter.

I keep moving responsibility for the symbol table between the scanner and the parser. It was in the scanner, then I moved it to the parser, then I decided I could do it in the scanner after all, then I decided that I couldn't. I'm still fairly sure that I couldn't, because the parser doesn't know whether an identifier is part of, eg., a declaration (in which case it goes in the symbol table) or a statement (in which case it's an error if it's not already in the symbol table).

: I currently have 2218 errors in my code. This is a record. The 2218 errors were caused by the fact that I thought C had an "until" construct like Perl, and I put such a construct into my yacc file.

: I'm now ready to begin filling in my Check functions. This is (almost) where everyone else is. Good job, me.

: Dan is posting comments on Slashdot. I do not endorse this practice.

: Inscrutable: "not readily investigated, interpreted, or understood". I love this word (cf. Jake Berendes West Covina).

: A lot of semantic checking code has been written but it doesn't work yet. Same old story. Bleah.

The semantics of the language are defined primarily through test cases. Right now there are 33 test cases. The TA has a bounty on new test cases but no one is biting because a new test case means more semantics and therefore more work for everybody. Some of the test cases are really easy to make work and some of them are going to be nightmares.

The various array assignment cases (where you have to make sure that two arrays have the same dimensions, or that an array has a certain number of elements) and the function call case (enforcing the requirement that the number and types of arguments to a function correspond to the formal arguments to the function) look like the toughest ones.


Unless otherwise noted, all content licensed by Leonard Richardson
under a Creative Commons License.