Skip to content

List of languages that compile to JavaScript and many other transpilers

GuiltyKing edited this page Dec 3, 2019 · 2 revisions

Table of contents

CoffeeScript + Family & Friends

Name Description
CoffeeScript Unfancy JavaScript
CoffeeScript II: The Wrath of Khan Rewrite of the CS compiler

Family (share genes with CoffeeScript)

Name Description
Coco A CoffeeScript dialect that aims to be more radical and practical, also acts as a test bed for features that get imported in CoffeeScript.
LiveScript A fork of Coco that is much more compatible with CoffeeScript, more functional, and with more features.
IcedCoffeeScript A CoffeeScript dialect that adds support for await and defer keywords which simplify async control flow.
Parsec CoffeeScript CS based on parser combinators. The project's aim is to add static metaprogramming (i.e. macros + syntax extensibility) to Coffee Script (CS), similar to how Metalua adds such features to Lua. The resulting compiler, once merged with the official compiler, should be usable as a drop-in replacement for it.
Contracts.coffee A dialect of CoffeeScript that adds built-in support for contracts.
Uberscript A CoffeeScript fork that adds type annotations which are compiled to Google closure compiler type annotation comments.
ToffeeScript A dialect of CoffeeScript that support Asynchronous Syntax and Regexp operator =~
Caffeine A dialect of CoffeeScript that supports packages and classes import, useful for browser applications
heap.coffee A dialect of CoffeeScript that offers a C-like type system with manual memory management
EmberScript Ember.js-infused CoffeeScript.
BlackCoffee CoffeeScript with hygienic macros. See also #3171

Friends (philosophically related)

Name Description
NodeScript JavaScript without the Variable Declarations and Semicolons
Bizubee The World's Most Intense Programming Language!
Kaffeine Enhanced Syntax for JavaScript.
Moescript Indent-based language. The original repository at https://github.com/moescript/moescript is missing. The link is to a surviving fork.
pogoscript Language that emphasises readability, handles async control flow nicely, is friendly to domain specific languages and compiles to regular JavaScript
LispyScript A JavaScript with Lispy syntax and Macros.
Hot Cocoa Lisp A Lisp-like language that compiles to JavaScript.
Sibilant JavaScript with a lisp.
ki Clojure-like syntax, mori's immutable data structures in a few sweet.js macros. Can be intermixed with JavaScript.
jisp A JS-native and axiomatic Lisp that focuses on the core ideas of code-as-data, S-expressions, and macros, introducing as few new concepts as possible.
Ham Looks very similar to JavaScript at first, but offers (hopefully) many useful features
GorillaScript Compile-to-JavaScript language designed to empower the user while attempting to prevent some common errors, offers Macros, optional Typing, and asynchronous syntax.
RedScript Ruby-flavored JavaScript.
Daonode Functional logic solver, compiler.
LiteScript Literate, highly-readable, type annotated, imperative language that compiles to JavaScript.
ColaScript Similar to Dart, CoffeeScript, Python and PHP
Taijilang A customizable and extensible language with dynamic parser and meta language.
MoonScript MoonScript is a dynamic scripting language that compiles into Lua. The syntax of MoonScript has been heavily inspired by the syntax of CoffeeScript.
Earl Grey An extensible language with pattern matching, hygienic macros and a syntax similar to Python.
Khepri Lightweight language that reworks Javascript's syntax to be better for untyped functional-style programming.
Spider Spider is a programming language that compiles to JavaScript (ES5 and ES6 targets). It takes the best ideas of Go, Swift, Python, C# and CoffeeScript.
CirruScript Write JavaScript with indentations and polish notations, similar to S-Expression but with fewer parentheses.
TLC Tag Line Commands is a inline macro language for calling+formatting javascript/coffeescript/livescript json output into HTML.
CokeScript Inspired by Python and Ruby that integrates natively with the Virtual-DOM library
imba Compiles to performant and readable JavaScript
Cor Straightforward language for the Web
Iode A language inspired by Swift
FutureScript A more radical, but more readable, different new language.
PearScript Shorthanding JavaScript one more time.
RamdaScript JavaScript in the Ramda way.
RoyalScript A functional language that has loops, types, structs, and much more.

