The node-go2js is a thin node.js layer on top of go2js native parser to generate an Mozilla AST tree with loc parameter that matches the line in the original golang code. It is currently a server-side solution leveraging the native binaries to produce line to line matching to the generated JS code.
Golang is my choice because of its recent trend of popularity and the power of concurrency. It is a challenging problem because Golang is a compiled language with some functional interface.
go2js managed to match go and js code exactly line by line, so it could output a JS AST tree with loc information to be parsed by Aether for the games. It is also able to output some basic syntax errors if the code does not work. I am reusing go2js's binary parser so it is significantly faster than solutions from generated parsers such as peg.js.
Wrap() and Parse() endpoints are supported for Aether integration. For more details, please checkout https://www.npmjs.org/package/node-go2js
It is leveraging most of the core golang features mentioned here: http://godoc.org/github.com/kless/go2js
Not yet implemented: Range with index [startOf, endOf] The multiple assignment has different order of preference than in JS (functionInverse in "testdata/func.go" fails due this issue). Evaluation of constants. Shadow variables in JS. Goroutines. Types int64 and complex.
Since we have the line number matchup, it is possible to have loc information in the JS AST tree matching the native Golang code. Since only the information for line is reliable, the column information is generally irrelevant to Aether but the golang compiler error messages can be used directly to report errors on line:column.
I have another potential/sub submission here: https://github.com/ttback/erlang-shen-js