There are no reviews yet. Be the first to send feedback to the community and the maintainers!
ICHBINS This is a self-hosting compiler of a Lisp dialect to C in 6 pages of code. I've tried to make it as simple as possible, with almost no concessions to performance or extra functionality -- it's meant to be educational rather than useful. QUICK START $ git clone [email protected]:darius/ichbins.git (Or get a tarball from http://github.com/darius/ichbins) $ cd ichbins $ make To compile a program named foo.scm and then run it: $ ./ichbins <foo.scm >foo.c $ cc foo.c -o foo $ ./foo There's a sketchy overview of the language and system in Overview.text. To make a change to the compiler and rebuild it, just typing 'make' isn't sufficient because of the circular dependency. 'make' will build an executable named ichbins2, compiling the current source with the previous executable. To replace that executable, type './bless', which does two tests: * That the tests in the tests/ directory pass. * That the old and new versions of the compiler executable produce the same C output from the compiler source. This test typically passes for routine changes to the source, but it's perfectly OK for it to fail; you should just be sure you can say why this case is expected. Then do 'mv ichbins2 ichbins' by hand and do ./bless again; this time it must pass, or something's buggered. The Lisp dialect implemented here is documented in Documentation.md. MOTIVATION I'm a nut who wants to grow a beautiful wholeness from tiny beginnings. This is a rewrite of 'icbins', which had the same larger goal in mind but a more immediate focus on playing with bootstrapping. Direct influences include: Steele & Sussman, "The Art of the Interpreter" http://library.readscheme.org/page1.html Marc Feeley, "Scheme in 90 Minutes" http://www.iro.umontreal.ca/~boucherd/mslug/meetings/20041020/minutes-en.html (which compiles a more powerful Scheme subset, but is longer and not self-hosting) The name 'ichbins' could stand for "I Can Hardly Believe It's Not Scheme!" See also https://github.com/darius/elv for a more featureful descendant. THANKS To Johnicholas Hines for example code. To Manuel Simoni and Kragen Sitaker for feedback. LICENSE & CONTACT Copyright 2007 Darius Bacon under the terms of the MIT X license found at http://www.opensource.org/licenses/mit-license.html Darius Bacon <[email protected]>
requestAnimationFrame
Polyfill for requestAnimationFrame/cancelAnimationFrameawklisp
A Lisp interpreter written in Awk.code-canon
A catalog of code worth readingexpr
Evaluate mathematical expressions in Javahalp
Run programs in the Emacs buffer holding their source, seeing their output inline, interactively.languagetoys
Random fun with statistical language models.wren
Language with a bytecode compiler that can run on computers with only a few kB of RAM.parson
Yet another PEG parser combinator library and DSLcant
A programming argottush
Literate testing for command-line programsbytebeat
Coded music in HTML5sketchbook
Smallish programs written to learn something.tailbiter
Self-compiling compiler of a Python subset. Just enough Python to Python in Python.peglet
Robinson Crusoe's parsing librarypythological
A MiniKanren in Pythonregexercise
Exercises in implementing regular-expression searchspaced-out
Vocab drill using parallel corpora, plus classic spaced-repetition drilltusl
A scripting language for extending C programs; recognizably Forth-like, but definitely not Forth.amphigory
Metrical rhyming verse in Javascriptmiasma
An x86 machine-code toolkitaima-python-mirror
Mirror of the aima-python svn repositorymccarthy-to-bryant
Propositional logic in terms of if-then-elsecogen
Compiler generator (3rd Futamura projection) for first-order Schememixal
Assembler and emulator for Knuth's MIX machineung
Pointless reimplementation of Unix userland tools.idel
A low-level virtual machine for mobile codeminilight.js
A MiniLight Javascript porttinyhiss
A Smalltalk in Pythonvicissicalc
A spreadsheet program for my own amusement.toot
A small language to demo turning an interpreter into a compilerconsp
A capability-secure Scheme dialectlogsim
A digital logic simulator to work through the book The Elements of Computing Systems.sturm
Simpleminded terminal interfaceake
A 'make' program in one little Awk fileelv
A very basic Lisp + Erlang-style processes, on a virtual machinequick-study
To explore tracing JIT compilers and explanation-based learningmath-toys
HTML5 canvas widgets for exploring complex arithmeticcolumnize
View strings, Python dir() output in particular, in nice columns.squerm
Prototype of a concurrent Scheme dialecthmph
Prototype of a system for user-programmable websites; a kind of mishmash of Smalltalk, Boxer, E, and wikis.versecop
Match text against verse forms, like: is this line in iambic pentameter?transparent-dilemma
The Prisoner's Dilemma for agents that see each other's source code.req
A rewrite-rule languagesuperbench
A cross-language shootout, starting with a circuit superoptimizerBleaty-the-Lamb
A superoptimizer for the lambda calculuspeckcheck
Randomized testing library for Python; like a subset of Haskell's QuickCheck.spellmell
A quickie spelling correctorselfcentered
A self-centered compilercircuitexpress
Secret project 42Arebabbage
Design studies for a mechanical computerescheme
A Scheme dialect built on and interoperable with Emacs Lisp. Why, I dunno -- for the hell of it?js-playground
Stuff I write to learn Javascriptgoobergram
A Python rewrite of Mark Jason Dominus's linogram language. Unfinished.unitcalc
Calculator with units.sniki
A semantic-network wikitraitor
My translations to English of public-domain worksalliterate
Compute alliteration scores for English textregexercise_solutions
My answers to the regexercise problemsunmush
Take wordsmushedtogether and guess how to split them back into individual words.dole
The Doe text editor rewritten in Luagreek_to_me
Guess the language of a text using n-gram modelstusdl
SDL binding for Tusl, plus some programs using it: two genetic picture-breeders, A-life simulations, etc.clickcheck
Randomized testing library for Common Lisp; like a subset of Haskell's QuickCheck.icfp09
Tackling the 2009 ICFP contestyajson
JSON library for Python, generating both pure-Python and C-extension versions from a common spec.wirth-a-risc
Wirth's RISC machine in softwaretoy-compiler
A compiler for a toy language, in Standard MLunreal
Van Wyk's IDEAL picture language redone in Pythonlurx
Regular expression matching in Luaindent
indentational syntax for Scheme (ancient)github-contest-2009
Just for funone-day-i-will-play-chess
hackety hack hack hackbookdraft
Literate programs demonstrating self-reliancesquee
A sketchy language for a blog post or somethingpother
Another toy programming language imitating bits of Echispa
Indexed text search in <500lineswason
Webification of http://lesswrong.com/lw/g2/positive_bias_test_c_programcs191
Biomolecular Computation classworkpeglet.js
Adaptable parsingradiation
Mutagens for everyone!bicicleta.js
Kragen's Bicicleta now all in Javascripthello-canvas
Like "hello, world', but for HTML5 canvas hacking.ml-fumbling
Phlogisticosh. Rhomothriglyph. Floof.quarters
more metateeny
A Scheme subset with reflective access to Java. A relic of the 90s.codingquizzes
nothing here but my attempts at some coding quizzesbicicleta.py
Another slow prototype of Kragen's BicicletaLove Open Source and this site? Check out how you can help us