Update the README to be actually useful
This commit is contained in:
parent
a901694ba2
commit
824d7ecd44
1 changed files with 33 additions and 0 deletions
33
README.rst
33
README.rst
|
|
@ -1,6 +1,39 @@
|
||||||
Pykaleidoscope
|
Pykaleidoscope
|
||||||
==============
|
==============
|
||||||
|
|
||||||
|
What is this?
|
||||||
|
-------------
|
||||||
|
|
||||||
|
LLVM comes with a `great tutorial <http://llvm.org/docs/tutorial/>`_ that builds
|
||||||
|
a compiler for a simple language called Kaleidoscope. The compiler parses
|
||||||
|
Kaleidoscope into an AST, from which LLVM code is then generated using the LLVM
|
||||||
|
IR building APIs. Once we have LLVM IR, it can be JITed to generate machine code
|
||||||
|
and run it. In other words, convert your language into LLVM IR and leave the
|
||||||
|
rest to LLVM itself (including world-class optimizations).
|
||||||
|
|
||||||
|
The tutorial is presented in several "chapters" that start with a simple lexer
|
||||||
|
and build up the language step by step.
|
||||||
|
|
||||||
|
This repository contains a chapter-by-chapter translation of the LLVM tutorial
|
||||||
|
into Python, using the `llvmlite <https://github.com/numba/llvmlite>`_ package
|
||||||
|
that exposes LLVM to Python. For tips on setting up ``llvmlite`` with LLVM, `see
|
||||||
|
this blog post
|
||||||
|
<http://eli.thegreenplace.net/2015/building-and-using-llvmlite-a-basic-example/>`_.
|
||||||
|
|
||||||
|
How to use this code
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Go through the `LLVM tutorial <http://llvm.org/docs/tutorial/>`_. The files in
|
||||||
|
this repository are named after tutorial chapters and roughly correspond to the
|
||||||
|
C++ code presented in the tutorial. In each source file, the ``__main`` section
|
||||||
|
of code in the bottom is a small sample of usage, and there are also unit tests
|
||||||
|
that check a variety of cases.
|
||||||
|
|
||||||
|
Version of LLVM, Python and llvmlite
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
I tested with Python 3.4, LLVM 3.5 and top-of-tree ``llvmlite``.
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue