Metadata-Version: 2.1
Name: pytch
Version: 0.0.1
Summary: An expression-oriented, tooling-focused language that compiles down to Python.
Home-page: https://github.com/arxanas/pytch
License: MIT
Author: Waleed Khan
Author-email: me@waleedkhan.name
Requires-Python: >=3.7,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Provides-Extra: fuzz
Requires-Dist: attrs (>=18.2,<19.0)
Requires-Dist: click (>=7.0,<8.0)
Requires-Dist: cython (>=0.29.2,<0.30.0); extra == "fuzz"
Requires-Dist: distance (>=0.1.3,<0.2.0)
Requires-Dist: pyrsistent (>=0.14.8,<0.15.0)
Requires-Dist: python-afl (>=0.7.1,<0.8.0); extra == "fuzz"
Requires-Dist: typing (>=3.6,<4.0)
Requires-Dist: typing-extensions (>=3.6,<4.0)
Project-URL: Repository, https://github.com/arxanas/pytch
Description-Content-Type: text/markdown

[![Build Status](https://travis-ci.org/arxanas/pytch.svg?branch=master)](https://travis-ci.org/arxanas/pytch)

## Development

### Setup

The Pytch compiler is currently written in Python 3.7.

To install the development environment, run

```sh
$ poetry install
```

### Running

To launch the REPL:

```sh
$ poetry run pytch repl
```

To execute a file as a Pytch script:

```sh
$ poetry run pytch run file.pytch
```

### Updating the syntax trees

To modify the syntax tree node types, update `pytch/syntax_tree.txt`, then run:

```sh
$ ./bin/generate_syntax_trees.sh
```

### Fuzzing the parser

To run the fuzzer on the Pytch parser, first be sure that [the AFL
fuzzer][afl-fuzz] is installed (e.g. with `brew install afl-fuzz`). Next,
install the fuzzing dependencies:

  [afl-fuzz]: http://lcamtuf.coredump.cx/afl/

```sh
$ poetry install --extras fuzz
```

Then you can run:

```sh
$ ./bin/fuzz.sh
```

