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