author | wenzelm |
Tue, 29 Dec 2015 16:23:34 +0100 | |
changeset 61959 | 364007370bb7 |
parent 58889 | 5b7a9633cfa8 |
child 63167 | 0909deb8059b |
permissions | -rw-r--r-- |
11376 | 1 |
(* Title: HOL/NanoJava/Term.thy |
41589 | 2 |
Author: David von Oheimb, Technische Universitaet Muenchen |
11376 | 3 |
*) |
4 |
||
58889 | 5 |
section "Statements and expression emulations" |
11376 | 6 |
|
16417 | 7 |
theory Term imports Main begin |
11376 | 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 | 13 |
|
44375 | 14 |
axiomatization |
15 |
This --{* This pointer *} |
|
16 |
Par --{* method parameter *} |
|
11558
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
17 |
Res :: vname --{* method result *} |
44375 | 18 |
-- {* Inequality axioms are not required for the meta theory. *} |
11558
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
19 |
(* |
44375 | 20 |
where |
11558
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
21 |
This_neq_Par [simp]: "This \<noteq> Par" |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
22 |
Par_neq_Res [simp]: "Par \<noteq> Res" |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
23 |
Res_neq_This [simp]: "Res \<noteq> This" |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
24 |
*) |
11376 | 25 |
|
58310 | 26 |
datatype stmt |
11558
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
27 |
= Skip --{* empty statement *} |
11476 | 28 |
| Comp stmt stmt ("_;; _" [91,90 ] 90) |
11565 | 29 |
| Cond expr stmt stmt ("If '(_') _ Else _" [ 3,91,91] 91) |
30 |
| Loop vname stmt ("While '(_') _" [ 3,91 ] 91) |
|
11560 | 31 |
| LAss vname expr ("_ :== _" [99, 95] 94) --{* local assignment *} |
32 |
| FAss expr fname expr ("_.._:==_" [95,99,95] 94) --{* field assignment *} |
|
11558
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
33 |
| Meth "cname \<times> mname" --{* virtual method *} |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
34 |
| Impl "cname \<times> mname" --{* method implementation *} |
11476 | 35 |
and expr |
11558
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
36 |
= NewC cname ("new _" [ 99] 95) --{* object creation *} |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
37 |
| Cast cname expr --{* type cast *} |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
38 |
| LAcc vname --{* local access *} |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
39 |
| FAcc expr fname ("_.._" [95,99] 95) --{* field access *} |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
40 |
| Call cname expr mname expr |
6539627881e8
simplified vnam/vname, introduced fname, improved comments
oheimb
parents:
11507
diff
changeset
|
41 |
("{_}_.._'(_')" [99,95,99,95] 95) --{* method call *} |
11376 | 42 |
|
43 |
end |
|
44 |