src/HOL/MicroJava/J/Term.thy
author kleing
Fri, 22 Sep 2000 16:28:53 +0200
changeset 10061 fe82134773dc
parent 10042 7164dc0d24d8
child 10069 c7226e6f9625
permissions -rw-r--r--
added HTML syntax; added spaces in normal syntax for better documents
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
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents: 9240
diff changeset
     9
Term = Value + 
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    10
9240
f4d76cb26433 added BinOp
oheimb
parents: 8011
diff changeset
    11
datatype binop = Eq | Add	   (* function codes for binary operation *)
f4d76cb26433 added BinOp
oheimb
parents: 8011
diff changeset
    12
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    13
datatype expr
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    14
	= NewC	cname              (* class instance creation *)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    15
	| Cast	cname expr         (* type cast *)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    16
	| Lit	val                  (* literal value, also references *)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    17
  | BinOp binop  expr expr   (* binary operation *)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    18
	| LAcc vname               (* local (incl. parameter) access *)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    19
	| LAss vname expr          (* local assign *) ("_::=_"   [      90,90]90)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    20
	| FAcc cname expr vname    (* field access *) ("{_}_.._" [10,90,99   ]90)
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    21
	| FAss cname expr vname 
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    22
                    expr     (* field ass. *) ("{_}_.._:=_" [10,90,99,90]90)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    23
	| Call expr mname 
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    24
    (ty list) (expr list)    (* method call*) ("_.._'({_}_')" [90,99,10,10] 90)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    25
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    26
and stmt
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    27
	= Skip                     (* empty statement *)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    28
  | Expr expr                (* expression statement *)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    29
  | Comp stmt stmt       ("_;; _"             [61,60]60)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    30
  | Cond expr stmt stmt  ("If '(_') _ Else _" [80,79,79]70)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    31
  | Loop expr stmt       ("While '(_') _"     [80,79]70)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    32
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    33
end