Skip to content

An interpreted language based on JS, Kotlin and Python

License

Notifications You must be signed in to change notification settings

nanihadesuka/JsEtimos

Repository files navigation

About

JsEtimos is an interpreted language based on a mix of python, javascript and kotlin.

Python for the scope rules, minimum boilerplate and the import system.
Javascript for the list and array objects and dynamism.
Kotlin for the lambda and conditional expressions and useful built-in methods.
Also has some extra syntax rules and code flow as pipes and special "?" methods.

The language is executed using a custom lexer, recursive descent parser, AST tree and finally an interepreter.

The parser is of the type PEG with quasi context-free syntax.

The lexer and parser can analize statically the validity of the syntax (and some semantics) and give contextual errors with error line and cause.

Running

The interpreter validates the code and data flow at runtime given the possible dynamism of the language. The runtime will give informative errors but won't show you any contextual information or where (position in the program) the error has occured.

The interpreter can be run in three modes:

  • from a file,
  • shell mode (REPL)
  • from a string given in the command line.

For more info for how to run it read the INSTRUCTIONS file.

As the implementation has been done in Typescript it can run on the browser, node.js and even on the game 0 A.D which uses the spidermonkey js engine (nice game btw, check it out :-> )

Notice

This is a toy language, the implementation is still missing many things, has some bugs and inconsistencies and is not optimized so be gente with it :)