rigz_runtime

Crates.iorigz_runtime
lib.rsrigz_runtime
version0.4.0
sourcesrc
created_at2024-05-11 02:58:50.129508
updated_at2024-11-04 20:10:02.509088
descriptionHandles parsing and converting rigz to its VM instructions (for syntax highlighting use tree-sitter-rigz instead)
homepage
repositoryhttps://gitlab.com/inapinch/rigz/crates/runtime
max_upload_size
id1236569
size95,323
(inapinch-io)

documentation

README

rigz_runtime

Handles parsing and converting rigz to its VM instructions.

Parser

This is an AST parser, but as soon as it has an element that would be in the AST that element is converted into VM instructions. Tokens and expressions are read from left to right, there is no operator precedence. This means that 1 + 2 * 3 is not equal to 3 * 2 + 1; the first is 9, (1 + 2) * 3, while the second is 7, (3 * 2) + 1.

TODO

  • update parser to support repl, may require VM updates as well

  • Better error messages

lifecycles

@on("event")
fn new_event(e) 
end

dispatch('event', {
    something: 32
})

@plan
fn foo
end

@apply
fn foo
end

[parse, run]
@plan = @after(@run)
@apply = @after(@plan, @confirm)
[parse, run, @plan, @confirm, @apply]

@plan
fn s3_bucket(name: string) 
end

@apply
fn s3_bucket(name: string) 
end

s3_bucket foo

polc

allow data.external {
    bin = "foo"
}

database migration

create_table foo, do |t|
    t.string bar 
    t.column baz, :number
    t.timestamps 
end

let a = $('cat file')

$```ruby


## todo
- support multiple parsers
    - default ignore precedence; 1 + 2 * 3 = 9
    - right recursive precedence; 1 + 2 * 3 = 7
    - pratt parser; 1 + 2 * 3 / 4 = 2.5
Commit count: 204

cargo fmt