Алгоритм 4.4. ε-ережесін шектету
Кіру: КС-грамматикасы G = (VT, VN, P, S).
Шығу: Эквивалентті КС-грамматикасы G′ = (VT, VN′, P′, S′) ε- ережесіз терминаль емес символдардың барлығы үшін, тек ғана бастапқыға емес, ол оң бөліктегі грамматика ережелерімен кездеспеуі ерек.
Қадам 1. G шығару грамматикасында найти ε терминаль емес минальды символдарды A VN, A =>*£ табу керек.
}N0 = {A | (A → ε) P қоямыз.
Nt = Ni−1 {B|(B →α) P,α Ni*− 1 есептейміз.
Егер Ni ≠Ni−1, i:=i+ I 1.2пункке өтеді әйтпесе N = Ni есептейді.
Қадам 2. G грамматикасын жиыннан Р ауыстырамыз P.
Қадам 3. P′ жиынын ережелермен толықтырамыз , олар бұл жиынның әрбір ережесін шығару жолымен терминаль емес оң бөлігінде шығады..
Қадам 4. Егер S N, онда P′= P {S′ →ε,S′ → S},VN′ =VN S′, Мұндағы V ∩ {S′} = ∅; әйтпесе VN′ =VN, S′ = S.
Мысал 4.4. G = ({0,1}, {S, A, B},P, S грамматикасы Р ережелерімен берілген: 1)S→A B; 2)A→0A|ε; 3)B → 1 B | ε.Оны эквивалентті грамматикаға алгоритму 4.4. бойынша келтіреміз.
N1 = N2, жиын құрылған және N= {S,A,B}.
Қадам 2, 3. P′ жиыны : 1) S→AB|A | B; 2) 0A→0A|; 3).B→1B|1
Қадам4. S N ,то терминал емес С енгіземіз және P жиынын C →S|ε толықтырамыз′.. Грамматика мұндай түрге енеді:: G′ = ({0,1},{S,A,B,C},P,C) ережелерімен:P ′ ; 1) C → S |ε ; 2) S → AB | A| B; 3) A → 0A| 0; 4) B →1B |1.
Алгоритм 4.5. Тізбек ережесінің шектелуі.
Кіру: КС-грамматикасы G = (VT, VN ,P,S).
Шығу: Эквивалентті КС-грамматикасы G′= (VT,VN′,P′,S′) тізбек ережесіз, ереже түрі A→B, мұндағы A,.B VN
Қадам 1. Для каждого нетерминала A терминал емес үшін жиынды есептейміз ,N = {B | A => *B мұндағы В е V^N.
Nq = {A қоямыз.
Nf = NiA−1 {C|(B →C) P,B NiA−1, C Vn есептейміз
Егер Ni A≠NAi−1, онда i:=i+1 1.2.пунктіне көшеді, әйтпесе N A=Ni A
Қадам 2. P′ жиынын құрамыз: егер (B→α) P тізбектік ереже болмаса (aeVft),онда P′ ережесі A→ α әрбір A үшін.
Мысал 4.5. Грамматикасы G = ({+,n}, {L, M, N},P, L) ережелерімен Р:
1) L → M ; 2 ) M → N; 3) N —→ N+ | n. Эквивалентті грамматиканы G алгоритм 4.5 бойынша құрамыз.
Қадам 1.;N0L={L}
N0L = {L};
N1L = {L, M};
N2L = {L, M, N};
N3L = {L, M, N}.
Сонымен қатар N2L = N3L , то N L = {L, M, N}.
N0M = {M};
N1M = {M, N};
N2M = {M, N}.
Сонымен қатар N1M = N2M , то NM = {M, N}.
N0N = {N};
N1N = {N}.
N1N = N0N , то N N = {N}.
Алгоритм 4.6. Сол факторизация ережесін шектеу.
Кіру: КС-грамматикасы G = (VT, VN, P, S).
Шығу: Эквивалентті КС-грамматикасы G'=(VT,VN′,P′,S′) біркелкі префиксіз оң бөліктегі бөлімнен терминал еместі анықтайтын.
Қадам 1. Записать все правила для нетерминала X терминал емес барлық ережелерді жазу, біркелкі префиксы α V* барларды альтернативті түрдегі: X →αβ1 αβ 2 K αβ n β1 β 2 K β n V
Қадам 2. Сол жақтағы жақшадан префикс α- ны альтернативтің әрбір жолына шығару:.X → α (β1 | β2 | K | β n Рп )•
Қадам 3. Терминал еместі Y жаңа белгімен белгілеймі қалған жақшадағы: X →αY, Y → β1 | β 2 |K| β n.
Қадам 4. Терминал еместі жаңа териналь емес Y –мен толықтырамыз және ережені X және Y өзгертеміз.
Қадам 5.Қадам 1-4 қайталаймыз.
Мысал 4.6. G = ({k,l,m,n},{S},P,S) грамматикасы ережелерімен P: 1) S → kSl; 2) S → kSm; 3) S → n.
Эквивалентті грамматиканы G′ алгоритму 4.6 құрамыз:
Қадам1. S→kSl|kSm|n.
Қадам2. S→kS(l|m)|n.
Қадам 3,4. Терминал еместі жаңа териналь емес С –мен толықтырамыз, сонда G′ = ({k,l,m,n}, {S, C},P′, S) грамматикасын ережесімен аламыз P: 1) S → kSC; 2)S→n; 3) C → m.
Алгоритм 4.7. Тура сол рекурсияны шектеу.
Кіру: КС-грамматикасы G = (VT, VN, P, S).
Шығу: Эквивалентті КС-грамматикасы G'= (VT,VN′,P′,S′ ереже түрінсіз. A→Aα, A VN, α V *
Қадам 1. Грамматикадан барлық X терминал емес рекурсия ережелерін шығарамыз:
Қадам 2. Жаңа терминал емес Y шығарамыз
Қадам 3. X оң бөлік үшін рекурсивті ережені ауыстырамыз, жаңа терминал еместі қолдана отырып, бірақта тіл өзгермеуі қажет:
Қадам 4. Жиынды жаңа терминал емес Y грамматикасымен толықтырамыз. Қадам3–тегі алынған жиынның грамматика ережесімен толықтырамыз
Қадам 5. Барлық рекурсивті терминал емес грамматикаға қадам1-4 қайталаймыз.Одан кейін терминал емес жиынды және ережені мына түрде қарастырамыз VN′ және .P′
Өзіндік бақылау сұрақтары:
КС-грамматиканың келтірілген түрі қалай аталыды?
КС-грамматиканың келтірілген алгоритмын көрсетіңіз.
Есеп беру формасы: орындалған тапсырманың электрондық нұсқасы, оқытушының сұрақтарына жазбаша жауап беру.
Достарыңызбен бөлісу: |