1
function [stk,txt,top]=%e2sci()
2
// genere le code relatif a l'extraction d'une sous matrice
6
rhs=maxi(0,abs(evstr(op(3)))-1)
10
// jpc 6 oct 16h pause
11
if type(s2(1))==1 then // recursive extraction
19
// ex=ex+'.'+part(ik(1),2:length(ik(1))-1)
26
for k=1:m,args=[args s2(n+1+k)(1)],end
27
ex=ex+'('+makeargs(args)+')'
28
stk=list(ex,'0','?','1','?')
30
stk=list(ex,'0','?','1','?')
32
elseif sn(5)=='10' then // extraction pour les chaines
33
stk=list('part('+sn(1)+','+s2(1)+')','0','1','1',sn(5))
35
[mn,nn]=checkdims(sn);
36
[m2,n2]=checkdims(s2);
39
stk=list(sn(1)+'('+s2(1)+')','0',string(mn*nn),'1',sn(5))
41
stk=list(sn(1)+'('+s2(1)+')','0','?','1',sn(5))
44
stk=list(sn(1)+'('+s2(1)+')','0','1','?',sn(5))
46
stk=list(sn(1)+'('+s2(1)+')','0','?','1',sn(5))
48
stk=list(sn(1)+'('+s2(1)+')','0','?','1',sn(5))
50
stk=list(sn(1)+'('+s2(1)+')','0','1','?',sn(5))
51
elseif mn<>-1&nn<>-1 then
52
stk=list(sn(1)+'('+s2(1)+').''','0','?','1',sn(5))
53
else // at leat one dimension unknown
54
v='mtlb_e'+rhsargs([sn(1),s2(1)])
55
set_infos([v+' may be replaced by '+sn(1)+'('+s2(1)+')'
56
' '+sn(1)+'('+s2(1)+') if '+sn(1)+' is a vector,'
57
' '+sn(1)+'('+s2(1)+').'' if '+sn(1)+' is a matrix.'],1)
58
stk=list(v,'0','?','?',sn(5))
62
s1=stk(top-1);top=top-1
63
if sn(5)=='10' then // extraction pour les chaines
64
if s1(3)=='1'&s1(4)=='1' then
65
stk=list('part('+sn(1)+'('+s1(1)+'),'+s2(1)+')','0','1','1',sn(5))
66
elseif s1(3)=='1' then
67
stk=list('part('+sn(1)+'('+s1(1)+'),'+s2(1)+')','0',s1(4),'1',sn(5))
68
elseif s1(4)=='1' then
69
stk=list('part('+sn(1)+'('+s1(1)+'),'+s2(1)+')','0',s1(3),'1',sn(5))
71
stk=list('part('+sn(1)+'('+s1(1)+'),'+s2(1)+')','0','?','1',sn(5))
73
elseif s1(3)=='1'&s1(4)=='1' then
74
stk=list(sn(1)+rhsargs([s1(1),s2(1)]),'0','1','?',sn(5))
75
elseif s2(3)=='1'&s2(4)=='1' then
76
stk=list(sn(1)+rhsargs([s1(1),s2(1)]),'0','?','1',sn(5))
78
stk=list(sn(1)+rhsargs([s1(1),s2(1)]),'0','?','?',sn(5))