This example compiles arithmetical expressions (without assignments) to 
simple ARM assembly code. It has a serious problem, though: when the
expression is too complex, a non-free register holding a value is reused,
so the results will be incorrect.

Example:

$ echo "(z+3)*(4-(5+x))" | ./compiler 
	ldr r0, =z
	ldr r0, [r0]
	mov r1, #3
	add r2, r0, r1
	mov r3, #4
	mov r4, #5
	ldr r5, =x
	ldr r5, [r5]
	add r0, r4, r5
	sub r0, r3, r0
	mul r1, r2, r0

Again, no symbol table has been implemented for this example.

