Ўзбекистон республикаси алоқА, ахборотлаштириш ва телекоммуникация технологиялари давлат қЎмитаси тошкент ахборот технологиялари университети


Download 1.45 Mb.
bet43/60
Sana18.03.2023
Hajmi1.45 Mb.
#1282705
1   ...   39   40   41   42   43   44   45   46   ...   60
Bog'liq
ТДТ(Маъруза 2011) охирги

10-расм.
қуйидаги операторга ўгирилади
while( belongsTo (ch, L)) T(S);
бу ерда T(S) В3-В7 қоидаларга мос равишда S ни акс эттирилиши, а L эса бу L=first(S) тўпламдир.
В6. Бошқа А графни белгиловчи элементни (11-расм)


11-расм.
А() функцияга мурожат қилувчи операторга ўгирилади.
В7. х терминал белгини белгиловчи граф элементи (12-расм)


12-расм.
қуйидаги операторга ўгирилади.
if(ch = = ‘x’) ch = fgetc(input);
else error();
бу ерда error() функцияга нотўғри конструкцияга дуч келинганда мурожаат этилади.
Энди ушбу қоидаларни редуцив графни грамматик таҳлил дастурига айлантириш мисолида кўриб чиқамиз.
char ch;
void A( )
{
if( ch= = ‘x’) ch= fgetc(input);
else
if(ch= =’(‘)
{
ch= fgetc(input);
A( );
while(ch= =’+’)
{
ch= fgetc(input);
A( );
}
if( ch= = ‘)’) ch= fgetc(input);
else error( );
}
else error( );
}
void main(int argc. char **argv)
{
ch= fgetc(input);
A( );
}

Ушбу айлантиришда дастурлашнинг бир неча дастурни соддалаштирувчи қоидалари қўлланилди. Масалан, бирга бир айлантиришда тўртинчи қатор қуйидаги кўринишга эга бўлар эди.


if( ch= = ‘x’)
if( ch= = ‘x’) ch= fgetc(input); else error( );
else….
Ушбу ҳолни худди шу дастурда кўриб ўтилгандек соддалаштириш мумкин. Саккизинчи ва ўн иккинчи қатордаги ўқиш операторлари ҳам худди шундай соддалаштириш асосида олинган.
Бундай соддалаштиришлар мумкин ёки йўқлигини аниқлаш ва уларни графлар кўринишида кўрсатиш фойдалироқдир.

Иккита асосий ҳолат қуйидаги қўшимча қоидалар билан ёпилади:


В4а. (13-расм)

13-расм.
if( ch= = ‘x1’)
{
ch= fgetc(input);
T(S1);
}
else
if( ch= = ‘x2’)
{
ch= fgetc(input);
T(S2);
}
else
….
if( ch= = ‘xn’)
{
ch= fgetc(input);
T(Sn);
}
else error( );

B5a.(14-расм)



14-расм.
while(ch= =’x’)
{
ch= fgetc(input); T(S );
}
Бундан ташқари кўпинча учрайдиган қуйидаги конструкцияни
ch= fgetc(input); T(S );
while(W)
{
ch= fgetc(input); T(S );
}
қисқачароқ қуйидагича ифодалаш мумкин:
do {
ch= fgetc(input);
T(S );

} while(W);
Биз бу ерда error («хатолик») функциясини ифодаламаймиз, чунки бизни ҳозирча кирувчи гапни тўғри эканлигини аниқлаш қизиқтиради холос.

Download 1.45 Mb.

Do'stlaringiz bilan baham:
1   ...   39   40   41   42   43   44   45   46   ...   60




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling