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).

![No comments [No comments]](/nb/assets/no-comments.png)