JavaScript Extensions

Security enforcing JavaScript

Name Description
Caja Compiles ES5/strict to ES3 and supports object-capabilities
ADsafe Client-side static verifier and API, making third party scripts safe.
Jacaranda Static verifier supporting object-capabilities.
Dojo Secure Framework for building secure mashups.

Static typing

NOTE: Some of the projects listed below are also statically typed, such as mobl, GWT, JSIL, NS Basic, and Haxe.

Name Description
Dart C/Java-like syntax with optional typing by Google.
TypeScript Typed superset of JavaScript by Microsoft.
TeJaS From Brown PLT. Types for JavaScript (itself).
asm.js Subset of JavaScript that can be used as a low-level, efficient target language for compilers. Now included in Firefox.
JavaScript++ JavaScript superset with classes, type checking, among other features
Mascara [commercial] Enhances JavaScript with powerful features like classes, namespaces and type-checking.
Roy Tries to meld JavaScript semantics with some features common in static functional languages
Elm Type-safe functional language that compiles to HTML, CSS, and JavaScript.
Swym Statically typed, with type inference and generics
Typecast.js JavaScript platform for statically typed variables without a custom compiler.
PureScript A small, strongly typed programming language that compiles to JavaScript and C++, featuring extensible records and effects, and type classes.
Flow Static type checker for JavaScript, supports optional types and null checks by Facebook.
ActionScript With Apache Royale ASJS (formerly FlexJS) - Based on ECMAScript 4, ActionScript provides typing and can be compiled to JavaScript.
BuckleScript OCaml compiled to readable JavaScript.

Synchronous to Asynchronous JavaScript Compilers (CPS)

Name Description
Streamline.js Uses underscore (_) to stand for callbacks. This fork preserves line numbers for debugging.
mobl The new language for programming the mobile web.
StratifiedJS JavaScript + structured concurrency.
NarrativeJS JavaScript extension with asynchronous futures and promises.
jwacs JavaScript With Advanced Continuation Support.
Wind.js Wind.js is an advanced library which enable us to control flow with plain JavaScript for asynchronous programming (and more) without additional pre-compiling steps.
TameJS Adds new keywords 'await' and 'defer'
Continuation.js A lightweight JIT compiler for simplifying asynchronous JavaScript programming with no runtime dependences. It supports both Node.js and browser-side JavaScript and is compatible with CoffeeScript (also TypeScript, and any other scripts compile to js).
Kal Makes asynchronous programming easy and clean by allowing functions to pause and wait for I/O, replacing an awkward callback syntax with a clean, simple syntax
JSPipe Provides JavaScript primitives to write async code without callbacks or chained functions. Inspired by Goroutines and Channels found in Go and in Clojure. For Web and NodeJS. ES5 and ES6.
promiseLand PromiseLand is a very promising Language. It includes ES5 strict mode, uses the * dereferencing operator to access promise results and introduces additional features designed to let you focus on your program logic. Such as dynamic typesafety, frame addressing, generic load and safe features.

JavaScript Language Extensions

