BabelBuster -- C to English to C Translator

Written by Jonathan Baccash
Last modified: April 17, 2001

About BabelBuster

BabelBuster translates preprocessed C source code into English. It can also translate the English back into C.

BabelBuster is a submitted portion of my Princeton University undergraduate thesis, advised by Andrew Appel. It was inspired by the proceedings and rulings in several court cases concerning the U.S. judicial system's treatment of source code with respect to First Amendment law. If source code can be machine translated to English and vice versa, is there a point in distinguishing between source code and English prose? This issue is also explored and elaborated upon by Dr. David Touretzky in his Gallery of CSS Descramblers.

As far as I can tell, the idea for such a translator was first introduced by Leevi Marttila's c2txt2c, which translated C programs into English that was unrelated to the original code. Thus, this was a kind of "encryption" of C into English. Later, Omri Schwartz wrote c2eng, which translated the C into text that described the actual functioning of the program.

BabelBuster was created with the vision that C source code can be machine translated into grammatically correct English that is easy to read, and that this English can be machine translated back into C. Has BabelBuster succeeded? Take a look and decide for yourself.

Installing BabelBuster

BabelBuster is written in ML for SML/NJ. To run BabelBuster, you must first install SML/NJ. Then download babel-buster.tar, and unzip it.

Using BabelBuster

Read the file README.txt in the unzipped babel-buster directory.

Example translations

"I've read patent applications that were not as clear in their descriptions of algorithms."
- C Pioneer Brian Kernighan

example1.c
example2.c
blowfish.c
example1.e
example2.e
blowfish.e
example1-from-english.c
example2-from-english.c
blowfish-from-english.c

decss.e. For decss.c, see Dr. Touretzky's Gallery of CSS Descramblers.