Skip to content

Latest commit

 

History

History
47 lines (38 loc) · 1.2 KB

README.md

File metadata and controls

47 lines (38 loc) · 1.2 KB

Python variant for SICP

What is py-slang?

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.

Usage

For local testing:

npm run start:dev # Add `-- <file.py>` to run a file

Consuming the API and generating an estree AST

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));

Running the test suite

Ensure that all tests pass before committing.

npm run test

Regenerating the AST types

The AST types need to be regenerated after changing the AST type definitions in generate-ast.ts.

npm run regen