Name Description
ContextJS An implementation of Context-oriented Programming for JavaScript.
Objective-J Shares with JavaScript the same relationship that Objective-C has with the C programming language: that of being a strict, but small, superset.
Mochiscript Object-oriented JavaScript with syntactic sugar. Released as a Ruby gem.
jangaroo AS3 (ActionScript) to JavaScript.
Flapjax Event-driven, reactive evaluation.
jLang Adds object oriented syntax, namespaces, operators overriding
Restrict Mode
TIScript Gentle extension of JavaScript
Six Six is a language super-set of JavaScript that enables new syntactic features from the 6th edition of ECMAScript to be used, through a transpiler, in your scripts today.
js-- JavaScript subset for interactive/visual programming.
Latte JS Superset of JavaScript (eventually ES6), with similar goals to CoffeeScript, but keeping JS syntax.
JSX A superset to add an XML-like syntax to represent HTML elements in React by Facebook
oj Objective-C inspired superset of JavaScript with a tiny runtime, built-in obfuscator, and experimental type checker (courtesy of Typescript).
mfjs Adds arbitrary side effects not already available in JavaScript. They may include but not limited to delimited continuations, asynchronous, logic, reactive, parallel, distributed and probabilistic programming. It doesn't extend syntax so it may be used with any other language compiling to JavaScript.

Ruby

Name Description
Opal Ruby to JavaScript compiler.
HotRuby Runs opcode, compiled by YARV on Ruby inside a web browser or in Flash.
ColdRuby Compiler of Ruby 1.9 MRI bytecode, and a runtime written in JavaScript to aid in execution of Ruby code.
rb2js Converts Ruby to JavaScript.
RubyJS A successor to rb2js
Red Writes like Ruby and runs like JavaScript
Quby Used for game coding site, open source.
8ball Ruby-to-JavaScript source-to-source transformer
Ruby2JS Minimal yet extensible Ruby to JavaScript conversion.
ruby-parser.js Original Ruby 2.0 parser ported to pure JavaScript, produces AST

Python

Name Description
Pyodide CPython, the reference Python implementation, compiled to WASM. Also includes the Python scientific stack.
PYXC-PJ [CS friend] Python to JS. Can generate a (line/col)-number mappings file. (Dead. Last updated 8 years ago.)
Pyjamas Python to JS.
Pyjaco Python to JavaScript compiler with module support.
Pyjs Python to (readable) JS.
Skulpt Python. Client side.
PyCow Python to MooTools JS.
PyvaScript Python-like syntax to JavaScript.
RapydScript JavaScript with a Pythonic syntax.
Bulbul Python3 to JavaScript/ES6/ES7 compiler. Apparently the only Python-to-JS compiler intended to provide support for AngularJS, React, Aurelia and other modern JS libs.
Brython Browser Python. Embed Python 3 in <script type="text/python">
PythonScript Python-like compiled to JavaScript
pythonscript Python compiled to readable JavaScript using the AST. (proof of concept)
Rusthon Integrates several python to js methods into one project. Very Active. Not only for JS & Py, but also Go, C, Nim, etc.
PyPyJS PyPy. Compiled into JavaScript using Emscripten. JIT-compiling to JavaScript at runtime.
Batavia Run Python bytecode in the browser
Transcrypt New Python 3.5 to JavaScript transpiler. Supports multiple inheritance, bound function assignment, selective operator overloading, highly readable JS output, sourcemaps, small downloads, fast execution using call memoizing. Integrated with closure compiler / minifier, optional static checker and fabric.js graphics lib for HTML5 canvas.
pseudo-python A restricted python to javascript/c#/go/ruby compiler
JavaScripthon Transpile Python3.5 to ES6 and to ES5 (with the help of BabelJS, but w/o the need for nodejs). Supports classes, generators, async functions.

Erlang

Name Description
Shen First and yet smallest Erlang JavaScript Compiler based on Erlang AST. It allows you to translate Elixir, Joxa, Lol and Erlang programs to JavaScript with erlc. JavaScript/OTP subset. Has node npm package called erlang-shen-js.
LuvvieScript A browser-based dom-scripting language that is a strict sub-set of Erlang which is AST-to-AST transpiled to JavaScript (code)
browserl Erlang Emulator written in JavaScript

Elixir

Name Description
ElixirScript Converts Elixir AST to JavaScript AST to JavaScript code.

Perl

Name Description
Perlito Project to compile Perl 5/6 to JavaScript, Ruby, SBCL, and Go.
p2js Perl to JavaScript converter
perl.js

