src/HOL/MicroJava/JVM/JVMListExample.thy
author kleing
Tue, 26 Feb 2002 15:45:32 +0100
changeset 12951 a9fdcb71d252
parent 12911 704713ca07ea
child 12973 8040cce614e5
permissions -rw-r--r--
introduces SystemClasses and BVExample
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
     1
(*  Title:      HOL/MicroJava/JVM/JVMListExample.thy
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
     2
    ID:         $Id$
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
     3
    Author:     Stefan Berghofer
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
     4
*)
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
     5
12911
704713ca07ea new document
kleing
parents: 12559
diff changeset
     6
header {* \isaheader{Example for generating executable code from JVM semantics} *}
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
     7
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
     8
theory JVMListExample = SystemClasses + JVMExec:
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
     9
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    10
consts
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    11
  list_nam :: cnam
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    12
  test_nam :: cnam
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    13
  append_name :: mname
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    14
  makelist_name :: mname
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    15
  val_nam :: vnam
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    16
  next_nam :: vnam
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    17
  test_name_loc :: loc_
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    18
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    19
constdefs
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    20
  list_name :: cname
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    21
  "list_name == Cname list_nam"
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    22
  
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    23
  test_name :: cname
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    24
  "test_name == Cname test_nam"
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    25
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    26
  val_name :: vname
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    27
  "val_name == VName val_nam"
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    28
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    29
  next_name :: vname
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    30
  "next_name == VName next_nam"
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    31
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    32
  append_ins :: bytecode
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    33
  "append_ins == 
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    34
       [Load 0,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    35
        Getfield next_name list_name,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    36
        Dup,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    37
        LitPush Null,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    38
        Ifcmpeq 4,
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    39
        Load 1,       
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    40
        Invoke list_name append_name [Class list_name],
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    41
        Return,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    42
        Pop,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    43
        Load 0,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    44
        Load 1,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    45
        Putfield next_name list_name,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    46
        LitPush Unit,
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    47
        Return]"
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    48
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    49
  list_class :: "jvm_method class"
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    50
  "list_class ==
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    51
    (Object,
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    52
     [(val_name, PrimT Integer), (next_name, Class list_name)],
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    53
     [((append_name, [Class list_name]), PrimT Void,
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    54
        (3, 0, append_ins,[(1,2,8,Xcpt NullPointer)]))])"
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    55
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    56
  make_list_ins :: bytecode
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    57
  "make_list_ins ==
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    58
       [New list_name,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    59
        Dup,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    60
        Store 0,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    61
        LitPush (Intg 1),
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    62
        Putfield val_name list_name,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    63
        New list_name,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    64
        Dup,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    65
        Store 1,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    66
        LitPush (Intg 2),
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    67
        Putfield val_name list_name,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    68
        New list_name,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    69
        Dup,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    70
        Store 2,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    71
        LitPush (Intg 3),
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    72
        Putfield val_name list_name,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    73
        Load 0,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    74
        Load 1,
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    75
        Invoke list_name append_name [Class list_name],
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    76
        Load 0,
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    77
        Load 2,
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    78
        Invoke list_name append_name [Class list_name],
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    79
        LitPush Unit,
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    80
        Return]"
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    81
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    82
  test_class :: "jvm_method class"
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    83
  "test_class ==
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    84
    (Object, [],
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    85
     [((makelist_name, []), PrimT Void, (3, 2, make_list_ins,[]))])"
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    86
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    87
  E :: jvm_prog
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    88
  "E == SystemClasses @ [(list_name, list_class), (test_name, test_class)]"
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    89
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    90
  start_heap :: aheap
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    91
  "start_heap == empty (XcptRef NullPointer \<mapsto> (Xcpt NullPointer, empty))
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    92
                       (XcptRef ClassCast \<mapsto> (Xcpt ClassCast, empty))
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    93
                       (XcptRef OutOfMemory \<mapsto> (Xcpt OutOfMemory, empty))
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    94
                       (Loc test_name_loc \<mapsto> (test_name, empty))"
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    95
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    96
  start_state :: jvm_state
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    97
  "start_state ==
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    98
    (None, start_heap, [([], [Addr (Loc test_name_loc), arbitrary, arbitrary], test_name, (makelist_name, []), 0)])"
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
    99
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   100
types_code
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   101
  cnam ("string")
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   102
  vnam ("string")
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   103
  mname ("string")
12522
69971d68fe03 fixed JVMListExample
kleing
parents: 12518
diff changeset
   104
  loc_ ("int")
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   105
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   106
consts_code
12522
69971d68fe03 fixed JVMListExample
kleing
parents: 12518
diff changeset
   107
  "new_Addr" ("new'_addr {* %x. case x of None => True | Some y => False *}/ {* None *}/ {* Loc *}")
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   108
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   109
  "wf" ("true?")
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   110
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   111
  "arbitrary" ("(raise ERROR)")
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   112
  "arbitrary" :: "val" ("{* Unit *}")
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   113
  "arbitrary" :: "cname" ("Object")
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   114
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   115
  "test_name_loc" ("0")
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   116
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   117
  "list_nam" ("\"list\"")
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   118
  "test_nam" ("\"test\"")
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   119
  "append_name" ("\"append\"")
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   120
  "makelist_name" ("\"makelist\"")
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   121
  "val_nam" ("\"val\"")
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   122
  "next_nam" ("\"next\"")
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   123
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   124
ML {*
12522
69971d68fe03 fixed JVMListExample
kleing
parents: 12518
diff changeset
   125
fun new_addr p none loc hp =
69971d68fe03 fixed JVMListExample
kleing
parents: 12518
diff changeset
   126
  let fun nr i = if p (hp (loc i)) then (loc i, none) else nr (i+1);
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   127
  in nr 0 end;
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   128
*}
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   129
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   130
subsection {* Single step execution *}
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   131
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   132
generate_code 
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   133
  test = "exec (E, start_state)"
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   134
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   135
ML {* test *}
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   136
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   137
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   138
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   139
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   140
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   141
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   142
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   143
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   144
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   145
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   146
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   147
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   148
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   149
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   150
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   151
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   152
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   153
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   154
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   155
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   156
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   157
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   158
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   159
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   160
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   161
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   162
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   163
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   164
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   165
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   166
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   167
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   168
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   169
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   170
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   171
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   172
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   173
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   174
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   175
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   176
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   177
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   178
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   179
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   180
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   181
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   182
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   183
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   184
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   185
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   186
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   187
ML {* exec (E, the it) *}
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
   188
ML {* exec (E, the it) *}
12442
0ecba8660de7 Example for code generator.
berghofe
parents:
diff changeset
   189
12522
69971d68fe03 fixed JVMListExample
kleing
parents: 12518
diff changeset
   190
end