src/HOL/MicroJava/J/Term.thy
author oheimb
Mon, 05 Feb 2001 20:14:15 +0100
changeset 11070 cc421547e744
parent 11026 a50365d21144
child 12517 360e3215f029
permissions -rw-r--r--
improved document (added headers etc)
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
11070
cc421547e744 improved document (added headers etc)
oheimb
parents: 11026
diff changeset
     5
*)
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     6
11070
cc421547e744 improved document (added headers etc)
oheimb
parents: 11026
diff changeset
     7
header "Expressions and Statements"
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     8
11026
a50365d21144 converted to Isar, simplifying recursion on class hierarchy
oheimb
parents: 10763
diff changeset
     9
theory Term = Value:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    10
10069
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    11
datatype binop = Eq | Add    (* function codes for binary operation *)
9240
f4d76cb26433 added BinOp
oheimb
parents: 8011
diff changeset
    12
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    13
datatype expr
10069
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    14
  = NewC cname               (* class instance creation *)
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    15
  | Cast cname expr          (* type cast *)
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    16
  | Lit val                  (* literal value, also references *)
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    17
  | BinOp binop expr expr    (* binary operation *)
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    18
  | LAcc vname               (* local (incl. parameter) access *)
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    19
  | LAss vname expr          (* local assign *) ("_::=_"   [      90,90]90)
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    20
  | FAcc cname expr vname    (* field access *) ("{_}_.._" [10,90,99   ]90)
c7226e6f9625 untabified for HTML
kleing
parents: 10061
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)
10763
08e1610c1dcb added type annotation to Call
oheimb
parents: 10119
diff changeset
    23
  | Call cname expr mname 
11026
a50365d21144 converted to Isar, simplifying recursion on class hierarchy
oheimb
parents: 10763
diff changeset
    24
    "ty list" "expr list"    (* method call*) ("{_}_.._'( {_}_')"
10763
08e1610c1dcb added type annotation to Call
oheimb
parents: 10119
diff changeset
    25
                                                            [10,90,99,10,10] 90)
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    26
10119
20c9590bb5f5 separated expr and stmt
nipkow
parents: 10069
diff changeset
    27
datatype stmt
10069
c7226e6f9625 untabified for HTML
kleing
parents: 10061
diff changeset
    28
  = Skip                     (* empty statement *)
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    29
  | Expr expr                (* expression statement *)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    30
  | Comp stmt stmt       ("_;; _"             [61,60]60)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    31
  | 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
    32
  | Loop expr stmt       ("While '(_') _"     [80,79]70)
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    33
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    34
end
11026
a50365d21144 converted to Isar, simplifying recursion on class hierarchy
oheimb
parents: 10763
diff changeset
    35