Java/JVM

Name Description
GWT Google Web Toolkit, compiles Java to JavaScript.
Java2Script/SwingJS Eclipse Java to JavaScript compiler plugin and JavaScript version of the Java 8 JVM for Java applets and applications, with over 2300+ Java8 OpenJDK classes, including gnu.jpdf, gov.nist.jama, java(applet, awt, beans, io, lang, math, net, nio, security, text, util), javax(imageio, net, print, sound, swing, xml), netscape(javascript), org(apache, json, unicode, xml), sun(applet, audio, awt, net, nio, reflect, security, swing, text, util), along with an extensive library of plaf (Plaform Look and Feel) for HTML5; tested successfully on over 400,000 lines of original working Java code in 2 major (150,000+ line) applications (Jmol and Jalview) 600+ applets and 1000+ web pages in multiple projects; nearly complete AWT and Swing implementations; actively developed (since 2012); requires minor Java-compatible code adjustment to handle multithreading and modal dialogs; extensive developer documentation and support; beta
j2js Java bytecode to JavaScript.
Strongly-Typed JavaScript (STJS) JavaScript code generator from Java source. It is built as a Maven plugin.
BicaJVM JavaScript implementation of JVM.
Doppio JVM interpreter on CoffeeScript.
Processing.js A Java-based visualization language that interprets to JavaScript.
Kotlin Statically typed programming language targeting the JVM and JavaScript.
Ceylon A modular static-typed JVM language compilable to JavaScript.
GrooScript A framework to convert Groovy code to JavaScript.
node-jvm Java virtual machine in pure node.js
Bck2Brwsr Run "browserified" Java Code in, well, the browser.
QWT QWT consists of a Java-to-JavaScript compiler, a prepared library of Qooxdoo componente (version 0.7.x) and some other tools. Similar to GWT
TeaVM An ahead-of-time transpiler that takes JVM bytecode and produces JavaScript.
Dragome SDK Compiles JVM bytecode to Javascript.
JSweet A Java to JavaScript transpiler built on top of TypeScript and giving access to hundreds of JavaScript libraries in Java.
j2cl Compiles Java to Javascript.

Scala

Name Description
Scala.js The official Scala to JavaScript compiler
js-scala JavaScript as an embedded DSL in Scala
scalagwt Enhanced GWT (accepts jribble as well as Java) plus Scala to jribble.
JScala Scala macro that produces JavaScript from Scala code.

C#, F#, .NET related languages

