Skip to content
/ toyjs Public

A toy javascript interpreter written in rust. Very much under development.

Notifications You must be signed in to change notification settings

DelSkayn/toyjs

Folders and files

NameName
Last commit message
Last commit date
Oct 11, 2023
Sep 29, 2024
Apr 1, 2023
May 22, 2022
Apr 5, 2020
May 13, 2024
Sep 7, 2023
Apr 5, 2020
Jan 23, 2024
Mar 29, 2022
Sep 9, 2024
Mar 2, 2024
Feb 10, 2024
Oct 6, 2020
May 13, 2024

Repository files navigation

Toyjs javascript interpreter.

This repository contains the code of a toy javascript interpreter. Built for experimentation with building dynamic languages.

This interpreter is very much under development and lacks support for a large part of the javascript language.

You can play around with an previous version of the interpreter in your browser here

Features

  • Register based bytecode VM
  • Handwritten parser.
  • Traditional Lexer to Parser to ast to compiler to bytecode design.
  • Almost safe sweep and trace GC
  • Minimal dependencies.

Current State

The engine is currently undergoing a rewrite and is in a non-functional state.

But you can play around with the currently functional parts of the interpreter.

Running the interpreter

The VM is currently very bare-bones, with only a very small number of instructions implemented. A simple example for the VM can ran with

cargo run --example vm

All examples take either a file name or assume a script will be piped into stdin.

The interpreter has varies tools for printing data-structures and generated source information.

For printing a AST you can use

cargo run --example parse

The lexer can similarly be run on code with

cargo run --example lex

A overview of symbol information produced by the compiler can be printed with

cargo run --example resolve

A script can be compiled and the compiled instructions can be dumped with

cargo run --example compile

About

A toy javascript interpreter written in rust. Very much under development.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages