Семантика языков программирования. Семантический анализ и элементы генерации объектного кода или интерпретации, страница 14

  <rightPart>

   <action>prog=prog+currentLexem.textOfWord;</action>

   <string>+</string>

   <symbol>MathExp</symbol>

   <action>postFix.push( "+" );</action>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='R'>

  <rightPart>

   <action>prog=prog+currentLexem.textOfWord;</action>

   <string>-</string>

   <action>minusStk.push(postFix.size());</action>

   <symbol>MathExp</symbol>

   <action>if(postFix.peek().toString()=="-"&&(((MinusClass)postFix.peek()).Priority==minusPrior)){postFix.add((Integer)minusStk.pop(),new MinusClass(minusPrior,false));}else{postFix.push(new MinusClass(minusPrior,false));}</action>

  </rightPart>

 </rule>

 <rule for='GramaConstruction' leftPart='R'>

  <rightPart>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='WhatIsIt'>

  <rightPart>

   <action>postFix.pop();

funcCall.push(postFix.size());</action>

   <symbol>FunctionArgs</symbol>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='WhatIsIt'>

  <rightPart>

   <symbol>MethodOrData</symbol>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='WhatIsIt'>

  <rightPart>

   <action>funcCall.pop();prog=prog+currentLexem.textOfWord;</action>

   <symbol>assign</symbol>

   <symbol>NowOrExp</symbol>

   <action>postFix.push("&lt;=");</action>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='const'>

  <rightPart>

   <symbol>float_const</symbol>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='const'>

  <rightPart>

   <symbol>int_const</symbol>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='const'>

  <rightPart>

   <symbol>char</symbol>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='const'>

  <rightPart>

   <symbol>LogicConst</symbol>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='endcase'>

  <rightPart>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='endcase'>

  <rightPart>

   <action>prog=prog+" break; ";</action>

   <string>endcase</string>

   <action>caseCount=(Integer)labels.pop();

selectCount=(Integer)labels.peek();

 postFix.push( "selectEnd" +selectCount);

 postFix.push( "JMP");

labels.push(caseCount);</action>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='OtherMethodArg'>

  <rightPart>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='OtherMethodArg'>

  <rightPart>

   <string>,</string>

   <action>prog=prog+", "+currentLexem.textOfWord;</action>

   <symbol>NowOrExp</symbol>

   <symbol>OtherMethodArg</symbol>

  </rightPart>

 </rule>

 <rule for='Classes' leftPart='V'>

  <rightPart>

   <action>prog=prog+currentLexem.textOfWord;</action>

   <string>(</string>

   <action>minusPrior++;

 brakets.push(minusStk.size());

 brakets.push(divStk.size());</action>

   <symbol>MathExp</symbol>

   <action>prog=prog+currentLexem.textOfWord;</action>

   <string>)</string>

   <action>minusPrior--;while(((Integer)brakets.peek())&lt;divStk.size()){divStk.pop();};brakets.pop();while(((Integer)brakets.peek())&lt;minusStk.size()){minusStk.pop();};

 brakets.pop();</action>

  </rightPart>

 </rule>