2 ms·
I'm referring to the semicolon insertion described in the README as, "When a newline is seen after the following token kind, a semicolon is inserted". > Proced
by cxr 1y ago
I'm referring to the semicolon insertion described in the README as, "When a newline is seen after the following token kind, a semicolon is inserted".
> 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/085b7b5bcf7f0607691e575cd473dd5800b9e6be/src/parser.odin#L222 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.
- gingerBill 1y agoI know Oberon does return things from certain procedures but I might not. I know the grammar allows for it but again, this is subject to change. 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.