?? inwhichlast.m
字號:
function [outflag,howmany,subscripts,centercomma,parens,callword]=inwhichlast(i,spot);%Key:% outflag==0 ==> in nothing at spot, return any mathematical nesting parenthesis, or [1 end]% outflag==1 ==> in bracket last% outflag==2 ==> in subscript last% outflag==3 ==> in make_converted function last% outflag==4 ==> in submitted subroutine call last% outflag==5 ==> in regular function call last (from intrinsics list)% outflag==6 ==> in regular function call last (not from intrinsics list (yet to be converted?))declare_globalsoutflag=0;howmany=0;subscripts=[];centercomma=[];parens=[];temp1=find(~isspace(funstr{i}));callword='';left=funstr{i}=='(';right=funstr{i}==')';both_p=left-right; c_p=cumsum(both_p);leftbracket=funstr{i}=='[';rightbracket=funstr{i}==']';both_b=leftbracket-rightbracket; c_b=cumsum(both_b);goon=0;tryif (length(find(find(leftbracket)<spot))>length(find(find(rightbracket)<spot)))|(length(find(find(left)<spot))>length(find(find(right)<spot))) leftp=find(left); poss_p=leftp(leftp<spot); leftbracketp=find(leftbracket); poss_b=leftbracketp(leftbracketp<spot); poss=sort([poss_p poss_b]); for k=length(poss):-1:1 if findrights(poss(k),funstr{i})>spot %if a word doesn't immediately precede this '(' then it is mathematical or superfluous %In this case, we should set j to the last unclosed '(' or '[' %or return if there is no such '(' or '['. if funstr{i}(poss(k))=='[' goon=1; j=poss(k); break else temp2=temp1(temp1<poss(k)); if ~isempty(temp2) if length(funstrwords{i})>0 if any(temp2(end)==funstrwords_e{i}) if funstr{i}(poss(k))=='[' goon=1; j=poss(k); break elseif funstr{i}(poss(k))=='(' goon=1; j=poss(k); break end end end end end end endendcatch funstr{i},spot,kbend% if zzz% 'eeeeeeeeee',goon,j,funstr{i},funstr{i}(1:j),zzz=0;kb% endif goon if strcmp(funstr{i}(j),'(') temp1=temp1(temp1<j); temp2=find(temp1(length(temp1))==funstrwords_e{i}); if ~isempty(temp2) callword=temp2; if length(find(strcmpi(funstrwords{i}{temp2},inoutother3)))>0 [howmany,subscripts,centercomma,parens]=hassubscript(i,temp2); if parens(2)>spot %In subscript last outflag=2; end elseif length(find(strcmpi(funstrwords{i}{temp2},make_words)))>0 [howmany,subscripts,centercomma,parens]=hassubscript(i,temp2); if parens(2)>spot %In make_converted function last outflag=3; end elseif length(find(strcmpi(funstrwords{i}{temp2},filename_all)))>0 [howmany,subscripts,centercomma,parens]=hassubscript(i,temp2); if parens(2)>spot %In submitted subroutine call last outflag=4; end elseif length(find(strcmpi(funstrwords{i}{temp2},intrinsics)))>0 [howmany,subscripts,centercomma,parens]=hassubscript(i,temp2); if parens(2)>spot %In regular converted function (not make_*) last outflag=5; end elseif length(find(strcmpi(funstrwords{i}{temp2},funwords)))>0 [howmany,subscripts,centercomma,parens]=hassubscript(i,temp2); if parens(2)>spot %In submitted subroutine call last outflag=6; end end else %no word immediately preceeds this parenthesis, but a mathematical ( or [ encompasses it if funstr{i}(j)=='[' | funstr{i}(j)=='(' j2=findrights(j,funstr{i}); end %outflag=0;howmany=1;subscripts{1}=funstr{i}(j+1:j2-1);centercomma=[];parens=[j j2]; outflag=0;howmany=1;subscripts{1}=funstr{i};centercomma=[];parens=[1 length(funstr{i})]; end elseif strcmp(funstr{i}(j),'[') [dummy,howmany,subscripts,centercomma,parens]=inbracket(i,spot,funstr); temp3=findrights(j,funstr{i}); if temp3>spot %In bracket last outflag=1; end endelse outflag=0;howmany=1;subscripts{1}=funstr{i};centercomma=[];parens=[1 length(funstr{i})];end%funstr{i},funstr{i}(1:spot),kb
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -