11 releases (5 breaking)
new 0.5.0 | Jan 10, 2025 |
---|---|
0.4.0 | Nov 4, 2024 |
0.3.0 | Oct 30, 2024 |
0.2.3 | Sep 6, 2024 |
0.0.1 | May 11, 2024 |
#198 in Text editors
Used in rigz
115KB
3K
SLoC
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
- Better error messages
- Support functions are lambda arguments
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
Dependencies
~6–14MB
~144K SLoC