| 222 | === Javascript on Parrot === |
| 223 | |
| 224 | * '''Difficulty''': 1/5 - 4/5 |
| 225 | * '''Links of Interest''': https://github.com/leto/jaspers, http://whiteknight.github.com/2010/12/07/javascript_on_parrot_plan.html |
| 226 | * '''Possible Mentors''': Whiteknight |
| 227 | * '''Details''': Implement a JavaScript compiler on Parrot, written either mostly or entirely in JavaScript. The student may start with an existing project (such as Jaspers), or create a new project from scratch. The successful project will attempt to use as much existing JavaScript code as possible to implement the compiler. This can include parser generator utilities such as PEG.js or jison. If the student can find a suitable compiler frontend written in JavaScript, he/she could opt to implement a PIR/PBC backend for the existing frontend. Jaspers is a project which has not proceeded far past the design state which intends to use the PEG.js parser library and an existing JavaScript language grammar to produce such a compiler. Other projects such as Cafe, provide much of the needed compiler infrastructure but would require a suitable PIR/PBC backend. The overall difficulty of this project will be determined by the path the student wishes to take, and the amount of existing JavaScript the student is able to reuse. |
| 228 | * '''Expected Deliverables''': A working JavaScript compiler, written in whole or in part in JavaScript itself. The compiler should be able to "bootstrap" and compile itself. The compiler need not come with any particular set of runtime libraries, although being able to conform to the common.js spec or other standards would be an added bonus. |