xref: /aosp_15_r20/external/apache-commons-bcel/src/examples/Mini/README (revision 0c56280ab0842982c46a149f7b9eaa497e31e292)
1*0c56280aSSorin Basca            Mini-Mini tutorial
2*0c56280aSSorin Basca            ------------------
3*0c56280aSSorin Basca
4*0c56280aSSorin BascaMini is a very simple (semi-functional) language that I wrote to test
5*0c56280aSSorin Bascathe generic package of BCEL.
6*0c56280aSSorin Basca
7*0c56280aSSorin Basca    http://commons.apache.org/bcel/
8*0c56280aSSorin Basca
9*0c56280aSSorin BascaMini uses the JavaCC parser generator which comes precompiled from
10*0c56280aSSorin Basca
11*0c56280aSSorin Basca    http://www.webgain.com/products/java_cc/
12*0c56280aSSorin Basca
13*0c56280aSSorin BascaAfter  setting the  CLASSPATH to  the  directory  just above the  Mini
14*0c56280aSSorin Bascadirectory, e.g.
15*0c56280aSSorin Basca
16*0c56280aSSorin Basca    % cd Mini
17*0c56280aSSorin Basca    % setenv CLASSPATH $CLASSPATH:.:..
18*0c56280aSSorin Basca
19*0c56280aSSorin Bascatry the following:
20*0c56280aSSorin Basca
21*0c56280aSSorin Basca    % java Mini.MiniC max.mini
22*0c56280aSSorin Basca
23*0c56280aSSorin BascaThis produces a Java class file (max.class) which you can execute with
24*0c56280aSSorin Basca
25*0c56280aSSorin Basca    % java max
26*0c56280aSSorin Basca
27*0c56280aSSorin BascaEnter a number (4, eg.)  and you will be asked to enter 4 numbers. The
28*0c56280aSSorin Bascaprogram will then tell you the biggest of them.
29*0c56280aSSorin Basca
30*0c56280aSSorin BascaAlternatively you can  produce a  Java  file (max.java) which  will be
31*0c56280aSSorin Bascatranslated automatically to a .class file.
32*0c56280aSSorin Basca
33*0c56280aSSorin Basca    % java Mini.MiniC -java max.mini
34*0c56280aSSorin Basca
35*0c56280aSSorin BascaThere are three    examples programs  (max.mini,  fac.mini,  fib.mini)
36*0c56280aSSorin Bascaprovided  which  demonstrate the language  syntax  and should be quite
37*0c56280aSSorin Bascaeasy to understand.
38*0c56280aSSorin Basca
39*0c56280aSSorin Basca
40*0c56280aSSorin BascaThe compiler is not  that well documented, I'm  afraid, but  if you've
41*0c56280aSSorin Bascaever seen a compiler before, you should be able to understand what I'm
42*0c56280aSSorin Bascadoing. The  part that  produces  the  byte code   is contained  in the
43*0c56280aSSorin Bascabyte_code() method  that  all AST   nodes implement.  Take  a  look at
44*0c56280aSSorin BascaMiniC.java at line 85 and follow the recursive byte_code() calls.
45*0c56280aSSorin Basca
46*0c56280aSSorin BascaIt's also useful to use  the listclass program provided with BCEL
47*0c56280aSSorin Bascato examine the generated class. For example
48*0c56280aSSorin Basca
49*0c56280aSSorin Basca    % java listclass max.class
50*0c56280aSSorin Basca
51*0c56280aSSorin Basca
52*0c56280aSSorin BascaSend bug reports and suggestions to
53*0c56280aSSorin Basca
54*0c56280aSSorin Basca    [email protected] (Markus Dahm)
55