src/HOL/MicroJava/J/Type.thy
author kleing
Thu, 21 Feb 2002 09:54:08 +0100
changeset 12911 704713ca07ea
parent 12517 360e3215f029
child 12951 a9fdcb71d252
permissions -rw-r--r--
new document
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/MicroJava/J/Type.thy
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     2
    ID:         $Id$
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     3
    Author:     David von Oheimb
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     4
    Copyright   1999 Technische Universitaet Muenchen
11070
cc421547e744 improved document (added headers etc)
oheimb
parents: 11026
diff changeset
     5
*)
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     6
12911
704713ca07ea new document
kleing
parents: 12517
diff changeset
     7
header {* \isaheader{Java types} *}
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     8
11026
a50365d21144 converted to Isar, simplifying recursion on class hierarchy
oheimb
parents: 10069
diff changeset
     9
theory Type = JBasis:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    10
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    11
typedecl cnam 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    12
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    13
 -- "exceptions"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    14
datatype 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    15
  xcpt   
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    16
  = NullPointer
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    17
  | ClassCast
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    18
  | OutOfMemory
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    19
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    20
-- "class names"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    21
datatype cname  
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    22
  = Object 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    23
  | Xcpt xcpt 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    24
  | Cname cname 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    25
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    26
typedecl vnam   -- "variable or field name"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    27
typedecl mname  -- "method name"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    28
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    29
-- "names for @{text This} pointer and local/field variables"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    30
datatype vname 
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    31
  = This
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    32
  | VName vnam
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    33
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    34
-- "primitive type, cf. 4.2"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    35
datatype prim_ty 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    36
  = Void          -- "'result type' of void methods"
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    37
  | Boolean
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    38
  | Integer
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    39
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    40
-- "reference type, cf. 4.3"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    41
datatype ref_ty   
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    42
  = NullT         -- "null type, cf. 4.1"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    43
  | ClassT cname  -- "class type"
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    44
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    45
-- "any type, cf. 4.1"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    46
datatype ty 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    47
  = PrimT prim_ty -- "primitive type"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    48
  | RefT  ref_ty  -- "reference type"
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    49
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    50
syntax
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    51
  NT    :: "ty"
10069
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    52
  Class :: "cname  => ty"
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    53
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    54
translations
10069
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    55
  "NT"      == "RefT NullT"
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    56
  "Class C" == "RefT (ClassT C)"
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    57
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    58
end