hi, attached a new patch, replacing the other one from 2/17.
kjs
Index: languages/PIR/lib/pasm_args.pg =================================================================== --- languages/PIR/lib/pasm_args.pg (revision 17016) +++ languages/PIR/lib/pasm_args.pg (working copy) @@ -1,4 +1,4 @@ -grammar PIRGrammar; +grammar PIR::Grammar; # This file contains helper rules to handle # the PASM instruction arguments. Many instructions Index: languages/PIR/lib/pasm_core.pg =================================================================== --- languages/PIR/lib/pasm_core.pg (revision 17016) +++ languages/PIR/lib/pasm_core.pg (working copy) @@ -7,59 +7,59 @@ # end | noop -| reserved <int_constant> -| load_bytecode <arg_string> +| reserved <arg_hack> #<int_constant> +| load_bytecode <arg_hack> #<arg_string> # # control flow # -| branch <arg_int> -| branch_cs <arg_string> -| bsr <arg_int> +| branch <arg_hack> #<arg_int> +| branch_cs <arg_hack> #<arg_string> +| bsr <arg_hack> #<arg_int> | ret | jsr <arg_int> | enternative # conditional branch -| if <var> \, <arg_int> -| unless <var> \, <arg_int> - # subroutine ops -| invokecc <arg_pmc_var> -| invoke <arg_pmc_var> \, <arg_pmc_var> -| yield -| tailcall <arg_pmc_var> -| returncc -| newclosure <arg_pmc_var> \, <arg_pmc_var> +| if <arg_hack> #<target> \, <arg_int> +| unless <arg_hack> #<target> \, <arg_int> + # subroutine ops <arg_hack> # +| invokecc <arg_hack> #<arg_pmc_target> +| invoke <arg_hack> #<arg_pmc_target> \, <arg_pmc_target> +| yield <arg_hack> # +| tailcall <arg_hack> #<arg_pmc_target> +| returncc <arg_hack> # +| newclosure <arg_hack> #<arg_pmc_target> \, <arg_pmc_target> # function args ops -| set_args <arg_set_args> -| get_results <arg_get_results> -| get_params <arg_get_params> -| set_returns <arg_set_returns> +| set_args <arg_hack> # <arg_set_args> +| get_results <arg_hack> # <arg_get_results> +| get_params <arg_hack> # <arg_get_params> +| set_returns <arg_hack> # <arg_set_returns> | result_info <arg_hack> # address manipulation -| set_addr <arg_hack> #<var> \, <int_constant> -| get_addr <arg_hack> #<var> \, <var> +| set_addr <arg_hack> #<target> \, <int_constant> +| get_addr <arg_hack> #<target> \, <target> # exception handling | push_eh <arg_hack> #<id> | clear_eh <arg_hack> # -| throw <arg_hack> #<var> -| rethrow <arg_hack> #<var> +| throw <arg_hack> #<target> +| rethrow <arg_hack> #<target> | die <arg_hack> #<int_constant> \, <int_constant> | exit <arg_hack> #<int_constant> | pushmark <arg_hack> #<int_constant> | popmark <arg_hack> #<int_constant> -| pushaction <arg_hack> #<var> +| pushaction <arg_hack> #<target> # interpreter ops | debug <arg_hack> #<int_constant> | bounds <arg_hack> #<int_constant> | profile <arg_hack> #<int_constant> | trace <arg_hack> #<int_constant> | gc_debug <arg_hack> #<int_constant> -| interpinfo <arg_hack> #<var> \, <int_constant> +| interpinfo <arg_hack> #<target> \, <int_constant> | warningson <arg_hack> #<int_constant> | warningsoff <arg_hack> #<int_constant> | errorson <arg_hack> #<int_constant> | errorsoff <arg_hack> #<int_constant> -| runinterp <arg_hack> #<var> \, <int_constant> -| getinterp <arg_hack> #<var> +| runinterp <arg_hack> #<target> \, <int_constant> +| getinterp <arg_hack> #<target> # DOD/GC | sweep <arg_hack> #<int_constant> | collect @@ -67,11 +67,11 @@ | sweepon | collectoff | collecton -| needs_destroy <arg_hack> #<var> +| needs_destroy <arg_hack> #<target> # NCI -| loadlib <arg_hack> #<var> \, <var> -| dlfunc <arg_hack> #<var> \, <var> \, <var> \, <var> -| dlvar <arg_hack> #<var> \, <var> \, <var> -| compreg <arg_hack> #<var> \, <var> -| new_callback <arg_hack> #<var> \, <var> \, <var> \, <var> +| loadlib <arg_hack> #<target> \, <target> +| dlfunc <arg_hack> #<target> \, <target> \, <target> \, <target> +| dltarget <arg_hack> #<target> \, <target> \, <target> +| compreg <arg_hack> #<target> \, <target> +| new_callback <arg_hack> #<target> \, <target> \, <target> \, <target> } Index: languages/PIR/lib/pasm_instr.pg =================================================================== --- languages/PIR/lib/pasm_instr.pg (revision 17016) +++ languages/PIR/lib/pasm_instr.pg (working copy) @@ -7,320 +7,322 @@ # PGE implements this. token pasm_instruction { - end -| noop -| reserved -| load_bytecode -| branch -| branch_cs -| bsr -| ret -| jsr <arg_int> -| enternative -| if +[ yield +| xor +| warningson +| warningsoff +| valid_type +| upcase +| unshift +| unregister +| unpin +| unless_null | unless -| invokecc -| invoke -| yield -| tailcall -| returncc +| typeof +| trans_encoding +| trans_charset +| trace +| titlecase +| time +| throw +| thaw +| tell +| tanh +| tan +| tailcallmethod +| tailcall +| sysinfo +| sweepon +| sweepoff +| sweep +| substr +| subclass +| sub +| stringinfo +| store_lex +| stat +| sqrt +| sprintf +| split +| spawnw +| socket +| sockaddr +| sleep +| sizeof +| sinh +| singleton +| sin +| shr +| shl +| shift +| setstdout +| setstderr +| sets_ind +| setref +| setprop +| setp_ind +| setn_ind +| seti_ind +| setattribute +| set_root_global +| set_returns +| set_hll_global +| set_global +| set_args +| set_addr +| set +| send +| seek +| sech +| sec +| savec +| saveall +| save +| runinterp +| rotate_up +| rot +| returncc +| rethrow +| ret +| result_info +| restoreall +| restore +| reserved +| repeat +| removeparent +| removedoes +| removeattribute +| register +| recv +| readline +| read +| pushmark +| pushaction +| push_eh +| push +| prophash +| profile +| printerr +| print +| print +| pow +| popmark +| pop +| poll +| pioctl +| pin +| peek +| ord +| or +| open +| null +| not +| noop | newclosure -| set_args -| get_results -| get_params -| set_returns -| result_info -| set_addr +| newclass +| new_callback +| new +| new +| neg +| needs_destroy +| ne_str +| ne_num +| ne_addr +| ne +| n_repeat +| n_not +| n_neg +| n_infix +| n_concat +| n_bnots +| n_bnot +| n_abs +| mul +| mod +| mmdvtregister +| mmdvtfind +| lt_str +| lt_num +| lt_addr +| lt +| lsr +| lookback +| log2 +| log10 +| localtime +| loadlib +| load_bytecode +| ln +| listen +| length +| le_str +| le_num +| le_addr +| le +| lcm +| jsr +| join +| istrue +| issame +| isnull +| isntsame +| isne +| islt +| isle +| isgt +| isge +| isfalse +| iseq +| isa +| is_cclass +| invokecc +| invoke +| interpinfo +| infix +| index +| inc +| if_null +| if +| hash +| gt_str +| gt_num +| gt_addr +| gt +| gmtime +| getstdout +| getstdin +| getstderr +| getprop +| getline +| getinterp +| getfile +| getfd +| getclass +| getattribute +| get_root_namespace +| get_root_global +| get_results +| get_repr +| get_params +| get_namespace +| get_mro +| get_hll_namespace +| get_hll_global +| get_global | get_addr -| push_eh -| clear_eh -| throw -| rethrow -| die -| exit -| pushmark -| popmark -| pushaction -| debug -| bounds -| profile -| trace -| gc_debug -| interpinfo -| warningson -| warningsoff -| errorson -| errorsoff -| runinterp -| getinterp -| sweep -| collect -| sweepoff -| sweepon -| collectoff -| collecton -| needs_destroy -| loadlib -| dlfunc -| dlvar -| compreg -| new_callback -| band -| bands -| bnot -| n_bnot -| bnots -| n_bnots -| bor -| bors -| shl -| shr -| lsr -| rot -| bxor -| bxors -| eq -| eq_str -| eq_num -| eq_addr -| ne -| ne_str -| ne_num -| ne_addr -| lt -| lt_str -| lt_num -| lt_addr -| le -| le_str -| le_num -| le_addr -| gt -| gt_str -| gt_num -| gt_addr -| ge -| ge_str -| ge_num -| ge_addr -| if_null -| unless_null -| cmp -| cmp_str -| cmp_num -| issame -| isntsame -| istrue -| isfalse -| isnull -| isge -| isgt -| isle -| islt -| iseq -| isne -| and -| not -| n_not -| or -| xor -| debug_init -| debug_load -| debug_break -| debug_print -| backtrace -| getline -| getfile -| close -| fdopen -| getfd -| getstdin -| getstdout -| getstderr -| setstdout -| setstderr -| pioctl -| open -| print -| printerr -| print -| read -| readline -| peek -| stat -| seek -| tell -| socket -| sockaddr -| connect -| recv -| send -| poll -| bind -| listen -| accept -| infix -| n_infix -| abs -| n_abs -| add -| cmod -| dec -| div -| fdiv -| ceil -| floor -| inc -| mod -| mul -| neg -| n_neg -| pow -| sub -| sqrt -| acos -| asec -| asin -| atan -| cos -| cosh -| exp -| ln -| log10 -| log2 -| sec -| sech -| sin -| sinh -| tan -| tanh -| gcd -| lcm -| fact -| callmethodcc -| callmethod -| tailcallmethod -| addmethod -| can -| does -| isa -| newclass -| subclass -| getclass -| singleton -| class -| classname -| addparent -| removeparent -| addattribute -| removeattribute -| getattribute -| setattribute -| classoffset -| adddoes -| removedoes -| new -| typeof -| find_type -| valid_type -| get_repr -| find_method -| defined -| exists -| delete -| elements -| push -| pop -| unshift -| shift -| setprop -| getprop -| delprop -| prophash -| freeze -| thaw -| mmdvtregister -| mmdvtfind -| register -| unregister -| hash -| get_mro -| clone -| exchange -| set -| assign -| setref -| deref -| setp_ind -| setn_ind -| sets_ind -| seti_ind -| null -| cleari -| clearn -| clearp -| clears -| saveall -| restoreall -| entrytype -| depth -| lookback -| save -| savec -| restore -| rotate_up -| ord -| chr -| chopn -| concat -| n_concat -| repeat -| n_repeat -| length -| bytelength -| pin -| unpin -| substr -| index -| sprintf -| new # ?? -| stringinfo -| upcase -| downcase -| titlecase -| join -| split -| charset -| charsetname -| find_charset -| trans_charset -| encoding -| find_encoding -| trans_encoding -| is_cclass -| find_cclass -| find_not_cclass -| escape -| compose -| spawnw -| err -| time -| gmtime -| localtime -| decodetime -| decodelocaltime -| sysinfo -| sleep -| sizeof -| store_lex -| find_lex -| get_namespace -| get_hll_namespace -| get_root_namespace -| get_global -| get_hll_global -| get_root_global -| set_global -| set_hll_global -| set_root_global +| ge_str +| ge_num +| ge_addr +| ge +| gcd +| gc_debug +| freeze +| floor +| find_type +| find_not_cclass +| find_name +| find_method +| find_lex +| find_encoding +| find_charset +| find_cclass +| fdopen +| fdiv +| fact +| exp +| exit +| exists +| exchange +| escape +| errorson +| errorsoff +| err +| eq_str +| eq_num +| eq_addr +| eq +| entrytype +| enternative +| end +| encoding +| elements +| downcase +| does +| dlvar +| dlfunc +| div +| die +| deref +| depth +| delprop +| delete +| defined +| decodetime +| decodelocaltime +| dec +| debug_print +| debug_load +| debug_init +| debug_break +| debug +| cosh +| cos +| connect +| concat +| compreg +| compose +| collecton +| collectoff +| collect +| cmp_str +| cmp_num +| cmp +| cmod +| close +| clone +| clears +| clearp +| clearn +| cleari +| clear_eh +| classoffset +| classname +| class +| chr +| chopn +| charsetname +| charset +| ceil +| can +| callmethodcc +| callmethod +| bytelength +| bxors +| bxor +| bsr +| branch_cs +| branch +| bounds +| bors +| bor +| bnots +| bnot +| bind +| bands +| band +| backtrace +| atan +| assign +| asin +| asec +| and +| addparent +| addmethod +| adddoes +| addattribute +| add +| acos +| accept +| abs +] \b } Index: languages/PIR/lib/pasm_pmc.pg =================================================================== --- languages/PIR/lib/pasm_pmc.pg (revision 17016) +++ languages/PIR/lib/pasm_pmc.pg (working copy) @@ -31,7 +31,7 @@ | find_method <arg_hack> # | defined <arg_hack> # | exists <arg_hack> # -| delete <arg_hack> # +| delete <target> <PGE::Text::bracketed: []> # | elements <arg_hack> # | push <arg_hack> # | pop <arg_hack> #