p align="justify"> lt; операнд gt;? lt; ID gt;
| lt; сімв.конст. gt;
lt; аріфм.вир. gt ;? lt; операнд gt; lt; аріфм.оп. gt; lt; операнд gt;
| lt; аріфм.вир gt; lt; аріфм.оп. gt; lt; операнд gt;
| lt; операнд gt; lt; аріфм.оп. gt; lt; аріфм.вир gt;
lt; оператор gt;? lt; оп.цікла gt;
| lt; оп.прісв gt;
| lt; услов.оп gt;
lt; оп.прісв. gt;? lt; ID gt; := lt; операнд gt; ;
| lt; ID gt; := lt; аріфм.вир. gt; ;
lt; блок опер. gt; ? lt; оператор gt; ; lt; операт?? р gt;
| lt; блок gt; ; lt; оператор gt;
lt; тіло gt;? { lt; блок опер gt; ;}
lt; оп.цікла gt ;? do lt; тіло gt; while ( lt; аріфм.вир. gt; ) ;
| do { lt; оператор gt; } while ( lt; аріфм.вир. gt; ) ;
lt; услов.оп gt ;? if ( lt; аріфм.вир gt; ) < i align="justify"> then lt; тіло gt; else lt ; тіло gt;
| if ( lt; аріфм.вир gt; ) then lt; тіло gt;
| if ( lt; аріфм.вир gt; ) then lt; оператор gt; else lt; оператор gt;
| if ( lt; аріфм.вир gt; ) then lt; оператор gt;
| if ( lt; аріфм.вир gt; ) then lt; оператор gt; else lt; тіло gt;
| if ( lt; аріфм.вир gt; ) then lt; тіло gt; else lt; оператор gt;
lt; прогр. gt ;? prog lt; тіло gt; end
| prog lt; оператор gt; end
Граматика є граматикою операторного передування, так як вона не містить l -Праве і праві частини правил не містять суміжних нетермінальних символів. Побудуємо безлічі крайніх лівих і крайніх правих символів L ( U ), R ( U ) щодо всіх нетермінальних символів граматики.
Таблиця 3.1 - Множини крайніх правих і крайніх лівих символів
Символ (U) Початок построеніяL (U) R (U) lt; елемент gt; lt; число gt;, ID, lt;элементgt;lt;числоgt;,IDlt;лев.вырgt;lt;элементgt;,lt;лев.вырgt;lt;элементgt;,lt;числоgt;lt;вырgt;lt;лев.вырgt; ; lt; сіс.уравн gt; lt; сіс.уравн gt;, lt; вир gt; lt; вир gt;
На основі отриманих множин побудуємо безлічі крайніх лівих і крайніх правих термінальних символів L t ( U ), R t ( U ) щодо всіх нетермінальних символів граматики.
Таблиця 3.2 - Мн...