OPTNEW (Материалы к контрольным работам), страница 2
Описание файла
Файл "OPTNEW" внутри архива находится в следующих папках: Материалы к контрольным работам, Материалы (3), CONSCOMP. Документ из архива "Материалы к контрольным работам", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "OPTNEW"
Текст 2 страницы из документа "OPTNEW"
ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Ž¯¥à æ¨ï³„«¨ ³ �à ¢¨« ³
³ ³ ³ (á⮨¬®áâì) ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ := ³ 14 ³ 2(22) ³
³ + ³ 2 ³ 4(5) 5(6) ³
³ a ³ 0 ³ 1(2) ³
³ x ³ 0 ³ 1(2) ³
³ + ³ 9 ³ 4(16) 5(17)³
³ @ ³ 8 ³ 7(13) ³
³ + ³ 7 ³ 5(15) 6(11)³
³ + ³ 2 ³ 4(5) 5(6) ³
³ b ³ 0 ³ 1(2) ³
³ y ³ 0 ³ 1(2) ³
³ @ ³ 3 ³ 3(6) 7(7) ³
³ + ³ 2 ³ 4(5) 5(6) ³
³ i ³ 0 ³ 1(2) ³
³ z ³ 0 ³ 1(2) ³
³ 5 ³ 0 ³ 1(2) ³
ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
�¨á. 8.33
�ãáâì G - íâ® T-£à ¬¬ ⨪ . „«ï ª ¦¤®© 楯®çª¨ z ¨§ L(G) ¬®¦® ¯®áâநâì ¤¥à¥¢® ¢ëà ¦¥¨ï. Œë ¬®¦¥¬ ¯¥à¥¯¨á âì «£®à¨â¬ â ª, çâ®¡ë ® à ¡®â « á ¤¥à¥¢ìﬨ ¢ëà ¦¥¨©, ¥ á ¯à¥ä¨ªá묨 ¢ëà ¦¥¨ï¬¨. �â®â ¢ ਠ⠫£®à¨â¬ ¯à¨¢¥¤¥ ¨¦¥. ‚ í⮬ «£®à¨â¬¥ ¤¥à¥¢® ¢ëà ¦¥¨ï ®¡å®¤¨âáï ᢥàåã ¢¨§ ¨ ¢ ¥¬ ¨éãâáï ¯®¤¤¥à¥¢ìï, ᮯ®áâ ¢¨¬ë¥ á ¯à ¢ë¬¨ ç áâﬨ ¯à ¢¨« ¨§ G. Ž¡å®¤ ¤¥à¥¢ ®áãé¥á⢫ï¥âáï ¯à®æ¥¤ãன PARSE. �®á«¥ ®¡å®¤ ¯®¤¤¥à¥¢ ¤ ®© ¢¥àè¨ë ¢ ¥© ¯à¨¬¥ï¥âáï ¯à®æ¥¤ãà MATCHED, ª®â®à ï ¯ëâ ¥âáï ©â¨ ¢á¥ ®¡à §æë, ᮯ®áâ ¢¨¬ë¥ ¯®¤¤¥à¥¢ã ¤ ®© ¢¥àè¨ë. „«ï í⮣® ª ¦¤®¥ ¯à ¢¨«®-®¡à §¥æ à §¡¨¢ ¥âáï ª®¬¯®¥âë ¢ ᮮ⢥âá⢨¨ á ¢áâà¥ç î騬¨áï ¢ ¥¬ ®¯¥à æ¨ï¬¨. „¥à¥¢® ®¡å®¤¨âáï á¯à ¢ «¥¢® ⮫쪮 ¤«ï ⮣®, çâ®¡ë ¨¬¥âì ᮮ⢥âá⢨¥ á ¯®à浪®¬ ¢ëç¨á«¥¨ï ¢ «£®à¨â¬¥ 8.1. Žç¥¢¨¤®, çâ® ¬®¦® ®¡å®¤¨âì ¤¥à¥¢® ¢ë¢®¤ ¨ á«¥¢ ¯à ¢®.
‘âàãªâãà ¤ ëå, ¯à¥¤áâ ¢«ïîé ï ¢¥àè¨ã ¤¥à¥¢ , ¨¬¥¥â á«¥¤ãîéãî ä®à¬ã:
PTnode=^Tnode;
Tnode=record
op:Tterminal;
son:array[1..MaxArity] of PTnode;
rules:set of Tproduction
end;
‚ ª®¬¬¥â à¨ïå 㪠§ ë ᮮ⢥âáâ¢ãî騥 äà £¬¥âë «£®à¨â¬ 8.1.
€«£®à¨â¬ 8.2:
var root:PTnode;
procedure PARSE(n:PTnode);
procedure MATCHED(n:PTnode; h:Titem);
var matching:boolean;
begin
¯ãáâì h=[A->u.Xvy], v= v1 v2 ... vm,
m=Arity(X)
if X in T then (* ᮯ®áâ ¢«¥¨¥ ¯à ¢¨« *)
if m=0 then (*if l[i]=0*)
if X=n^.op (*if X=a[j]*)
then return(true) else return(false) end
else (* m>0 *) (*if l[i]>0*)
if X=n^.op then (*if X=a[j]*)
matching:=true;
for i:=1 to m do (*j:=j+l[j] *)
matching:=matching and (*until j=i+l[i]*)
MATCHED(n^.son[i],[A->uXv'.vi v"y])
end;
return(matching) (*h:=[A->uX.v]*)
else return(false) end
end
else (*X in N*) (* ¯®¨áª ¯®¤¢ë¢®¤ *)
if ¢ n^.rules ¨¬¥¥âáï ¯à ¢¨«® X->w in
then return(true) else return(false) end
end
end (* match *)
begin (*PARSE*)
for i:=Arity(n^.op) downto 1 do (*for i:=n downto1*)
PARSE(n^.son[i]) end;
n^.rules:={};
for ª ¦¤®£® ¯à ¢¨« A->bu ¨§ P â ª®£®, çâ® b=n^.op do
if MATCHED(n,[A->.bu]) (*if j=i+l[i]*)
then n^.rules:=n^.rules+{(A->bu)} end
end;
(* ‘®¯®áâ ¢«¥¨¥ 楯ëå ¯à ¢¨« *)
while áãé¥áâ¢ã¥â ¯à ¢¨«® C->A ¨§ P â ª®¥, çâ®
¥ª®â®àë© í«¥¬¥â (A->w) ¢ n^.rules
¨ ¥â í«¥¬¥â (C->A) ¢ n^.rules
do n^.rules:=n^.rules+{(C->A)}
end
end;(*PARSE*)
begin
(* �।¢ à¨â¥«ìë¥ ¢ëç¨á«¥¨ï *)
�®áâநâì ¤¥à¥¢® ¢ëà ¦¥¨ï ¤«ï ¢å®¤®© 楯®çª¨ z;
root:= 㪠§ â¥«ì ¤¥à¥¢ ¢ëà ¦¥¨ï;
(* � ᯮ§ âì ¢å®¤ãî 楯®çªã *)
PARSE(root);
�஢¥à¨âì, ¯à¨ ¤«¥¦¨â «¨ S->w ¬®¦¥áâ¢ã root^.rules;
end
‚ë室®¬ «£®à¨â¬ ï¥âáï ¤¥à¥¢® ¢ëà ¦¥¨ï ¤«ï z, ¢¥àè¨ ¬ ª®â®à®£® ᮯ®áâ ¢«¥ë ¯à¨¬¥¨¬ë¥ ¯à ¢¨« . …᫨ T-£à ¬¬ ⨪ ¥®¤®§ ç ï, â® ¬®¦® ¯®áâநâì ¥áª®«ìª® à §«¨çëå ¢ë¢®¤®¢ ¤«ï § ¤ ®© ¢å®¤®© 楯®çª¨.
€«£®à¨â¬ë 8.1 ¨ 8.2 "㨢¥àá «ìë¥" ¢ ⮬ á¬ëá«¥, çâ® ª®ªà¥âë¥ £à ¬¬ ⨪¨ ¢ëà ¦¥¨© ¨ ®¡à §æ®¢ ïîâáï, ¯®-áãé¥áâ¢ã, ¯ à ¬¥âà ¬¨ íâ¨å «£®à¨â¬®¢. „«ï ª ¦¤®© ª®ªà¥â®© £à ¬¬ ⨪¨ ¬®¦® ¯¨á âì ᢮© «£®à¨â¬ ¯®¨áª ®¡à §æ®¢. � ¯à¨¬¥à, ¢ á«ãç ¥ 襩 £à ¬¬ ⨪¨ ¢ëà ¦¥¨© ¨ ¯à¨¢¥¤¥ëå à¨á. 8.30 ®¡à §æ®¢ «£®à¨â¬ 8.2 ¬®¦¥â ¡ëâì ¯à¥¤áâ ¢«¥ âਡã⮩ £à ¬¬ ⨪®©, ¯à¨¢¥¤¥®© ¨¦¥. „«ï ª ¦¤®£® ¯à ¢¨« ¨¬¥¥âáï ¤¢ ⨯ ®¡à §æ®¢: "¢ãâ२¥", ᮮ⢥âáâ¢ãî騥 ¯à ¢¨« ¬-®¡à §æ ¬, ¨ "¢¥è¨¥", ¯à¨å®¤ï騥 ᢥàåã ç¥à¥§ âਡãâ Match ¯à¥¤ª . €âਡãâ Match ¯à¥¤áâ ¢«¥ ª ª ¢¥ªâ®à ®¡à §æ®¢ ¢¨¤ <Pattern1, ... Patternn>. Š ¦¤ë© ¨§ ®¡à §æ®¢ ¨¬¥¥â ¢¨¤ «¨¡® <op op-list>, £¤¥ op - ®¯¥àæ¨ï ¢ ¤ ®© ¢¥à訥, op-list - ᯨ᮪ ¥¥ ®¯¥à ¤®¢, «¨¡® ®¡à §¥æ - íâ® ¥â¥à¬¨ « N. ‚ ¯¥à¢®¬ á«ãç ¥ op-list "à á¯à¥¤¥«ï¥âáï" ¯® ¯®â®¬ª ¬ ¢¥àè¨ë ¤«ï ¤ «ì¥©è¥£® ᮯ®áâ ¢«¥¨ï, ¢® ¢â®à®¬ ᮯ®áâ ¢«¥¨¥ áç¨â ¥âáï ãᯥèë¬, ¥á«¨ ¥áâì ¯à ¢¨«® N->w, £¤¥ w - á®á⮨⠨§ ®¡à §æ®¢, ãá¯¥è® á®¯®áâ ¢«¥ëå ¯®â®¬ª ¬ ¤ ®© ¢¥àè¨ë. �®¬¨¬® âਡãâ Match, ®¡à §æë ¬®£ãâ § ¤ ¢ âìáï ¨ ¢ ᮮ⢥âá⢨¨ á ¯à ¢¨« ¬¨, ¢®§¬®¦® ¯à¨¬¥¨¬ë¬¨ ¢ ¤ ®© ¢¥à訥. �⨠¤¢ ¬®¦¥á⢠®¡à §æ®¢ ¬®£ãâ ¯¥à¥á¥ª âìáï. ‘¨â¥§¨àã¥¬ë© âਡãâ Pattern (â ª¦¥ ¢¥ªâ®à) ¤ ¥â १ã«ìâ â ᮯ®áâ ¢«¥¨ï ¯® ¢¥ªâ®àã-®¡à §æã Match.
Rule
Stat ::= Expr ':=' Expr
�â®¬ã ¯à ¢¨«ã ᮮ⢥âáâ¢ã¥â ®¤¨ ®¡à §¥æ 2. �®í⮬㠢 ª ç¥á⢥ ®¡à §æ®¢ ¯®â®¬ª®¢ ç¥à¥§ ¨å âਡãâë Match ¯¥à¥¤ îâáï, ᮮ⢥âá⢥®, <'+' Reg Const> ¨ <Reg>.
Semantics
Match<2>:=<'+' Reg Const>:
Match<3>:=<Reg>;
Pattern<0>[1]:=Pattern<2>[1]&Pattern<3>[1].
Rule
Expr ::= '+' Expr Expr
Ž¡à §æë, ᮮ⢥âáâ¢ãî騥 íâ®¬ã ¯à ¢¨«ã, á«¥¤ãî騥:
(4) Reg -> '+' Reg Const
(5) Reg -> '+' Reg Reg
(6) Reg -> '+' Reg '@' '+' Reg Const.
€âਡãâ ¬ Match ¢â®à®£® ¨ âà¥â쥣® ᨬ¢®«®¢ ¢ ª ç¥á⢥ ®¡à §æ®¢ ¯à¨ ᮯ®áâ ¢«¥¨¨ ¬®£ãâ ¡ëâì ¯¥à¥¤ ë ¢¥ªâ®àë <Reg, Reg, Reg> ¨ <Reg, Const, <'@' '+' Reg Const>>, ᮮ⢥âá⢥®.
ˆ§ «¨§ ¤àã£¨å ¯à ¢¨« ¬®¦® § ª«îç¨âì, çâ® ¯à¨ ᮯ®áâ ¢«¥¨¨ ®¡à §æ®¢ ¯à¥¤ª®¢ «¥¢®© ç á⨠¤ ®£® ¯à ¢¨« âਡãâã Match ᨬ¢®« «¥¢®© ç á⨠¬®¦¥â ¡ëâì ¯¥à¥¤ ®¡à §¥æ <'+' Reg Const> (¨§ ®¡à §æ®¢ 2,3,6) ¨«¨ ®¡à §¥æ Reg.
Semantics
Match<2>:=<Reg,Reg,Reg>;
Match<3>:=<Const,Reg,<'@' '+' Reg Const>>;
P:=Pattern<2>&Pattern<3>;
if Match<0> ᮤ¥à¦¨â ®¡à §¥æ <'+' Reg Const> ¢ i-© ¯®§¨æ¨¨ Pattern<0>[i]:=Pattern<2>[1]&Pattern<3>[1];
if Match[0] ᮤ¥à¦¨â Reg ¢ j-© ¯®§¨æ¨¨
Pattern<0>[j]:=(Pattern<2>[1]&Pattern<3>[1])
|(Pattern<2>[2]&Pattern<3>[2])
|(Pattern<2>[3]&Pattern<3>[3]);
Žáâ «ìë¬ § ç¥¨ï¬ Pattern<0> ¯à¨á¢®¨âì false.
Rule
Expr ::= '@' Expr
Ž¡à §æë, ᮮ⢥âáâ¢ãî騥 íâ®¬ã ¯à ¢¨«ã, á«¥¤ãî騥:
(3) Reg -> '@' '+' Reg Const
(7) Reg -> '@' Reg
‘®®â¢¥âá⢥®, âਡãâã Match ¢â®à®£® ᨬ¢®« ¢ ª ç¥á⢥ ®¡à §æ®¢ ¯à¨ ᮯ®áâ ¢«¥¨¨ ¬®£ãâ ¡ëâì ¯¥à¥¤ ë <'+' Reg Const> (®¡à §¥æ 3) ¨«¨ <Reg> (®¡à §¥æ 7).
ˆ§ «¨§ ¤àã£¨å ¯à ¢¨« ¬®¦® § ª«îç¨âì, çâ® ¯à¨ ᮯ®áâ ¢«¥¨¨ ®¡à §æ®¢ ¯à¥¤ª®¢ «¥¢®© ç á⨠¤ ®£® ¯à ¢¨« âਡãâã Match ¬®£ãâ ¡ëâì ¯¥à¥¤ ë ®¡à §æë <'@' '+' Reg Const> (¨§ ®¡à §æ 6) ¨ Reg.
Semantics
Match<2>:=<<'+' Reg Const>,Reg>;
if Match<0> ᮤ¥à¦¨â <'+' Reg Const> ¢ i-© ¯®§¨æ¨¨
Pattern<0>[i]:=Pattern<2>[1];
if Match<0> ᮤ¥à¦¨â Reg ¢ j-© ¯®§¨æ¨¨
Pattern<0>[j]:=Pattern<2>[1]|Pattern<2>[2];
Žáâ «ìë¬ § ç¥¨ï¬ Pattern<0> ¯à¨á¢®¨âì false.
Rule
Expr ::= Const
Semantics
if Pattern<0> ᮤ¥à¦¨â Const ¢ j-© ¯®§¨æ¨¨
Pattern<0>[j]:=true;
Žáâ «ìë¬ § ç¥¨ï¬ Pattern<0> ¯à¨á¢®¨âì false.
„«ï ¤¥à¥¢ à¨á. 8.29 ¯®«ã稬 § 票ï âਡã⮢, ¯à¨¢¥¤¥ë¥ à¨á. 8.34. ‡¤¥áì M ®¡®§ ç ¥â Match, P - Pattern, C - Const, R - Reg.
8.9.3. ‚ë¡®à ¤¥à¥¢ ¢ë¢®¤ ¨¬¥ì襩 á⮨¬®áâ¨
T-£à ¬¬ ⨪¨, ®¯¨áë¢ î騥 á¨áâ¥¬ë ª®¬ ¤, ®¡ëç® ï¢«ïîâáï ¥®¤®§ ç묨. —⮡ë ᣥ¥à¨à®¢ âì ª®¤ ¤«ï ¥ª®â®à®© ¢å®¤®© 楯®çª¨, ¥®¡å®¤¨¬® ¢ë¡à âì ®¤® ¨§ ¢®§¬®¦ëå ¤¥à¥¢ì¥¢ ¢ë¢®¤ . �â® ¤¥à¥¢® ¤®«¦® ¯à¥¤áâ ¢«ïâì ¦¥« ¥¬®¥ ª ç¥á⢮ ª®¤ , ¯à¨¬¥à à §¬¥à ª®¤ ¨/¨«¨ ¢à¥¬ï ¢ë¯®«¥¨ï.
„«ï ¢ë¡®à ¤¥à¥¢ ¨§ ¬®¦¥á⢠¢á¥å ¯®áâ஥ëå ¤¥à¥¢ì¥¢ ¢ë¢®¤ ¬®¦® ¨á¯®«ì§®¢ âì âਡãâë á⮨¬®áâ¨, âਡãâë¥ ä®à¬ã«ë, ¢ëç¨á«ïî騥 ¨å § 票ï, ¨ ªà¨â¥à¨¨ á⮨¬®áâ¨, ª®â®àë¥ ®áâ ¢«ïîâ ¤«ï ª ¦¤®£® ¥â¥à¬¨ « ¥¤¨á⢥®¥ ¯à¨¬¥¨¬®¥ ¯à ¢¨«®. €âਡãâë á⮨¬®á⨠ᮯ®áâ ¢«ïîâáï ¢á¥¬ ¥â¥à¬¨ « ¬, âਡãâë¥ ä®à¬ã«ë - ¢á¥¬ ¯à ¢¨« ¬ T-£à ¬¬ ⨪¨.
M=<':=' '+' R C R> :=
P=<t> |
------------- M=<<'+' R C>,
/ \ <'+' R R>,
+ + <'+' R <'@' '+' R C>>
/ \ / \P=<t,t,f>
/ \ / \
const(a) const(x) @ const(5)
M=<R,R,R> M=<C,R,<'@' | M=<C,R,<'@''+' R C>>
'+' R C>> | P=<t,t,f>
P=<t,t,t> P=<t,t,f> |
|
|M=<<'@' '+' R C,
M=<'+' R C>, | <'@' R>>
<'+' R R>, |P=<t,f>
<'+' R <'@' '+' R C>>|
P=<f,t,t> +
/ \
/ \
M=<<'+' R C> / \ M=<<'@' '+' R C,
<'+' R R> + @ <'@' R>>
<'+' R <'@' / \ | P=<t,t>
'+' R C>> / \ |
P=<t,t,f> / \ |
const(b) const(y) | M=<<'+' R C>,
M=<R,R,R> M=<C,R, | <'+' R R>,
P=<t,t,t> <'@''+'R C>>+ <'+' R <'@' '+' R C>>
P=<t,t,f> / \P=<t,t,f>
/ \
const(i) const(z)
M=<R,R,R> M=<C,R,<'@' '+' R C>>
P=<t,t,t> P=<t,t,f>
�¨á. 8.34
�।¯®«®¦¨¬, çâ® ¤«ï ¢¥àè¨ë n ®¡ à㦥® ¯à¨¬¥¨¬®¥ ¯à ¢¨«® p:A::=z0 X0 z1...Xk zk, £¤¥ zi ¨§ T* ¤«ï 0<=i<=k ¨ Xj ¨§ N ¤«ï 1<=j<=k. ‚¥àè¨ n ¨¬¥¥â ¯®â®¬ª®¢ n1,...,nk, ª®â®àë¥ á®®â¢¥âáâ¢ãîâ ¥â¥à¬¨ « ¬ X1,...,Xk. ‡ 票ï âਡã⮢ á⮨¬®á⨠¢ëç¨á«ïîâáï ¢ ¯®à浪¥ ᨧ㠢¢¥àå. ‚ ç «¥ âਡãâë á⮨¬®á⨠¨¨æ¨ «¨§¨àãîâáï ¥®¯à¥¤¥«¥ë¬ § 票¥¬ UndefinedValue. �।¯®«®¦¨¬, çâ® § 票ï âਡã⮢ á⮨¬®á⨠¤«ï ¢á¥å ¯®â®¬ª®¢ n1,...,nk ¢¥àè¨ë n ¢ëç¨á«¥ë. …᫨ ä®à¬ã«
A.a:=f(Xi.b,Xj.c,...) ¤«ï 1<=i,j<=k
ᮯ®áâ ¢«¥ ¯à ¢¨«ã p, â® ¢ë¯®«ï¥âáï ä®à¬ã«
n.a:=f(ni.b,nj.c,...),
¢ëç¨á«ïîé ï ¤«ï ¯à ¢¨« p § 票¥ âਡãâ a ¥â¥à¬¨ « A ¢ ¢¥à訥 n. „«ï ¢á¥å ¯à¨¬¥¥ëå ¯à ¢¨« ¨é¥âáï â ª®¥, ª®â®à®¥ ¤ ¥â ¬¨¨¬ «ì®¥ § 票¥ á⮨¬®áâ¨. Žâáãâá⢨¥ ¯à¨¬¥¥ëå ¯à ¢¨« ®¡®§ ç ¥âáï ç¥à¥§ undefined, § 票¥ ª®â®à®£® ¯®« £ ¥âáï ¡®«ì訬 «î¡®£® ®¯à¥¤¥«¥®£® § 票ï.
„®¡ ¢¨¬ ¢ «£®à¨â¬ 8.2 ॠ«¨§ æ¨î âਡã⮢ á⮨¬®áâ¨, ä®à¬ã« ¨å ¢ëç¨á«¥¨ï ¨ ªà¨â¥à¨¥¢ ®â¡®à . ˆ§ «£®à¨â¬ ¬®¦® ¨áª«îç¨âì ¯®¨áª ¯®¤¢ë¢®¤®¢, ᮮ⢥âáâ¢ãîé¨å ¯à ¢¨« ¬, ¤«ï ª®â®àëå § 票¥ âਡãâ á⮨¬®á⨠¥ ®¯à¥¤¥«¥®. ‘âàãªâãà ¤ ëå, ¯à¥¤áâ ¢«ïîé ï ¢¥àè¨ã ¤¥à¥¢ , ¯à¨¨¬ ¥â á«¥¤ãî騩 ¢¨¤: