23 Res_neq_This [simp]: "Res \<noteq> This" |
23 Res_neq_This [simp]: "Res \<noteq> This" |
24 *) |
24 *) |
25 |
25 |
26 datatype stmt |
26 datatype stmt |
27 = Skip \<comment> \<open>empty statement\<close> |
27 = Skip \<comment> \<open>empty statement\<close> |
28 | Comp stmt stmt ("_;; _" [91,90 ] 90) |
28 | Comp stmt stmt (\<open>_;; _\<close> [91,90 ] 90) |
29 | Cond expr stmt stmt ("If '(_') _ Else _" [ 3,91,91] 91) |
29 | Cond expr stmt stmt (\<open>If '(_') _ Else _\<close> [ 3,91,91] 91) |
30 | Loop vname stmt ("While '(_') _" [ 3,91 ] 91) |
30 | Loop vname stmt (\<open>While '(_') _\<close> [ 3,91 ] 91) |
31 | LAss vname expr ("_ :== _" [99, 95] 94) \<comment> \<open>local assignment\<close> |
31 | LAss vname expr (\<open>_ :== _\<close> [99, 95] 94) \<comment> \<open>local assignment\<close> |
32 | FAss expr fname expr ("_.._:==_" [95,99,95] 94) \<comment> \<open>field assignment\<close> |
32 | FAss expr fname expr (\<open>_.._:==_\<close> [95,99,95] 94) \<comment> \<open>field assignment\<close> |
33 | Meth "cname \<times> mname" \<comment> \<open>virtual method\<close> |
33 | Meth "cname \<times> mname" \<comment> \<open>virtual method\<close> |
34 | Impl "cname \<times> mname" \<comment> \<open>method implementation\<close> |
34 | Impl "cname \<times> mname" \<comment> \<open>method implementation\<close> |
35 and expr |
35 and expr |
36 = NewC cname ("new _" [ 99] 95) \<comment> \<open>object creation\<close> |
36 = NewC cname (\<open>new _\<close> [ 99] 95) \<comment> \<open>object creation\<close> |
37 | Cast cname expr \<comment> \<open>type cast\<close> |
37 | Cast cname expr \<comment> \<open>type cast\<close> |
38 | LAcc vname \<comment> \<open>local access\<close> |
38 | LAcc vname \<comment> \<open>local access\<close> |
39 | FAcc expr fname ("_.._" [95,99] 95) \<comment> \<open>field access\<close> |
39 | FAcc expr fname (\<open>_.._\<close> [95,99] 95) \<comment> \<open>field access\<close> |
40 | Call cname expr mname expr |
40 | Call cname expr mname expr |
41 ("{_}_.._'(_')" [99,95,99,95] 95) \<comment> \<open>method call\<close> |
41 (\<open>{_}_.._'(_')\<close> [99,95,99,95] 95) \<comment> \<open>method call\<close> |
42 |
42 |
43 end |
43 end |
44 |
44 |