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

Acknowledgements

This project adapts the Conductor Interface from source-academy/conductor, which is part of the Source Academy ecosystem.

Specifically, all files under the following folders are derived from the conductor repository:

  • src/conductor/
  • src/common/
  • src/conduit/

All credits go to the original authors of the Source Academy Conductor Interface.

About

Python sublanguage for SICP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages