Ecosyste.ms: OpenCollective
An open API service for software projects hosted on Open Collective.
github.com/evylang/evy
Learn programming ⚡️
https://github.com/evylang/evy
Add index and dot expression evaluation in evaluator, similar to binary
expression evaluation.
Rename local variable in evalBinaryExpr for consistency with new
evalIndexExpr: avoid variable s...
Change Array.Elements and Map.Order to pointer. This is another
preparatory step for proper arra...
Rework scoped Value updates such that instead of replacing the value in
the scope on assignment ...
Add missing early return on index expression parse error. This resulted
in a "dereferenced nil p...
Fix IndexExpression.Type() for indexed string, e.g. "abc"[1]. We
indiscriminately returned left....
Add map and array literals to evaluation. We should have done this a
while back. Oversight.
---...
344d2e1dde191e93a10a6bfa0bd726287ebf06b9 authored about 2 years ago by Julia Ogris <[email protected]>
Add expression evaluation for basic types, including arithmetic operations,
logical operations, ...
Add expression evaluation for basic types, including arithmetic
operations, logical operations, ...
Rename evalExpressions to evalExprList so that it more closely aligns
with the newly implemented...
Rename `PREFIX` to `UNARY` in precedence enum. This has been an oversight
when renaming prefix t...
Update parseAssignmentStatment for index and dot expression as assignment
target.
Invert composite type order, such that an array of number is now
[]num. This lines up with how G...
Implement Top Down Operator Precedence or Pratt parser, replacing the
existing but very limited ...
Implement break statement in parser and evaluator ensuring it is only
used inside a loop. Use sc...
Implement break statement in parser and evaluator ensuring it is only
used inside a loop. Use sc...
Refactor alwaysReturns to alwaysTerminates as a non-functional change
and pure rename. This is a...
Add containing block Node to scope. This is a preparatory step for break
statement parsing to en...
Fix while.AlwaysReturn() logic to always return false as a loop could
not be executing its body ...
Fix bare returns in evaluator as they accidentally got ignored and
didn't stop execution.
Fix CI setup for master build, such that PR deploy is only executed on
CI run triggered by PR ev...
Move firebase deployment and PR commenting machinery into separate
script as it is a bit verbose...
Move firebase deployment and PR commenting machinery into separate
script as it is a bit verbose...
Howl with an `@here` on Foxygoat slack when the master build fails.
We want to know about this a...
Add unused var check reporting an error if declared variable is never
used. This feature was yet...
Add unused var check reporting an error if declared variable is never
used. This feature was yet...
Fix location for unknown variable error message so that it actually
points to the column where t...
Rename validateVar to validateVarDecl as it is more accurate and less
confusing on revisit: vali...
Fix continuous deployment for master branch which broke with the recent
firebase deployment refa...
Replace firebase-deployment action by hand-crafted make targets. This
has been motivated by an a...
Replace firebase-deployment action by hand-crafted make targets. This has
been motivated by an a...
Upgrade firebase version in hope to unbreak CI. `make firebase-deploy`
to dev channel also faile...
Crank up the linting settings so that linter runs in stricter mode and
catches more errors, befo...
Harden return statements such that there is an error when there is
unreachable code after a retu...
Ensure functions with specified return type always return, print error
otherwise.
Add error message for unreachable code after `return` statement.
14a93094d01711cf0f9dc165447190ffc2de7619 authored over 2 years ago by Julia Ogris <[email protected]>
Ensure correct return type according to function signature, append error
otherwise.
Unify statement parsing for program and block - just a small refactor in
order to not repeat mys...
Implement while statement parsing and evaluation by reusing conditional
Block execution from If-...
Implement while statement parsing and evaluation. Reuse conditional
Block execution from If-stat...
Ensure the value of a `return` is propagated along with whether a
conditional block was executed...
Fix setting variable value in correct scope. The variable value needs to
be updated in the scope...
Intern basic parser types - Number, String, Bool, any - to make pointer
comparison trivial witho...
Add if statement parsing and evaluation - this is a pretty straight
forward PR, with only minor...
Add if statement evaluation to evaluator. Add bool constants TRUE, FALSE
for easier comparison. ...
Parse `if` statements into If AST node. While at it, abstract the way we
create block statements...
Update output for end of line for readability from `<end of line>` to
simply `end of line`. In t...
Update grammar to enforce at least one statement in blocks. This means
each function declaration...
Reorder productions from higher level: program, function declaration, if
statement, to single li...
Update grammar to enforce at least one statement in blocks. This means
each function declaration...
Add assignment parsing and assignment AST node. Extract parseAssignable
from parseTerm to reuse ...
Add assignment parsing and assignment AST node. Extract parseAssignable
from parseTerm to reuse ...
Add assignment evaluation by updating the scope. This is quite straight
forward, however once in...
Rework String() method for Node type Var, so that it works better in
errors messages in follow u...
Refactor builtins, such that parser package doesn't have any default
builtins other than for tes...
Fix typos in parser, changing `statment` to `statement`.
This merges the following commits:
* p...
c0ea256e57efefb57f29db2b3cf5e1ae2e380544 authored over 2 years ago by Julia Ogris <[email protected]>
Implement return statements in ast, parser and evaluator. With this we
can more carefully test v...
Add return statement parsing. Add Return node to the AST in preparation
for function evaluation.
Implement function evaluation, including return values. For this we need
to implement block eval...
Reorder EvalFunc parameters in evaluator such that the scope parameter
always comes first. Scope...
Export error formatting methods in parser and use them in evaluator:
don't evaluate program that...
Add `move` and `line` to builtins. Add `\n` to print function.
Restructure Builtins such that we...
Refactor node field nType to T in all nodes of ast.go. This will be
necessary to expose Type T w...
Refactor scope in parser and evaluator for both to be private. Rename
`newEnclosedScope` to `new...
Add scoped typed analysis to declarations, ensuring that variables or
parameters do not get rede...
Add scoped typed analysis to declarations, ensuring that variables or
parameters do not get rede...
Factor out parseError function in tests as it is repeated throughout the
test code in variations...
Improve test coverage and error messages, where error messages refer to evy
parse errors.
This ...
4d29806d5eed0eadd72e3da18542ea6dfac04d94 authored over 2 years ago by Julia Ogris <[email protected]>
Improve test coverage and error messages, where error messages refer
to evy parse errors.
Signe...
39489550fe2a6a211655a326d2f7b81a4073fe9a authored over 2 years ago by Julia Ogris <[email protected]>
Implement composite literal - array and map - parsing. Add insertion
order field to map for dete...
Implement composite literal - array and map - parsing. Add insertion
order field to map for dete...
Refactor parser.go into:
- parser.go
- parser_literal.go
- parser_type.go
`parser.go` is becom...
f20d2891a3b39c130d285fc4f2378f9bfce7d7bd authored over 2 years ago by Julia Ogris <[email protected]>
Initialise parser and evaluator packages and wire them through all the
way to the frontend. Vari...
Initialise parser and evaluator packages and wire them through all the
way to the frontend. Vari...
This doc update is a result of a bodged merge to master and has already
been reviewed previously...
This doc update is a result of a bodged merge to master and has already
been reviewed previously...
Fix CI for `make firebase-public`. The `firebase-public` target depends
on the `tiny` target whi...
Fix CI for `make firebase-public`. The `firebase-public` target depends
on the `tiny` target whi...
Initialise lexer. All tokens according to to syntax grammar are covered.
Many pointers are taken...
Move assert package to pkg/assert. This has been overlooked in a
previous refactor.
Fix sample source code to be valid evy. The initial version of the
source code pre-dates all tho...
Enable Tokenize and Parse button by default. At this stage we'll mostly
be looking at tokenizing...
Initialise lexer. All tokens according to to syntax grammar are covered.
Many pointers are taken...
Use textarea instead of pre for source code input and run, tokenize,
parse output. `<pre>` seems...
This is an attempt at "docs driven development".
I started off by writing what I think `evy` sh...
23622cd32307d986f49cced9914410c862a49743 authored over 2 years ago by Julia Ogris <[email protected]>This is an attempt at "docs driven development".
I started off by writing what I think `evy` sh...
7970840f810bbc6d673aabe429c852a387629397 authored over 2 years ago by Julia Ogris <[email protected]>
Create initial lexer and token packages and wire them to main package. Use
kong flag parsing wit...
Create initial lexer, token, parser and evaluator packages and wire them
to main package. Use ko...
Reorganise wasm and CLI entry points such that top level main.go is the
CLI entry point and pkg/...
Add UI elements for debugging, so that we can easily trigger `tokenize`
or `parse` from UI via b...
Remove hermit env setup as `make` already does it. Instead execute
./bin/make - the hermit manag...
Update Easter egg. The intention was to update this interactively in a
coding session with some ...
Update Easter egg. The intention was to update this interactively in a
coding session with some ...
Add confetti easter egg, display round divs (confetti) when source code
contains substring confe...
Add confetti easter egg, display round divs (confetti) when source code
contains substring confe...
Initialism go/js/wasm setup with a whole bunch of boilerplate and some
custom styles.
* add som...
cb540d8488fd93f42bfce4f7bab17476100fcb4f authored over 2 years ago by Julia Ogris <[email protected]>Update go main and frontend for webassembly interaction:
* create index.js according tinygo e...
bf66f501441b738dc78602f2255e0050016b344c authored over 2 years ago by Julia Ogris <[email protected]>
Update frontend code with initial evy personality from firebase
boilerplate. TBH, this is all pr...
Hermitise servedir for easy local testing, so that we can run servedir
inside frontend.