https://github.com/kigawas/computation-py
Python implementation for Understanding Computation book.
https://github.com/kigawas/computation-py
automata interpreter programming-language python python3
Last synced: 5 months ago
JSON representation
Python implementation for Understanding Computation book.
- Host: GitHub
- URL: https://github.com/kigawas/computation-py
- Owner: kigawas
- License: mit
- Created: 2016-04-11T03:41:35.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2025-02-01T01:43:09.000Z (about 1 year ago)
- Last Synced: 2025-02-27T12:08:35.374Z (11 months ago)
- Topics: automata, interpreter, programming-language, python, python3
- Language: Python
- Homepage:
- Size: 236 KB
- Stars: 25
- Watchers: 3
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# computation-py
[](https://github.com/kigawas/computation-py)
[](https://github.com/kigawas/computation-py/actions)
[](https://codecov.io/gh/kigawas/computation-py)
Python implementation for [Understanding Computation](http://computationbook.com/).
## Introduction
[Understanding Computation](http://computationbook.com/) is an awesome book about computation theory, which explains profound and complicated concepts by using short and concise Ruby code snippets.
I don't want to evangelize, but if you are curious about how a program functions, you must read this book. It's just like SICP's ruby version in a way, yet with much more fun.
## What does this repository cover
I just implemented equivalent codes from chapter to chapter, those contents are:
1. Two kinds of interpreters for a simple language with a parser based on [lark](https://github.com/lark-parser/lark)
2. Generating Python code for this language instead of Ruby (Because Python's anonymous functions are quite more limited than Ruby, there are some hacks like [Y-combinator](https://kigawas.me/posts/y-combinator-in-python/))
3. Simulating automata such as DFA, NFA, PDA
4. Using automata to build a simple regular expression engine
5. Simulating a Turing machine
6. Lambda calculus and Church numbers
7. Stay tuned..
## What is your Python's version
Python 3.10+