this repo has no description
Python 67.0%
C 24.5%
HTML 3.6%
JavaScript 2.5%
CSS 0.9%
Dockerfile 0.5%
Shell 0.3%
Other 0.7%
431 1 0

Clone this repository

https://tangled.org/bernsteinbear.com/scrapscript https://tangled.org/did:plc:fmlri4btc7kco6w4xi3g3cwk/scrapscript
git@tangled.org:bernsteinbear.com/scrapscript git@tangled.org:did:plc:fmlri4btc7kco6w4xi3g3cwk/scrapscript

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Scrapscript Interpreter#

See scrapscript.org for some more information. Keep in mind that the syntax on the website will change a little bit in the coming weeks to match this repository.

Take a look inside scrapscript.py and all of its tests to get an idea for how the language works.

Usage#

We support python3.8+.

# With a file
python3 scrapscript.py eval examples/0_home/factorial.scrap

# With a string literal
python3 scrapscript.py apply "1 + 2"

# With a REPL
python3 scrapscript.py repl

or with Cosmopolitan:

./util/build-com

# With a file
./scrapscript.com eval examples/0_home/factorial.scrap

# With a string literal
./scrapscript.com apply "1 + 2"

# With a REPL
./scrapscript.com repl

(if you have an exec format error and use Zsh, either upgrade Zsh or prefix with sh)

or with Docker:

# With a file (mount your local directory)
docker run --mount type=bind,source="$(pwd)",target=/mnt -i -t ghcr.io/tekknolagi/scrapscript:trunk eval /mnt/examples/0_home/factorial.scrap

# With a string literal
docker run -i -t ghcr.io/tekknolagi/scrapscript:trunk apply "1 + 2"

# With a REPL
docker run -i -t ghcr.io/tekknolagi/scrapscript:trunk repl

The experimental compiler:#

Normal ELF#

./scrapscript.py compile some.scrap  # produces output.c
./scrapscript.py compile some.scrap --compile  # produces a.out

Cosmopolitan#

CC=~/Downloads/cosmos/bin/cosmocc ./scrapscript.py compile some.scrap  --compile # produces a.out

Wasm#

CC=/opt/wasi-sdk/bin/clang \
CFLAGS=-D_WASI_EMULATED_MMAN \
LDFLAGS=-lwasi-emulated-mman \
./scrapscript.py compile some.scrap --compile  # produces a.out

Development Workflow#

Running Tests#

python scrapscript_tests.py

Type Checking the Python Sources#

mypy --strict scrapscript.py

Formatting the Python Sources#

ruff format scrapscript.py

Checking for Format Errors#

ruff check scrapscript.py

Using uv#

If you choose to use uv to manage development dependencies, you can run any of the previous four commands by prefixing them with uv run, e.g.:

uv run python scrapscript_tests.py