-
- Downloads
There was an error fetching the commit references. Please try again later.
Implement Inko's parser in Inko
The parser is an LL(1) recursive descent parser. While the Ruby parser was used as a reference, it is not a 1:1 port. As part of porting the parser to Inko, several syntax changes were made: 1. "where" on methods is not supported by the Inko parser. When we start using the parser we will move "where" to traits. 2. The comments "#!" and "##" are replaced with just "#". This makes the lexer and parser internals easier, and removes the need for having to remember three different comment types. 3. Mutable rest arguments are supported in the Inko parser using "mut *NAME", instead of "* mut NAME". Using the parser is straightforward: import std::compiler::parser::Parser let parser = Parser.new(input: '10 + 2', file: 'test.inko') try! parser.parse The AST nodes are located in modules under `std::compiler::ast`. For example, integer literals are in `std::compiler::ast::literals`. For now there is some minor duplication across some of the AST nodes. For example, the types of methods (MethodDefinition) and required methods (RequiredMethodDefinition) are similar. When we start implementing the compiler we may change this around a bit, or perhaps split the AST nodes into more separate types. Fixes https://gitlab.com/inko-lang/inko/issues/172
Showing
- compiler/lib/inkoc/parser.rb 1 addition, 1 deletioncompiler/lib/inkoc/parser.rb
- compiler/lib/inkoc/pass/validate_throw.rb 1 addition, 0 deletionscompiler/lib/inkoc/pass/validate_throw.rb
- runtime/src/core/bootstrap.inko 15 additions, 15 deletionsruntime/src/core/bootstrap.inko
- runtime/src/std/ansi.inko 25 additions, 25 deletionsruntime/src/std/ansi.inko
- runtime/src/std/array.inko 219 additions, 223 deletionsruntime/src/std/array.inko
- runtime/src/std/array_iter.inko 18 additions, 18 deletionsruntime/src/std/array_iter.inko
- runtime/src/std/block.inko 193 additions, 201 deletionsruntime/src/std/block.inko
- runtime/src/std/boolean.inko 20 additions, 20 deletionsruntime/src/std/boolean.inko
- runtime/src/std/byte_array.inko 262 additions, 269 deletionsruntime/src/std/byte_array.inko
- runtime/src/std/compiler/ast/blocks.inko 403 additions, 0 deletionsruntime/src/std/compiler/ast/blocks.inko
- runtime/src/std/compiler/ast/comments.inko 28 additions, 0 deletionsruntime/src/std/compiler/ast/comments.inko
- runtime/src/std/compiler/ast/control_flow.inko 126 additions, 0 deletionsruntime/src/std/compiler/ast/control_flow.inko
- runtime/src/std/compiler/ast/expressions.inko 28 additions, 0 deletionsruntime/src/std/compiler/ast/expressions.inko
- runtime/src/std/compiler/ast/imports.inko 113 additions, 0 deletionsruntime/src/std/compiler/ast/imports.inko
- runtime/src/std/compiler/ast/literals.inko 87 additions, 0 deletionsruntime/src/std/compiler/ast/literals.inko
- runtime/src/std/compiler/ast/node.inko 8 additions, 0 deletionsruntime/src/std/compiler/ast/node.inko
- runtime/src/std/compiler/ast/objects.inko 243 additions, 0 deletionsruntime/src/std/compiler/ast/objects.inko
- runtime/src/std/compiler/ast/operators.inko 63 additions, 0 deletionsruntime/src/std/compiler/ast/operators.inko
- runtime/src/std/compiler/ast/send.inko 96 additions, 0 deletionsruntime/src/std/compiler/ast/send.inko
- runtime/src/std/compiler/ast/type_parameter.inko 42 additions, 0 deletionsruntime/src/std/compiler/ast/type_parameter.inko
runtime/src/std/compiler/ast/blocks.inko
0 → 100644
runtime/src/std/compiler/ast/comments.inko
0 → 100644
runtime/src/std/compiler/ast/imports.inko
0 → 100644
runtime/src/std/compiler/ast/literals.inko
0 → 100644
runtime/src/std/compiler/ast/node.inko
0 → 100644
runtime/src/std/compiler/ast/objects.inko
0 → 100644
runtime/src/std/compiler/ast/operators.inko
0 → 100644
runtime/src/std/compiler/ast/send.inko
0 → 100644
Please register or sign in to comment