src/HOL/NanoJava/Term.thy
changeset 80914 d97fdabd9e2b
parent 67443 3abf6a722518
equal deleted inserted replaced
80913:46f59511b7bb 80914:d97fdabd9e2b
    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