A NOTE ON MULTIPLE KEYWORD LEXICONS
This is to clarify and define what this actually amounts too, there seems to be some misunderstandings about this so I'll clear it up once and for all.
The grammar - by design - does not reserve keywords, it allows an identifier to be a keyword. It does this not to facilitate obfuscation but to
guarantee that a newly added keyword in a future version of the language will always be
100% backward compatible, that's one of the language's design goals, even if a newly added keyword has been used as an identifier in earlier source code by some developer, the code will compile fine, guaranteed.
During testing and conversation elsewhere outside of this forum, I realized that this absence of reserved words meant one could also select the keywords on a per-human-language basis and because no keyword is reserved the code would also compile fine, even if a developer had unwittingly used a keyword from some other language in their code. For example if an English developer had used "retour" as a variable name or function name then the fact that that is the French keyword for "return" would not matter even if we'd written the code using French keywords.
So the ability to be agnostic to the spelling of the keywords already, in and of itself, meant we could use keywords in any language we wanted to (if the grammar was updated to allow it) and the code would always compile, guaranteed, 100%.
The ability to use any cultures keyword spelling with zero impact on the generated code was already there, just "waiting in the wings". So I expanded the grammar (and therefore the lexer and parser) and created a proof of concept and it worked wonderfully.
So I decided to support this but make it "opt in". The system
defaults to English, it behaves like any English based programming language. But if one
wants to write code with some other language's keywords one can, all they need do is add a compiler directive to the source file (%lexicon("fr"); for example) and use the French keywords. Or one can specify the lexicon at compile time. Unless one does this the language behaves like a conventional English based language.
A source file can only use a
single lexicon, one cannot mix French/Hungarian/English for example within a single source file, the lexicon language applies to an
entire source file.
Because the compiler tools and libraries are reusable, it is - in principle - easy to add this support to an IDE like Visual Studio Code for example. It would be straightforward to set that up so that it always renders, displays any source file in some preferred language, even though it might be written in some other. Likewise it would be straightforward to have the system always save files in some preferred language too.
A user, teacher or student who wanted to work in say say Danish or just discuss some existing code in a class, using Danish has that
option, they could easily look at a codebase coded in English and see
only Danish keywords, if they wanted to.
It is not for me to tell people how to work, what language they must use for writing code when a native option is available, it is not for me to "police" how a person or a team works, a programming language should not attempt to impose control over how people think and work.
All programming languages and environments can be used sensibly and intelligently or they can be abused, but that's not my call, I don't decide what works for someone else, my fears and insecurities are not theirs, if something isn't suitable for some work or project then don't use it.