# Boa

logo

This is an experimental Javascript lexer, parser and compiler written in Rust. Currently, it has support for some of the language. [![Build Status](https://travis-ci.com/jasonwilliams/boa.svg?branch=master)](https://travis-ci.com/jasonwilliams/boa) [![](http://meritbadge.herokuapp.com/boa)](https://crates.io/crates/boa) [![](https://docs.rs/Boa/badge.svg)](https://docs.rs/Boa/) ## Live Demo (WASM) https://jasonwilliams.github.io/boa/ You can get more verbose errors when running from the command line ## Development documentation You can check the internal development docs at jasonwilliams.github.io/boa/doc ## Benchmarks https://jasonwilliams.github.io/boa/dev/bench/ ## Contributing Please, check the [CONTRIBUTING.md](CONTRIBUTING.md) file to know how to contribute in the project. You will need Rust installed and an editor. We have some configurations ready for VSCode. ### Debugging See [Debugging](./docs/debugging.md). ### Web Assembly This interpreter can be exposed to javascript! You can build the example locally with: ``` $ yarn install $ yarn serve ``` In the console you can use `window.evaluate` to pass JavaScript in To develop on the web assembly side you can run `yarn serve` then go to `http://localhost:8080` ## Roadmap See Milestones ## Changelog see [CHANGELOG](./CHANGELOG.md) ## Usage - Clone this repo - Run with `cargo run -- test.js` where `test.js` is an existing JS file - If any JS doesn't work then it's a bug. Please raise an issue! ## Command-line Options ``` USAGE: boa_cli [OPTIONS] [FILE]... FLAGS: -h, --help Prints help information -V, --version Prints version information OPTIONS: -a, --dump-ast Dump the ast to stdout with the given format [possible values: Debug, Json, JsonPretty] -t, --dump-tokens Dump the token stream to stdout with the given format [possible values: Debug, Json, JsonPretty] ARGS: ... The JavaScript file(s) to be evaluated ``` ## Communication Feel free to contact us on Discord https://discord.gg/tUFFk9Y ## Example ![Example](docs/img/latestDemo.gif) ## License This project is licensed under the Unlicense or MIT licenses, at your option.