<rule for='Classes' leftPart='V'>
<rightPart>
<action>postFix.push(currentLexem.textOfWord);prog=prog+currentLexem.textOfWord;</action>
<symbol>const</symbol>
</rightPart>
</rule>
<rule for='Classes' leftPart='V'>
<rightPart>
<action>idResolver.push(funcCall.size());
funcCall.push(postFix.size());postFix.push(currentLexem.textOfWord);firstPriznak=true;prog=prog+currentLexem.textOfWord;</action>
<symbol>id</symbol>
<symbol>ForM1</symbol>
<symbol>RestIdExp</symbol>
<action>int idRes=(Integer)idResolver.pop();
while(funcCall.size()>idRes){
funcCall.pop();
}</action>
</rightPart>
</rule>
<rule for='Classes' leftPart='W'>
<rightPart>
<action>prog=prog+currentLexem.textOfWord;</action>
<string>*</string>
<symbol>U</symbol>
<action>postFix.push("*");</action>
</rightPart>
</rule>
<rule for='Classes' leftPart='W'>
<rightPart>
<action>prog=prog+currentLexem.textOfWord;</action>
<string>/</string>
<action>divStk.push(postFix.size());</action>
<symbol>U</symbol>
<action>if(postFix.peek().toString()=="/"&&(((DivClass)postFix.peek()).Priority==minusPrior)){
postFix.add((Integer)divStk.pop(),new DivClass(minusPrior));
}else{postFix.push(new DivClass(minusPrior));}</action>
</rightPart>
</rule>
<rule for='GramaConstruction' leftPart='W'>
<rightPart>
</rightPart>
</rule>
<rule for='Classes' leftPart='LogicConst'>
<rightPart>
<string>true</string>
<action>postFix.push("true");prog=prog+"true";</action>
</rightPart>
</rule>
<rule for='Classes' leftPart='LogicConst'>
<rightPart>
<string>false</string>
<action>postFix.push("false");
prog=prog+"false";</action>
</rightPart>
</rule>
<rule for='Classes' leftPart='LogicConst'>
<rightPart>
<action>prog=prog+currentLexem.textOfWord;</action>
<string>!</string>
<symbol>LogicConst</symbol>
<action>postFix.push("!");</action>
</rightPart>
</rule>
<rule for='Classes' leftPart='ForM1'>
<rightPart>
<action>firstPriznak=false;</action>
</rightPart>
</rule>
<rule for='Classes' leftPart='ForM1'>
<rightPart>
<action>postFix.pop();
funcCall.push(postFix.size());</action>
<symbol>FunctionArgs</symbol>
</rightPart>
</rule>
<rule for='Classes' leftPart='RestIdExp'>
<rightPart>
</rightPart>
</rule>
<rule for='Classes' leftPart='RestIdExp'>
<rightPart>
<string>.</string>
<action>prog=prog+"."+currentLexem.textOfWord;postFix.push(currentLexem.textOfWord) ;</action>
<symbol>id</symbol>
<action>postFix.push(".");</action>
<symbol>ForM1</symbol>
<symbol>RestIdExp</symbol>
</rightPart>
</rule>
</syntax>
</transLab>
Вывод: в ходе выполнения лабораторной работы я изучил семантические свойства объектов транслируемой программы, методы их выявления и использования, типов данных и методов контроля типов, областей видимости переменных, локальных и нелокальных сред ссылок, способов передачи параметров, приобрел навыки преобразования псевдокода в объектный код или разработки элементов виртуальной машины для интерпретируемого языка.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.