OPTNEW (1131553), страница 3
Текст из файла (страница 3)
PTnode=^Tnode;
Tnode=record
op:Tterminal;
son:array[1..MaxArity] of PTnode;
nonterm: array[Tnonterminal] of record
CostAttr : ADDRESS;
Production : Tproduction;
end
OperatorAttributes: ...
end;
’¥«® ¯à®æ¥¤ãàë PARSE ¯à¨¨¬ ¥â ¢¨¤
begin for i:=Arity(n^.op) downto 1 do
PARSE(n^.son[i]) end;
for ª ¦¤®£® A ¨§ N do WITH n^.nonterm[A]
CostAttr:=UndefinedValue;
production:=Undefined;
end;
for ª ¦¤®£® ¯à ¢¨« A->bu ¨§ P â ª®£®, çâ® b=n^.op do
if MATCHED(n,[A->.bu]) then
‚ëç¨á«¨âì€âਡãâë‘⮨¬®á⨄«ï(A,n,(A->bu));
�஢¥à¨âìŠà¨â¥à¨©„«ï(A,n^.nonterm[A].CostAttr);
if (A->bu) «ãçè¥, 祬 à ¥¥ ®¡à ¡®â ®¥
¯à ¢¨«® ¤«ï A then
Œ®¤¨ä¨æ¨à®¢ âì(n^.nonterm[A].CostAttr)
n^.nonterm[A].production:=(A->bu)
end
end
end;
(* ‘®¯®áâ ¢¨âì æ¥¯ë¥ ¯à ¢¨« *)
while áãé¥áâ¢ã¥â ¯à ¢¨«® C->A ¨§ P, ª®â®à®¥
«ãçè¥, 祬 à ¥¥ ®¡à ¡®â ®¥ ¯à ¢¨«® ¤«ï A
do
‚ëç¨á«¨âì‘ âਡãâë„«ï(C,n,(C->A));
�஢¥à¨âìŠà¨â¥à¨©„«ï(C,n^.nonterm[C].CostAttr);
if (C->A) is better then
Œ®¤¨ä¨æ¨à®¢ âì(n^.nonterm[C].CostAttr)
n^.nonterm[C].production:=(C->A)
end
end
end;
Š®£¤ ¢ë¡à ® ¤¥à¥¢® ¢ë¢®¤ " ¨¬¥ì襩" á⮨¬®áâ¨, ¢ëç¨á«ïîâáï § 票ï âਡã⮢, ᮯ®áâ ¢«¥ëå ¢¥àè¨ ¬ ¤¥à¥¢ ¢ë¢®¤ , ¨ £¥¥à¨àãîâáï ᮮ⢥âáâ¢ãî騥 ¬ è¨ë¥ ª®¬ ¤ë. ‚ëç¨á«¥¨¥ § 票© âਡã⮢, £¥¥à æ¨ï ª®¤ ®áãé¥á⢫ïîâáï ¢ ¯à®æ¥áᥠ®¡å®¤ ¢ë¡à ®£® ¤¥à¥¢ ¢ë¢®¤ ᢥàåã ¢¨§, á«¥¢ ¯à ¢®. ޡ室 ¢ë¡à ®£® ¤¥à¥¢ ¢ë¢®¤ ¢ë¯®«ï¥âáï ¯à®æ¥¤ãன ¢ëç¨á«¨â¥«ï âਡã⮢, ¢å®¤ ª®â®à®© ¯®áâ㯠îâ ª®à¥ì ¤¥à¥¢ ¢ëà ¦¥¨ï ¨ ªá¨®¬ £à ¬¬ ⨪¨. �à®æ¥¤ãà ¨á¯®«ì§ã¥â ¯à ¢¨«® p:A::=z0 X0 z1...Xk zk, á¢ï§ ®¥ á 㪠§ ®© ¢¥à訮© n, ¨ § ¤ ë© ¥â¥à¬¨ « A, çâ®¡ë ®¯à¥¤¥«¨âì ᮮ⢥âáâ¢ãî騥 ¨¬ ¢¥àè¨ë n1,...,nk ¨ ¥â¥à¬¨ «ë X1,...,Xk. ‡ ⥬ ¢ëç¨á«¨â¥«ì ४ãàᨢ® ®¡å®¤¨â ª ¦¤ãî ¢¥àè¨ã ni, ¨¬¥ï ¢å®¤¥ ¥â¥à¬¨ « Xi.
















