Build a working parser and help others learn to code in new languages playing CodeCombat

About CodeCombat

CodeCombat is a multiplayer programming game for learning to code. It was created to make learning fun, even addictive, through fast, extensive practice rather than slow, intensive lessons. CodeCombat's mission is to teach people to code. It is completely open source and hundreds of CodeCombat Archmages and contributors on CodeCombat's GitHub page are helping to build the best programming game ever.

The Challenge

Right now, CodeCombat can help you learn JavaScript, but that's just the start. In order to support other languages like Python, Ruby, or Haskell, we need more in-browser parsers!

Choose your favorite language and submit your own parser, or adapt an existing one, to the Mozilla abstract syntax tree format. You'll also need to figure out any basic library standins. After that, our Aether transpiler will take care of the rest!

Submissions should be in the form of open source JavaScript/CoffeeScript libraries that have APIs similar to Acorn or Esprima.

This is a great technical challenge for anyone familiar with compilers and a couple languages.

Related links:

Expected results: Players can play all CodeCombat levels in the new language. 

Knowledge prerequisite: Basic understanding of compilers. Familiarity with the language you're trying to add. CoffeeScript or JavaScript will help, but they're easy to pick up.

Difficulty: Harder the further away from JavaScript the language is. Something like TypeScript or Roy would be easy, whereas languages like Python or Ruby would be hard, and some static languages like C++ would be very hard.

View full rules


Anyone 18 or older who is not related to someone employed by CodeCombat can submit an entry, including individuals, teams, and organizations. We'll ship prizes anywhere.


Submit an open-source JavaScript or CoffeeScript library with a similar API to Acorn or Esprima. MIT license and GitHub preferred. Must run in the browser, but it's nice to be able to run in node as well.

How to enter

Get in touch with us, either on the challenge discussion forum or through GitHub, and tell us about what language you want to write a parser for and how you want to do it. We'll be happy to help strategize!


Nick Winter

Nick Winter
Cofounder of CodeCombat

Scott Erickson

Scott Erickson
Cofounder of CodeCombat

George Saines

George Saines
Cofounder of CodeCombat

Judging Criteria

  • Correctness and completeness of parser
    The more target language features properly supported, the better. Some languages are not feasible to fully translate to JavaScript, and their standard libraries are often larger than what JavaScript can match, but all the basics should be usable.
  • Ease-of-use of parser as an open-source project
    Parsers that include documentation, npm and bower packages, and few dependencies make better open source projects and are easier to integrate.
  • Preservation of original source range info in AST nodes
    Each AST node should have a "range" property indicating the start and end (either offsets or lines+columns) of its corresponding original source code, like Esprima does.
  • Parser speed and code quality
    The faster, clearer, and easier to maintain the parser's code is, the better. Also, being able to handle syntax errors like Acorn's loose mode is a big plus.
  • Popularity of the programming language
    The more popular and useful the programming language, the better the submission. Obsolete or esoteric programming languages are not eligible for prizes.