grammar PIR::Grammar;

rule pmc_op { 
  callmethodcc        <arg_hack> #
| callmethod          <arg_hack> #
| tailcallmethod      <arg_hack> #
| addmethod           <arg_hack> #
| can                 <arg_hack> #
| does                <arg_hack> #
| isa                 <arg_hack> #
| newclass            <arg_hack> #
| subclass            <arg_hack> #
| get_class            <arg_hack> #
| class               <arg_hack> #
| classname           <arg_hack> #
| addparent           <arg_hack> #
| removeparent        <arg_hack> #
| addattribute        <arg_hack> #
| removeattribute     <arg_hack> #
| getattribute        <arg_hack> #
| setattribute        <arg_hack> #
| new <var> \, [ <arg_int> | <arg_string> | <macro_id> ]
| typeof              <arg_hack> #
| find_type           <arg_hack> #
| valid_type          <arg_hack> #
| get_repr            <arg_hack> #
| find_method         <arg_hack> #
| defined             <arg_hack> #
| exists              <arg_hack> #
| delete              <target> <PGE::Text::bracketed: []> #
| elements            <arg_hack> #
| push                <arg_hack> #
| pop                 <arg_hack> #
| unshift             <arg_hack> #
| shift               <arg_hack> #
| setprop             <arg_hack> #
| getprop             <arg_hack> #
| delprop             <arg_hack> #
| prophash            <arg_hack> #
| freeze              <arg_hack> #
| thaw                <arg_hack> #
| add_multi           <arg_hack> #
| find_multi          <arg_hack> #
| register            <arg_hack> #
| unregister          <arg_hack> #
| hash                <arg_hack> #
}
