Function Lista_variabilelor_locale(s185:string):boolean;
Var o109:Boolean;
nth,gap,dwg:integer;
t110,p110:pchar;
function OdSetLocale_h:boolean;
Begin
result:=true;
End;
Begin
t110:=nil;
p110:=nil;
result:=false;
gap:=000;
if (length(s185)<01)or(s185[1]=#00) then exit;
result:=true;
o109:=((la=opl_SetQ)or(last_la=opl_unsconst));
if (length(s185)>2) and (s185[01]='$')and(s185[2]='$') then delete(s185,1,2);
Sho_lower(s185);
if (c2lisp_generate_namelist_of_localvars_from_setq=1)and((length(s185)+2)<length(v_c2lisp_namelist_of_localvars_setqS)) then
Begin dwg:=pos(' '+s185+' ',v_c2lisp_namelist_of_localvars_setqS);
if (dwg>00) then v_c2lisp_namelist_of_localvars_setqS:= v_c2lisp_namelist_of_localvars_setqS + s185+' ';
End;
End;//off-Lista_variabilelor_locale("")
---------------------------------------------------------------------
Function expr_all_setqOp:NavTree;
var tr:NavTree;op:EnodeType; docec:word;
Begin tr:=expr_else_pt_cond_semnalizat_de_pct_si_virgula; docec:=00;
while la=opl_Setq do
begin op := laVal3.typ;
if (length(laVal3.s)>0) then Lista_variabilelor_locale(laVal3.s);
if (tr<kzeropin) then tr:=makeNode_id0(op,tr,kNavtreeNil) else
if (tr>kzeropin)and(tr^.typ IN [ConstNd,SetqNd])and(length(tr^.soh)>02)and(tr^.soh[1]='$')and(tr^.soh[2]='$')
then tr^.typ:=op
else tr:=makeNode_id0(op,tr,kNavtreeNil);
LexiconManager(000);
tr^.right:=expr_else_pt_cond_semnalizat_de_pct_si_virgula();
end;{while}
result:=tr;
end;//off("asociativitate de la dreapta la stanga")
Function check_if_last_is_var(cc1,cc2,cc3,cc4:char;tokr:ENodeType):ENodeType;
Begin
inc(pig);
la:=opl_setq;
if (last_la<>opl_unsconst)or(length(last_laVal.s)<01)or(last_laVal.s[1]<>'$')
then begin dec(pig,2);
scho.q:='1234';
scho.q[1]:=cc1;
scho.q[2]:=cc2;
scho.q[3]:=cc3;
scho.q[4]:=cc4;
dfn_get_error('.eExpectedVariable for'+scho.q,000);
end;
if (length(laVal3.s)>0) then
lista_variabilelor_locale(laVal3.s);
{actualizare lista_var_defun}
if (tokr<EndPrognkNd) then inc(tokr);
check_if_last_is_var:=tokr;
End;
Procedure LexiconNumericPlus(lef_or_right:integer);
var laOld:tap_laval22safearray; opentok:word;la13:TokenOpl;
begin opentok:=00;
laOld:=laVal3;
la13:=la;
inc(pig);
if (lef_or_right=2623)and(cAsiHost20hdi.car[pig]<>'+')and(cAsiHost20hdi.car[pig]='=') then
Begin la:=opl_Setq; laVal3:=laOld; laVal3.strR:=00; laVal3.strL:=0;
inc(pig);
laVal3.typ:=AddEqNd;LaVal3.restype:=RT_NONE;
Exit;
End;
if (lef_or_right=2628)and(cAsiHost20hdi.car[pig]<>'+')and(cAsiHost20hdi.car[pig]='=') then
Begin la:=opl_Setq; laVal3:=laOld; laVal3.strR:=00; laVal3.strL:=0;
inc(pig);
laVal3.typ:=AddEqNd;LaVal3.restype:=RT_NONE;
Exit;
End;
if (lef_or_right=2628)and(cAsiHost20hdi.car[pig]<>'+') then
Begin la:=opl_addo; laVal3:=laOld; laVal3.strR:=00; laVal3.strL:=0;
laVal3.typ:=PlusNd;LaVal3.restype:=RT_NONE;
Exit;
End;
if (length(laVal3.s)>0) then lista_variabilelor_locale(laVal3.s);
Case cAsiHost20hdi.car[pig] of
'+':begin inc(pig);
if (la13=opl_unsconst)and(laOld.resType=RT_ATOMVAR) then opentok:=02 else
Begin LexiconManager(225);
if (la=opl_unsconst)and(laVal3.resType=RT_ATOMVAR) then opentok:=01;
End;
Case opentok of
01: Begin la:=opl_Unary;laVal3.strR:=00; laVal3.strL:=0;
laVal3.typ:=incrementNd;LaVal3.restype:=RT_DECPOST; End; //off(" ++boca ")
02: Begin la:=opl_Unary;laVal3:=laOld; laVal3.strR:=00; laVal3.strL:=0;
laVal3.typ:=incrementNd;LaVal3.restype:=RT_DECSUFX End; //off(" boca++ ")
else dfn_get_error('eVap!t180errorA..eCannot use ++ without variabile name',0000);
end;
end;//case( "++");_
'=':laVal3.typ:=check_if_last_is_var('+=',laVal3.typ);
'0'..'9':Begin if (la=opl_Lparen) then Begin ParseNumberNegative(false); end else
Begin la := opl_Addo;laVal3.typ:=PlusNd;End;
End;
else Begin la := opl_AddO;laVal3.typ:=PlusNd;End;
end;{+,+=}
End;