And as I develop this, I'll tweak it more so that people can actually understand without having to know the full histories of Pascals or Oberons or whatever.
(Your grammar is missing a definition for proc_call, by the way.)
Also this isn't JS-style ASI technically speaking, and it won't have any of the problems either. The syntax for this language is different enough that it won't be a problem. Procedures don't even return things.
> Procedures don't even return things
Oberon allows return values from functions (which are still declared with the PROCEDURE keyword). It looks like the same is true in Titania:
proc_body = decl_sequence ["begin" stmt_sequence] ["return" expr] "end".
<https://github.com/gingerBill/titania/blob/085b7b5bcf7f06076...>I'm curious what you're going to do with the code generator. Parsers are easy and can be completed in a day or two. Even with a reference implementation, however, it's the backend that's a slog.
As for code generation, direct machine code to a Windows AMD64 PE executable.
Backend should not be that difficult because I am not working on anything complex nor optimizing. This won't be an optimizing compiler backend course.