Add python.2 implementation
authorGavin Lewis <epylar@gmail.com>
Sun, 18 Aug 2019 17:05:48 +0000 (10:05 -0700)
committerGavin Lewis <epylar@gmail.com>
Mon, 14 Oct 2019 02:11:29 +0000 (19:11 -0700)
commit270f1f72721537c63577aeb2837c9eb19dd5d3b1
treefcdbcc92aee1008f0474ff66baa756c6007b519e
parentaf0d00ddec3d932cdce039a845c1647220a08528
Add python.2 implementation

This commit adds a new Python 3 implementation of MAL. This
implementation passes all non-optional tests, with the exception
that the travis test script doesn't like the period in the
directory name. During development, this was called "py3" and
it passed Travis tests.

This implementation is different from the main python implementation.
First, it heavily uses type annotations making for a code style
more similar to Java. Second, it uses the Arpeggio parser library
to parse MAL syntax.

This commit also includes unit tests that show roughly the order
of things that were interactively tested and debugged during
development.
29 files changed:
Makefile
python.2/.gitignore [new file with mode: 0644]
python.2/Dockerfile [new file with mode: 0644]
python.2/core.py [new file with mode: 0644]
python.2/env.py [new file with mode: 0644]
python.2/mal_types.py [new file with mode: 0644]
python.2/reader.py [new file with mode: 0644]
python.2/run [new file with mode: 0644]
python.2/step0_repl.py [new file with mode: 0644]
python.2/step1_read_print.py [new file with mode: 0644]
python.2/step2_eval.py [new file with mode: 0644]
python.2/step3_env.py [new file with mode: 0644]
python.2/step4_if_fn_do.py [new file with mode: 0644]
python.2/step5_tco.py [new file with mode: 0644]
python.2/step6_file.py [new file with mode: 0644]
python.2/step7_quote.py [new file with mode: 0644]
python.2/step8_macros.py [new file with mode: 0644]
python.2/step9_try.py [new file with mode: 0644]
python.2/stepA_mal.py [new file with mode: 0644]
python.2/tests/__init__.py [new file with mode: 0644]
python.2/tests/test_step2.py [new file with mode: 0644]
python.2/tests/test_step3.py [new file with mode: 0644]
python.2/tests/test_step4.py [new file with mode: 0644]
python.2/tests/test_step5.py [new file with mode: 0644]
python.2/tests/test_step6.py [new file with mode: 0644]
python.2/tests/test_step7.py [new file with mode: 0644]
python.2/tests/test_step8.py [new file with mode: 0644]
python.2/tests/test_step9.py [new file with mode: 0644]
python.2/tests/test_stepA.py [new file with mode: 0644]