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> #