src/HOL/MicroJava/J/Term.thy
author wenzelm
Mon, 29 Nov 1999 15:52:49 +0100
changeset 8039 a901bafe4578
parent 8011 d14c4e9e9c8e
child 9240 f4d76cb26433
permissions -rw-r--r--
Goal: tuned pris;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/MicroJava/J/Term.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
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     5
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     6
Java expressions and statements
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     7
*)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     8
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     9
Term = Type + 
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    10
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    11
types   loc		(* locations, i.e. abstract references on objects *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    12
arities loc :: term
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    13
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    14
datatype val_		(* name non 'val' because of clash with ML token *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    15
	= Unit		(* dummy result value of void methods *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    16
	| Null		(* null reference *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    17
	| Bool bool	(* Boolean value *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    18
	| Intg int	(* integer value *) (* Name Intg instead of Int because
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    19
					       of clash with HOL/Set.thy *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    20
	| Addr loc	(* addresses, i.e. locations of objects *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    21
types	val = val_
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    22
translations "val" <= (type) "val_"
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    23
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    24
datatype expr
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    25
	= NewC	cname		   (* class instance creation *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    26
	| Cast	ty expr		   (* type cast *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    27
	| Lit	val		   (* literal value, also references *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    28
	| LAcc vname		   (* local (incl. parameter) access *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    29
	| LAss vname expr          (* local assign *) ("_\\<Colon>=_"  [      90,90]90)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    30
	| FAcc cname expr vname    (* field access *) ("{_}_.._"[10,90,99   ]90)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    31
	| FAss cname expr vname 
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    32
	                  expr     (* field ass. *)("{_}_.._\\<in>=_"[10,90,99,90]90)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    33
	| Call expr mname (ty list) (expr list)(* method call*)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    34
                                    ("_.._'({_}_')" [90,99,10,10] 90)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    35
and stmt
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    36
	= Skip			   (* empty      statement *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    37
	| Expr expr		   (* expression statement *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    38
	| Comp stmt stmt	   ("_;; _"			[      61,60]60)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    39
	| Cond expr stmt stmt      ("If'(_') _ Else _"		[   80,79,79]70)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    40
	| Loop expr stmt	   ("While'(_') _"		[      80,79]70)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    41
end