src/HOL/NanoJava/Term.thy
author haftmann
Fri, 17 Jun 2005 16:12:49 +0200
changeset 16417 9bc16273c2d4
parent 11565 ab004c0ecc63
child 41589 bbd861837ebc
permissions -rw-r--r--
migrated theory headers to new format
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
16417
9bc16273c2d4 migrated theory headers to new format
haftmann
parents: 11565
diff changeset
     9
theory Term imports Main begin
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    10
11558
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    11
typedecl cname  --{* class    name *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    12
typedecl mname  --{* method   name *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    13
typedecl fname  --{* field    name *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    14
typedecl vname  --{* variable name *}
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    15
11558
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    16
consts 
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    17
  This :: vname --{* This pointer *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    18
  Par  :: vname --{* method parameter *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    19
  Res  :: vname --{* method result *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    20
11565
ab004c0ecc63 Minor improvements, added Example
oheimb
parents: 11560
diff changeset
    21
text {* Inequality axioms are not required for the meta theory. *}
11558
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    22
(*
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    23
axioms
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    24
  This_neq_Par [simp]: "This \<noteq> Par"
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    25
  Par_neq_Res  [simp]: "Par \<noteq> Res"
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    26
  Res_neq_This [simp]: "Res \<noteq> This"
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    27
*)
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    28
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    29
datatype stmt
11558
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    30
  = Skip                   --{* empty statement *}
11476
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    31
  | Comp       stmt stmt   ("_;; _"             [91,90   ] 90)
11565
ab004c0ecc63 Minor improvements, added Example
oheimb
parents: 11560
diff changeset
    32
  | Cond expr  stmt stmt   ("If '(_') _ Else _" [ 3,91,91] 91)
ab004c0ecc63 Minor improvements, added Example
oheimb
parents: 11560
diff changeset
    33
  | Loop vname stmt        ("While '(_') _"     [ 3,91   ] 91)
11560
46d0bde121ab marginally improved comments
oheimb
parents: 11558
diff changeset
    34
  | LAss vname expr        ("_ :== _"           [99,   95] 94) --{* local assignment *}
46d0bde121ab marginally improved comments
oheimb
parents: 11558
diff changeset
    35
  | FAss expr  fname expr  ("_.._:==_"          [95,99,95] 94) --{* field assignment *}
11558
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    36
  | Meth "cname \<times> mname"   --{* virtual method *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    37
  | Impl "cname \<times> mname"   --{* method implementation *}
11476
06c1998340a8 changed to full expressions with side effects
oheimb
parents: 11376
diff changeset
    38
and expr
11558
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    39
  = NewC cname       ("new _"        [   99] 95) --{* object creation  *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    40
  | Cast cname expr                              --{* type cast        *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    41
  | LAcc vname                                   --{* local access     *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    42
  | FAcc expr  fname ("_.._"         [95,99] 95) --{* field access     *}
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    43
  | Call cname expr mname expr                   
6539627881e8 simplified vnam/vname, introduced fname, improved comments
oheimb
parents: 11507
diff changeset
    44
                     ("{_}_.._'(_')" [99,95,99,95] 95) --{* method call *}
11376
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    45
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    46
end
bf98ad1c22c6 added NanoJava
oheimb
parents:
diff changeset
    47