src/HOL/NanoJava/Term.thy
author wenzelm
Thu, 09 Aug 2001 23:42:45 +0200
changeset 11499 7a7bb59a05db
parent 11497 0e66e0114d9a
child 11507 4b32a46ffd29
permissions -rw-r--r--
removed obsolete "arities";
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     1
(*  Title:      HOL/NanoJava/Term.thy
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     2
    ID:         $Id$
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     3
    Author:     David von Oheimb
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     4
    Copyright   2001 Technische Universitaet Muenchen
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     5
*)
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     6
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     7
header "Statements and expression emulations"
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     8
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
     9
theory Term = Main:
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    10
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    11
typedecl cname  (* class name *)
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    12
typedecl vnam   (* variable or field name *)
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    13
typedecl mname  (* method name *)
11497
0e66e0114d9a corrected initialization of locals, streamlined Impl
oheimb
parents: 11486
diff changeset
    14
types   imname = "cname \<times> mname"
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    15
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    16
datatype vname  (* variable for special names *)
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    17
  = This        (* This pointer *)
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    18
  | Param       (* method parameter *)
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    19
  | Res         (* method result *)
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    20
  | VName vnam 
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    21
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    22
datatype stmt
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    23
  = Skip                   (* empty statement *)
11476
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    24
  | Comp       stmt stmt   ("_;; _"             [91,90   ] 90)
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    25
  | Cond expr  stmt stmt   ("If '(_') _ Else _" [99,91,91] 91)
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    26
  | Loop vname stmt        ("While '(_') _"     [99,91   ] 91)
11476
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    27
  | LAss vname expr        ("_ :== _"           [99,   95] 94) (* local ass. *)
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    28
  | FAss expr  vnam expr   ("_.._:==_"          [95,99,95] 94) (* field ass. *)
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    29
  | Meth cname mname       (* virtual method *)
11497
0e66e0114d9a corrected initialization of locals, streamlined Impl
oheimb
parents: 11486
diff changeset
    30
  | Impl      imname       (* method implementation *)
11476
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    31
and expr
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    32
  = NewC cname       ("new _"        [   99] 95) (* object creation  *)
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    33
  | Cast cname expr                              (* type cast        *)
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    34
  | LAcc vname                                   (* local access     *)
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    35
  | FAcc expr  vnam  ("_.._"         [95,99] 95) (* field access     *)
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    36
  | Call cname expr mname expr                   (* method call      *)
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    37
                     ("{_}_.._'(_')" [99,95,99,95] 95)
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    38
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    39
end
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    40