Name Description
jsc [experimental] Recompile your .NET assembly to JavaScript, ActionScript, PHP or Java.
JSIL MSIL (.NET bytecode) to JavaScript
Script# Compiles C# to JS.
CilJs Translates CIL/MSIL (.NET bytecode) (C#) to JavaScript
Prefix Defunct
Blade Visual Studio add-on for converting C# to JavaScript
SharpKit C# to JavaScript Cross-Compiler
Saltarelle C# to JavaScript Compiler. Saltarelle is now part of Bridge.NET.
FunScript F# to JavaScript compiler with JQuery etc. mappings through a TypeScript type provider
Pit F# to JavaScript compiler
WebSharper Lets you compile F# to JS.
NemerleWeb Nemerle language compiled to JS.
Blue Storm F# to JavaScript (and some other languages).
JScriptSuite .NET to JavaScript compiler (cross browser API, client site controls and components).
DotNetWebToolkit Toolkit providing a .NET CIL to JavaScript transcoder and Visual Studio project/debugging integration
Netjs .NET to TypeScript and JavaScript compiler. It uses multiple stages to produce JavaScript for your web apps.
WootzJs C# to Javascript cross-compiler built on top of Microsoft Roslyn, which handles the complex process of converting your C# code into syntax trees with symbol information
DuoCode C#-to-JavaScript compiler powered by Microsoft Roslyn
Bridge.NET Open Source C#-to-JavaScript compiler using Microsoft Roslyn. Includes support for jQuery + many other frameworks. Developed and well supported by a professional team. Try online at Deck.NET.
Fable F# to JavaScript Compiler

Lisp, Scheme

Clojure-like

Name Description
ClojureScript Clojure to JS, the official version. Supports the majority of Clojure including persistent datastructures.
ClojureJS Subset of Clojure to JS.
Chlorinejs A fork of ClojureJS with a port of clojure.core library.
wisp A homoiconic JavaScript dialect with Clojure syntax, S-expressions and macros. Aims to be rich subset of Clojure(Script) that seamlessly interops with both Clojure(Script) and JavaScript.
Scriptjure Library for generating JavaScript from Clojure forms.
ki Clojure-like syntax, mori's immutable data structures in a few sweet.js macros. Can be intermixed with JavaScript.

Scheme-like

Name Description
BiwaScheme Scheme(R6RS) in JavaScript
Fargo Scheme in JavaScript
Moby Scheme A Scheme running in JS.
nconc Scheme interpreter in JavaScript with stack-friendly tail calls and full call/cc
Scheje A Little Scheme on Top of Clojure - compiles on Node.js and the Browser.
scheme2js Scheme to JavaScript.
Spock A Scheme to JavaScript compiler that uses Henry Baker's Cheney-on-the-MTA compilation strategy
Whalesong Racket to JS compiler
RacketScript Lightweight Racket to JavaScript compiler. The generated code is ES6, which can be translated to ES5 using Babel or Traceur.
urlang A nanopass compiler accepting Racket-like syntax

Other

Name Description
eslisp An S-expression syntax for ECMAScript/JavaScript, with Lisp-like hygienic macros that are just JS functions. Aims to be very close to JS, and highly experimental.
EdgeLisp A Lisp in the tradition of Common Lisp
Parenscript Subset of Common Lisp to JS.
Ralph Lisp-1 dialect that compiles to JavaScript, inspired by Dylan
Oppo A JavaScripter's lisp. Inspired by JavaScript, Clojure and CoffeeScript. Compiler built using Jison.
LispyScript A JavaScript with Lispy syntax and Macros.
Outlet A simple Lisp that supports CPS and in-browser stepping debugging, and other things. In development.
Hot Cocoa Lisp A Lisp-like language that compiles to JavaScript.
Sibilant JavaScript with a lisp.
jisp A JS-native and axiomatic Lisp that focuses on the core ideas of code-as-data, S-expressions, and macros, introducing as few new concepts as possible.
JSCL A Lisp-to-Javascript compiler bootstrapped from Common Lisp

OCaml

Name Description
Ocamljs OCaml to JS.
O'Browser OCaml bytecode interpreter in JS.
Js_of_ocaml OCaml bytecode to JS compiler.
Bucklescript OCaml to readable JS

Haskell

Name Description
UHC (Utrecht Haskell Compiler) backend converts UHC core to JavaScript, allowing the compiling of Haskell code to JS.
ghcjs Compile normal Haskell into JS
jmacro Quasi-Quoted JS that you can insert Haskell values into (there is also shakespeare-js for that purpose), but also supports a more Haskellish syntactic version of JavaScript.
lambdascript Compile a subset of Haskell into JS
YHC (York Haskell Compiler) backend, as above but with YHC core language.
jshaskell
haste
fay A proper subset of Haskell that compiles to JavaScript
forml A contemporary programming language intended to approximate the safety of Haskell and the expressiveness of Ruby.

Smalltalk

Name Description
Amber Formerly known as Jtalk
Clamato A Smalltalk dialect that is designed to operate within the JavaScript runtime.
Silver Smalltalk [commercial?] Smalltalk in the browser. (Still active?)
Lively Kernel Smalltalk/squeak-like development environment in the browser. See also Avocado, built on top of it.
Little Smallscript Little Smalltalk to JavaScript translator.
SqueakJS Squeak VM in Javascript
PharoJS PharoJS is a Pharo to JavaScript compiler and infrastructure for remote test and debugging. The goal is to enable developing apps in Pharo while deploying them on top of a JavaScript engine.

C/C++

Name Description
Emscripten LLVM to JavaScript compiler. LLVM is "an aggressive open-source compiler for C and C++," as well as other languages.
Cheerp (formerly Duetto) "compiles C++ applications to binary code and JavaScript. Based and integrated into the LLVM/clang infrastructure"
maja Vala (gobject) to JavaScript
Clue C language compiler to different runtimes (Lua, JS, Perl 5, C, Java, CL).
LLJS Typed dialect of JavaScript that offers a C-like type system with manual memory management
Mandreel Can convert C++ and Objective-C applications based on OpenGL ES to JavaScript or Action Script 3 web application.
Bonsai-C Convert C code to asm.js

Basic

Name Description
NS Basic/App Studio [commercial] Visual Basic-style BASIC to JavaScript compiler. Includes IDE. Targets iOS and Android
qb.js An implementation of QBASIC in JavaScript
Spiderbasic [commercial] SpiderBasic is new web client-side programming language based on established BASIC rules. Its main purpose is to allow development of very complex, windowed based web applications. It provides a large commandset to handle complex and reactive GUI, 2D games, and many more in a coherent manner.
B4J [free] the BANano library by Alwaysbusy transpiles B4J (Visual Basic like) code to Javascript. Possibility to extend with other javascript libraries/web frameworks by creating BANano b4xlib libraries. Allows development of PWA, Websites, Webapps.
Monkey (see below)

Pascal, Modula, Oberon

Name Description
Smart Mobile Studio [commercial] Object Pascal to JavaScript compiler and Delphi like IDE that brings classes, inheritance, interfaces and more to JavaScript
Elevate Web Builder [commercial] Visual development tool for web applications that compiles standard Object Pascal source code into JavaScript
Oberon 07 Translates Oberon to JavaScript code ready to be run in web browser or nodejs. Compiler itself is written in Oberon (with extensions) and compiled to JavaScript.
Pas2JS Pas2js is an open source Pascal to JavaScript transpiler. It parses Object Pascal and emits JavaScript. The JavaScript is currently of level ECMAScript 5 and should run in any browser or in Node.js.

Go

Name Description
Go2js Line-to-line translator from Go to JavaScript.
GopherJS A compiler from Go to JavaScript.
TARDISgo Compile Golang to Haxe (then on to JavaScript, Flash, Java, C++, C#, PHP, Python, Lua, Neko, HashLink)

Multitarget

Name Description
Haxe Compiles to several platforms C++, JavaScript, PHP, Java, JVM, C#, Python, Lua, Neko, HashLink (both JIT and C) and Flash/SWF.
Fantom Evolutionary object-oriented language emphasizing succinct and effective APIs (JVM, CLR, JS).
LZX (Laszlo XML) LZX is OpenLaszlo's declarative user interface language, which is compiled into JavaScript 2 as an intermediary format, and further compiled into either JavaScript 1.5 or ActionScript 3.
Clue and jsc Target multiple runtimes in addition to JavaScript
Nim Compiles to C, C++, Objective-C, and JavaScript
Monkey A Basic-like programming language that compiles to several platforms (JavaScript, ActionScript 3, C++, Java, C#). The main application/game framework is [commercial].
defrac Compiles Java bytecode to several platforms (including JavaScript)
Ć Programming Language Automatically translated to C, Java, C#, JavaScript, ActionScript, Perl and D.
Skew A web-first, cross-platform programming language with an optimizing compiler (compiles to JS and C++)
Chicken Scheme an R5RS & R7RS Scheme that normally compiles to C. The Spock library allows compilation to JavaScript

Tierless languages (produce both client & server)

Name Description
Fun A programming language for realtime webapps - compiles to client-side and server-side JS.
Ur In the tradition of ML and Haskell.
mobl The new language for programming the mobile web.
E Compiles E to JS. E is a secure distributed persistent pure object language.
Sugar New programming language designed to replace JavaScript for client-side (and server-side) web development
Opa Write your complete application in just one language, and the compiler will transform it into a self-sufficient executable
STIP.js Slicing Tierless Programs in JavaScript

Visual programming tools

Name Description
SCION SCXML Tools for W3C State Chart XML, a state machine language. Tools include an SCXML-to-JS compiler and graphical debugger.
Waterbear Tool for making Scratch-inspired block-based languages on the web. Examples include blocks for JavaScript, ProcessingJS, NodeJS, and more.
Snap JavaScript of BYOB, which is a fork of Scratch
ScriptBlocks
Illumination [Commercial] Visual, cross-platform tool creates apps for Android, iPhone, iPad, Desktops and HTML5 or Flash websites. The I language underlies the tool.
JsMaker Visual JavaScript programming
Meemoo Flow-based visual programming framework for hackable web apps
NoFlo JavaScript implementation of Flow-Based Programming. Programs (network graphs) can be visually created with DrawFBP
Blockly Web-based, graphical programming language. Users can drag blocks together to build an application
Maeda Block Visual game programming language powered by enchant.js and Google Blockly. See also the Japanese version.

SQL

Name Description
sql-parser
sqld3
Alasql SQL to JavaScript parser and compiler
sql.js SQLite compiled to javascript
RBQL SQL-like language that compiles to JavaScript and Python

PHP

Name Description
phype Run PHP code directly in your browser
uniter Run PHP code in Node.js or the browser
php.js PHP VM with JavaScript, allow to run PHP code in Node.js or the browser

Prolog

Name Description
prolog.js Prolog parser, compiler, and interpreter in JavaScript
Yield Prolog Compiles Prolog into JavaScript, C#, and Python
Tau Prolog Prolog interpreter in JavaScript

Others

Name Description
Z An experimental language that is basically JavaScript with nicer syntax.
Pyret A teaching language that runs in the browser.
Oia A port of Io to JavaScript.
Plaid A gradually-typed, typestate-oriented language designed as a better Java.
Quixe A Glulx VM interpreter written in JavaScript
Gnusto A Z-Machine VM interpreter written in JavaScript
Logo Interpreter
Reb2Static Rebol to JavaScript
RPN Interpreter for a language with a Reverse Polish Notation syntax.
jsForth
wForth
Agda A dependently typed functional programming language and mechanized proof assistant
XLCC Interpret LCC into JavaScript on node
SMLtoJs SML to JavaScript compiler
lua.js Lua parser
Brozula Lua bytecode interpreter
Fengari Lua VM in JavaScript
Pygmy A dynamic language that compiles to JavaScript designed to be readable but concise enough to be competitive in code golf.
ErlyJS JavaScript to Erlang compiler
Topaz Rebol inspired language on top of JavaScript
NGN APL APL-to-JavaScript compiler written in CoffeeScript
CobolScript COBOL language compiler to JavaScript.
Idris Dependently typed functional language with a JavaScript backend.
Wortel J/APL inspired language with Polish Notation, compiles to JavaScript.
oK K5 implementation on top of Javascript.
JEnglish Interprets regular English statements into HTML/CSS
uilang & uiscript Simple UI-focused script languages for web designers
Hodor Hodor programming language
L2 A simple, table-based language for data analysis
YoptaScript Language for gopniks (post-Soviet aggressive young lower-class suburban male dwellers coming from families of poor education and income)

Tools for Compiler Writers

JavaScript Parsers and Extensions

Name Description
Narcissus Mozilla's experimental JavaScript compiler in JavaScript by Brendan Eich and others.
CommonJS version in DoctorJS
Jasy: Python port of Narcissus with some enhancements
PyNarcissus Narcissus's parser ported to Python (used in pyjon)
rbnarcissus Narcissus' parser ported to Ruby.
Traceur Google's vehicle for JavaScript Language Design Experimentation
EcmaScript 5 Parser (es-lab)
EcmaScript 5 Parser (qfox)
reflect.js Implementation of Mozilla's (SpiderMonkey) Parser API in JavaScript
bdParse A JavaScript LL(1) parser in JavaScript
parse-js Common Lisp JavaScript parser
ZeParser
Esprima Educational (but fast) ECMAScript parser with output compatible to Mozilla Parser API
js.js A JavaScript JavaScript interpreter. Instead of trying to create an interpreter from scratch, SpiderMonkey is compiled into LLVM and then emscripten translates the output into JavaScript.
sweet.js Brings hygienic macros to JavaScript. Lets you write extensions to JavaScript that must be invoked by the user.
smpl.js The first compiler built for the purpose of transpiling first.
acorn A small, fast, JavaScript-based JavaScript parser
Babel Turn your ES6+ code into ES5 friendly code

JavaScript Optimizers

Name Description
Closure Compiler An optimizing compiler. Can generate a (line/col)-number mappings file.
UglifyJS

JavaScript Parser Generators

Name Description
jison Bison in JavaScript, used by CoffeeScript
nearley A fast, lightweight Earley parser generator
OMeta/JS Metacompiler for many languages to many targets, including js. (source)
PEG.js Parser generator for JavaScript based on the parsing expression grammar formalism
languagejs PEG parser written in JavaScript with first class errors
Canopy Self-hosting PEG parser compiler for JavaScript, influenced by Ruby parser generators such as Treetop and Citrus
JS/CC LALR(1) parser generator
jsparse PEG by Grandmaster Chris Double
ReParse Parser combinator library for JavaScript like Haskell's Parsec
p4js Monadic parser library for JavaScript
JSGLR Scannerless, Generalized Left-to-right Rightmost (SGLR) derivation parser for JavaScript
ANTLR 3 Has a JavaScript target. ANTLR 4 has not implemented its JavaScript target yet.
Cruiser.Parse LL(k) parser
MetaCoffee PEG parser using CoffeeScript and white-space-significant syntax
Bennu Parsec inspired Javascript parser combinator library.
bison-lalr1.js JavaScript skeleton for Bison GNU Parser Generator

JavaScript AST, Semantics

Name Description
WebAssembly W3C cross-browser collaboration on a new, portable, size- and load-time-efficient format suitable for compilation to the web.
Closure Compiler AST Documentation
SpiderMonkey Parser API See also reflect.js above. The AST interface specification is succeeded by the ESTree specification effort.
ESTree Specification An effort to better standardize an AST specification based on the original Spidermonkey Parser API. It is used by Acorn, Esprima, and SpiderMonkey's own parser. This succeeds the original SpiderMonkey Parser API's AST specification.
Shift JavaScript AST Specification See this blog post with more information
JsonML AST Format used by the es5 parser
treehugger JavaScript AST transformation tools
JavaScript Shaper JavaScript syntax tree shaping
burrito & js-traverse See this post for more info, as well as node-stackedy for an example and node-browserify for running it in a browser instead of node
falafel Transform the ast on a recursive walk
rocambole Inspired by burrito & falafel, recursively walk and transform EcmaScript AST
JavaScript types Lambdajs and flow typing
SourceMap Map JavaScript debugger output to original source
Zeon A static visual JavaScript analyzer / editor. See also ZeParser.
escodegen JavaScript code generator
esmangle Minifier for Mozilla Parser API AST
estraverse ECMAScript traversal functions from esmangle project
ecma-ast AST node data structures for ECMAScript 5.1 based on the SpiderMonkey Parser API
esast Slow compilation? Use typed data for fast AST construction and rendering. Compatible with JSON trees following estree.
Astring Tiny and fast JavaScript code generator from an ESTree-compliant AST.