aboutsummaryrefslogtreecommitdiff
path: root/examples/Mini/README
blob: 8d0ebe7c9d1ed8da393d4c0ca93d8cdc47108fb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
			Mini-Mini tutorial
			------------------

Mini is a very simple (semi-functional) language that I wrote to test
the generic package of BCEL.

	http://jakarta.apache.org/bcel/

Mini uses the JavaCC parser generator which comes precompiled from

	http://www.webgain.com/products/java_cc/

After  setting the  CLASSPATH to  the  directory  just above the  Mini
directory, e.g.

	% cd Mini
	% setenv CLASSPATH $CLASSPATH:.:..

try the following:

	% java Mini.MiniC max.mini

This produces a Java class file (max.class) which you can execute with

	% java max

Enter a number (4, eg.)  and you will be asked to enter 4 numbers. The
program will then tell you the biggest of them.

Alternatively you can  produce a  Java  file (max.java) which  will be
translated automatically to a .class file.

	% java Mini.MiniC -java max.mini

There are three    examples programs  (max.mini,  fac.mini,  fib.mini)
provided  which  demonstrate the language  syntax  and should be quite
easy to understand.


The compiler is not  that well documented, I'm  afraid, but  if you've
ever seen a compiler before, you should be able to understand what I'm
doing. The  part that  produces  the  byte code   is contained  in the
byte_code() method  that  all AST   nodes implement.  Take  a  look at
MiniC.java at line 85 and follow the recursive byte_code() calls.

It's also useful to use  the listclass program provided with BCEL
to examine the generated class. For example

	% java listclass max.class


Send bug reports and suggestions to

	markus.dahm@berlin.de (Markus Dahm)