# padop/svop - $ padop - # (unused) loop - {
# baseop/unop - % loopexop - } filestatop - -
# pvop/svop - " cop - ; methop - .
+# unop_aux - +
# Other options are:
# needs stack mark - m (OA_MARK)
# scalar - S list - L array - A
# hash - H sub (CV) - C file - F
# socket - Fs filetest - F- filetest_access - F-+
-# num-compare - S< dirhandle - DF
+# num-compare - S< dirhandle - DF infix bitwise - S|
# reference - R
# "?" denotes an optional operand.
gvsv scalar variable ck_null ds$
gv glob value ck_null ds$
-gelem glob elem ck_null d2 S S
+gelem glob elem ck_null ds2 S S
padsv private variable ck_null ds0
padav private array ck_null d0
padhv private hash ck_null d0
padany private value ck_null d0
-pushre push regexp ck_null d/
-
# References and stuff.
rv2gv ref-to-glob cast ck_rvconst ds1
av2arylen array length ck_null is1
rv2cv subroutine dereference ck_rvconst d1
anoncode anonymous subroutine ck_anoncode s$
-prototype subroutine prototype ck_null s% S
+prototype subroutine prototype ck_prototype su% S?
refgen reference constructor ck_spair m1 L
srefgen single ref constructor ck_null fs1 S
ref reference-type operator ck_fun stu% S?
transr transliteration (tr///) ck_match is" S
# Lvalue operators.
-# sassign is special-cased for op class
-sassign scalar assignment ck_sassign s0
+sassign scalar assignment ck_sassign s2 S S
aassign list assignment ck_null t2 L L
chop chop ck_spair mts% L
i_divide integer division (/) ck_null ifsT2 S S
modulo modulus (%) ck_null IifsT2 S S
i_modulo integer modulus (%) ck_null ifsT2 S S
-repeat repeat (x) ck_repeat fmT2 L S
+repeat repeat (x) ck_repeat fmt2 L S
add addition (+) ck_null IfsT2 S S
i_add integer addition (+) ck_null ifsT2 S S
subtract subtraction (-) ck_null IfsT2 S S
i_subtract integer subtraction (-) ck_null ifsT2 S S
concat concatenation (.) or string ck_concat fsT2 S S
+multiconcat concatenation (.) or string ck_null sT+
stringify string ck_stringify fsT@ S
left_shift left bitshift (<<) ck_bitop fsT2 S S
i_le integer le (<=) ck_cmp ifs2 S S<
ge numeric ge (>=) ck_cmp Iifs2 S S<
i_ge integer ge (>=) ck_cmp ifs2 S S<
-eq numeric eq (==) ck_null Iifs2 S S<
-i_eq integer eq (==) ck_null ifs2 S S<
-ne numeric ne (!=) ck_null Iifs2 S S<
-i_ne integer ne (!=) ck_null ifs2 S S<
+eq numeric eq (==) ck_cmp Iifs2 S S<
+i_eq integer eq (==) ck_cmp ifs2 S S<
+ne numeric ne (!=) ck_cmp Iifs2 S S<
+i_ne integer ne (!=) ck_cmp ifs2 S S<
ncmp numeric comparison (<=>) ck_null Iifst2 S S<
i_ncmp integer comparison (<=>) ck_null ifst2 S S<
sne string ne ck_null ifs2 S S
scmp string comparison (cmp) ck_null ifst2 S S
-bit_and bitwise and (&) ck_bitop fst2 S S
-bit_xor bitwise xor (^) ck_bitop fst2 S S
-bit_or bitwise or (|) ck_bitop fst2 S S
+bit_and bitwise and (&) ck_bitop fst2 S S|
+bit_xor bitwise xor (^) ck_bitop fst2 S S|
+bit_or bitwise or (|) ck_bitop fst2 S S|
+nbit_and numeric bitwise and (&) ck_bitop fsT2 S S|
+nbit_xor numeric bitwise xor (^) ck_bitop fsT2 S S|
+nbit_or numeric bitwise or (|) ck_bitop fsT2 S S|
+sbit_and string bitwise and (&.) ck_bitop fst2 S S|
+sbit_xor string bitwise xor (^.) ck_bitop fst2 S S|
+sbit_or string bitwise or (|.) ck_bitop fst2 S S|
negate negation (-) ck_null Ifst1 S
i_negate integer negation (-) ck_null ifst1 S
not not ck_null ifs1 S
complement 1's complement (~) ck_bitop fst1 S
+ncomplement numeric 1's complement (~) ck_bitop fsT1 S
+# scomplement uses ck_bitop only for the experimental warning. Once the
+# warning is gone, this can change to ck_null.
+scomplement string 1's complement (~) ck_bitop fsT1 S
-smartmatch smart match ck_smartmatch s2
+smartmatch smart match ck_null ifs2 S S
# High falutin' math.
length length ck_length ifsTu% S?
substr substr ck_substr st@ S S S? S?
-vec vec ck_fun isT@ S S S
+vec vec ck_fun ist@ S S S
index index ck_index isT@ S S S?
rindex rindex ck_index isT@ S S S?
kvaslice index/value array slice ck_null m@ A L
aeach each on array ck_each d% A
-akeys keys on array ck_each t% A
avalues values on array ck_each dt% A
+akeys keys on array ck_each t% A
# Hashes.
keys keys ck_each t% H
delete delete ck_delete % S
exists exists ck_exists is% S
-rv2hv hash dereference ck_rvconst d1
+rv2hv hash dereference ck_rvconst dt1
helem hash element ck_null s2 H S
hslice hash slice ck_null m@ H L
kvhslice key/value hash slice ck_null m@ H L
+# mixed array and hash access
+
+multideref array or hash lookup ck_null ds+
+
# Explosives and implosives.
unpack unpack ck_fun u@ S S?
pack pack ck_fun fmst@ S L
-split split ck_split T@ S S S
+split split ck_split t/ S S S
join join or string ck_join fmst@ S L
# List operators.
list list ck_null m@ L
lslice list slice ck_null 2 H L L
-anonlist anonymous list ([]) ck_fun ms@ L
+anonlist anonymous array ([]) ck_fun ms@ L
anonhash anonymous hash ({}) ck_fun ms@ L
splice splice ck_fun m@ A S? S? L
orassign logical or assignment (||=) ck_null s|
dorassign defined or assignment (//=) ck_null s|
-method method lookup ck_method d.
-entersub subroutine entry ck_subr dmt1 L
+entersub subroutine entry ck_subr dm1 L
leavesub subroutine exit ck_null 1
leavesublv lvalue subroutine return ck_null 1
+argcheck check subroutine arguments ck_null +
+argelem subroutine argument ck_null +
+argdefelem subroutine argument default value ck_null |
caller caller ck_fun t% S?
warn warn ck_fun imst@ L
die die ck_fun imst@ L
dump dump ck_null ds}
goto goto ck_null s}
exit exit ck_fun s% S?
+method method lookup ck_method d.
method_named method with known name ck_null d.
+method_super super with known name ck_null d.
+method_redir redirect method with known name ck_null d.
+method_redir_super redirect super method with known name ck_null d.
-entergiven given() ck_null d|
+entergiven given() ck_null d{
leavegiven leave given block ck_null 1
enterwhen when() ck_null d|
leavewhen leave when block ck_null 1
# Eval.
-require require ck_require du% S?
+require require ck_require dsu% S?
dofile do "file" ck_fun d1 S
hintseval eval hints ck_svconst s$
entereval eval "string" ck_eval du% S?
custom unknown custom operator ck_null 0
-# For smart dereference for each/keys/values
-reach each on reference ck_each d% S
-rkeys keys on reference ck_each t% S
-rvalues values on reference ck_each dt% S
-
# For CORE:: subs
coreargs CORE:: subroutine ck_null $
+avhvswitch Array/hash switch ck_null t1
runcv __SUB__ ck_null s0
introcv private subroutine ck_null d0
clonecv private subroutine ck_null d0
padrange list of private variables ck_null d0
-refassign lvalue ref assignment ck_refassign d2
+refassign lvalue ref assignment ck_refassign ds2
lvref lvalue ref assignment ck_null d%
lvrefslice lvalue ref assignment ck_null d@
lvavref lvalue array reference ck_null d%
+anonconst anonymous constant ck_null ds1