Implement Inko's parser in Inko
The standard library should provide a parser for Inko's source code. This allows the compiler to use this parser, as well as allowing other future code to make use of it.
Inko's compiler will be written in Inko itself, requiring us to provide a parser in the standard library.
The parser will be a hand-written LL(1) recursive descent parser, just like the Ruby
compiler uses. The module this code is located in will be
The various AST types will be defined in the
std::compiler::ast module, since it
is expected that these types will take up quite a few lines of code.
As part of this work, we need to add syntax support for trait bounds, and drop
support for method bounds. This means that
def foo ... where T: X is not supported
by this parser.
Due to the lack of optimisations, the Inko parser will likely be quite a bit slower compared to the Ruby parser. This is something we can/will optimise in the future.