py-slang
is a language frontend for the
js-slang repository. It parses
a restricted subset of Python (enough to complete SICP), and outputs an
estree
-compatible AST. The grammar is a reduced
version of Python 3.7's.
This project does not aim to be a full Python to JS transpiler, but aims
to transpile just a small enough subset of Python.
For local testing:
npm run start:dev # Add `-- <file.py>` to run a file
import {parsePythonToEstreeAst} from 'py-slang';
// Sample Python code
const text = `
(lambda a: print(a))("Hello World!")
`;
// Arguments:
// Code to translate
// SICPy chapter number
// Whether to validate the code using a resolver.
console.dir(parsePythonToEstreeAst(text, 1, false));
Ensure that all tests pass before committing.
npm run test
The AST types need to be regenerated after changing
the AST type definitions in generate-ast.ts
.
npm run regen