Skip to content

source-academy/py-slang

Repository files navigation

Python variant for SICP

What is py-slang?

py-slang is a Python implementation developed specifically for the Source Academy online learning environment. Unlike previous versions where Python was treated as a subset within js-slang, py-slang now stands as an independent language implementation. It features its own parser, csemachine, and runtime, designed to process a tailored subset of Python for educational purposes.

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

About

Python sublanguage for SICP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages