Match('-');
Term;
EmitLn('SUB D1,D0');
EmitLn('NEG D0');
end;
{β}
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Ρ ΠΊΠΎΠ΄ Π΄Π°ΠΆΠ΅ Π΅ΡΠ΅ ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, Π½ΠΎ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π²ΡΠ΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ! Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈ Π² Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π»Ρ Π½Π°Ρ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠΏΡΡΡ, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΊΡΠΎΠ² ΠΆΠΈΠ·Π½ΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΡΠΈΡΠ΅ΡΡ ΠΆΠΈΡΡ. ΠΡΠ΅ ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡΡ ΡΠ½ΠΎΠ²Π°, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π½Π°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΠΌΡΡ Π·Π° Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
ΠΡΠ°ΠΊ, Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΡΡΠΌΠΌΡ ΠΈΠ»ΠΈ ΡΠ°Π·Π½ΠΎΡΡΡ Π΄Π²ΡΡ ΡΠΈΡΡ. Π Π°Π½Π΅Π΅ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ ΡΠΈΡΡΡ. ΠΠΎ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΡΡ ΡΠΎΡΠΌΡ (ΠΈΠ»ΠΈ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ ). ΠΠ΅ΡΠ½ΠΈΡΠ΅ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π²Ρ ΠΎΠ΄Π½ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ β1β.
ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? Π ΠΏΠΎΡΠ΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ? ΠΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·Π°Π»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ, ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ Π΄Π²ΡΠΌΡ ΡΠ΅ΡΠΌΠ°ΠΌΠΈ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Expression ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π±ΡΠ»Π° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π°ΡΡΠΎΡΡΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°.
ΠΠ±ΡΠ°Ρ ΡΠΎΡΠΌΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΠΌΠΎΠ², ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ Β«addopsΒ» ('+' ΠΈΠ»ΠΈ '-'). Π ΠΠΠ€ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ:
<expression> ::= <term> [<addop> <term>]*
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠΊΠ» ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Expression:
{β}
{ Parse and Translate an Expression }
procedure Expression;
begin
Term;
while Look in ['+', '-'] do begin
EmitLn('MOVE D0,D1');
case Look of
'+': Add;
'-': Subtract;
else Expected('Addop');
end;
end;
end;
{β}
ΠΡΠ° Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ΅ΡΠΌΠΎΠ², ΠΈ ΡΡΠΎ ΡΡΠΎΠΈΠ»ΠΎ Π½Π°ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. ΠΠΎ ΠΌΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ, Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ ΡΡΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΠΎ Π΄Π»Ρ Π½ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²β¦ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ°. ΠΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π°Ρ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Expression ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΠΠ€. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄Π½Π° ΠΈΠ· Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠΎΠ³Π΄Π° Π²Ρ ΡΡΠ°Π½Π΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΠΠΠ€ Π² ΠΊΠΎΠ΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΊΠΎΡΠΎΡΡΡΡ, Ρ ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π±ΠΈΡΠ°ΡΡ ΡΠ΅ΠΊΡΡ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅!
ΠΠ, ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΈ ΠΈΡΠΏΡΡΠ°ΠΉΡΠ΅ Π΅Π³ΠΎ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΠΎ Β«ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΒ» ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π΄Π»Ρ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π½ΡΡ . Π§Π΅ΡΠΊΠΎ, Π΄Π°? ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΉ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π»ΡΠ±ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΊΡΠ°Π½ ΠΊΠ°ΠΊ Β«Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ»Β» Π² ΡΡΠΈΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ . Π ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½β¦ ΠΎΠ΄ΠΈΠ½ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ», Π΄ΡΡΠ³ΠΎΠΉ Π½Π° ΡΠΊΡΠ°Π½.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π½Π°ΡΡΡΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠΎ Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Ρ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅, ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΡΠΎΡΠ»ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ D0 ΠΊΠ°ΠΊ Β«ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉΒ» ΡΠ΅Π³ΠΈΡΡΡ, ΠΈ D1 Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ. ΠΡΠ° ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Ρ Β«addopsΒ» (β+β ΠΈ β-β) ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ. ΠΠΎ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠΎΡΠΌΠ΅ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
1+(2-(3+(4-5)))
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Β«1Β» Π² D1, ΡΠΎ Π³Π΄Π΅ ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠΌ Β«2Β»? Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΉ ΡΠΎΡΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠΎ ΠΌΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ!
Π ΡΡΠ°ΡΡΡΡ Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ, 68000 ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠ΅ΡΠΌΡ Π² D0 ΠΈ D1 Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΡΠΎΠ»ΠΊΠ½Π΅ΠΌ ΠΈΡ Π² ΡΡΠ΅ΠΊ. ΠΠ»Ρ ΡΠ΅Ρ ΠΊΡΠΎ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌ Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌ 68000 β ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΊ ΠΏΠΈΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ
β(SP)
ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ (SP)+.
ΠΡΠ°ΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ EmitLn Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Expression Π½Π°
EmitLn('MOVE D0,-(SP)');
ΠΈ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ Π² Add ΠΈ Subtract:
EmitLn('ADD (SP)+,D0') ΠΈ EmitLn('SUB (SP)+,D0')
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΡΡΠ°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΠΌΡΡ ΡΡΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π ΡΠ½ΠΎΠ²Π°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, ΡΠ΅ΠΌ Π±ΡΠ» Π΄ΠΎ ΡΡΠΎΠ³ΠΎ, Π½ΠΎ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠ°Π³, ΠΊΠ°ΠΊ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅.
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌΡΡ Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ Π΄Π΅Π»Π°. ΠΠ°ΠΊ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Β«addopsΒ» ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅β¦ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠ²Π½ΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΡΡΠΎΠ±Ρ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΡΠΈΠΏΠ°
2 + 3 * 4,
ΠΌΡ Π·Π½Π°Π»ΠΈ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΌΠ½ΠΎΠΆΠΈΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠΈΡΡ. (ΠΠΈΠ΄ΠΈΡΠ΅, Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΡΠ΅ΠΊ? )
Π ΡΠ°Π½Π½ΠΈΠ΅ Π΄Π½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², Π»ΡΠ΄ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠΎΠ±Π»ΡΠ΄Π°Π»ΠΈΡΡ. ΠΠΎ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π²ΡΠ΅ ΠΆΠ΅, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½β¦ ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Π² Π½Π°ΡΠ΅ΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠ΅ Π½ΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΠΌΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ΅ΡΠΌΠ° Π±ΡΠ»Π° ΡΠΎΡΠΌΠ° ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΡ. Π Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΉ ΡΠΎΡΠΌΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅ΡΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ (product of factors), ΡΠΎ Π΅ΡΡΡ
<term> ::= <factor> [ <mulop> <factor ]*
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ? ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΠΎΠΆΠ΅, ΡΠ΅ΠΌ Π±ΡΠ» ΡΠ°Π½Π½Π΅Π΅ ΡΠ΅ΡΠΌ β ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠΎΠΉ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΠ΅ΡΠΌ ΠΈΠΌΠ΅Π΅Ρ ΡΡ ΠΆΠ΅ ΡΠΎΡΠΌΡ, ΡΡΠΎ ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎ Π² Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π². ΠΠΎ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Π½Π΅ΡΠ°Π·Π±Π΅ΡΠΈΡ ΠΈ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΠ»Π½ΡΠΉ Π»ΠΈΡΡΠΈΠ½Π³ Π²ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°. (ΠΠ°ΠΌΠ΅ΡΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² Π² Divide.)
{β}
{ Parse and Translate a Math Factor }
procedure Factor;
begin
EmitLn('MOVE #' + GetNum + ',D0')
end;
{β}
{ Recognize and Translate a Multiply }
procedure Multiply;
begin
Match('*');
Factor;
EmitLn('MULS (SP)+,D0');
end;
{β}
{ Recognize and Translate a Divide }
procedure Divide;
begin
Match('/');
Factor;
EmitLn('MOVE (SP)+,D1');
EmitLn('DIVS D1,D0');
end;
{β}
{ Parse and Translate a Math Term }
procedure Term;
begin
Factor;
while Look in ['*', '/'] do begin
EmitLn('MOVE D0,-(SP)');
case Look of
'*': Multiply;
'/': Divide;
else Expected('Mulop');
end;
end;
end;
{β}
{ Recognize and Translate an Add }
procedure Add;
begin
Match('+');
Term;
EmitLn('ADD (SP)+,D0');
end;
{β}
{ Recognize and Translate a Subtract }
procedure Subtract;
begin
Match('-');
Term;
EmitLn('SUB (SP)+,D0');
EmitLn('NEG D0');
end;
{β}
{ Parse and Translate an Expression }
procedure Expression;
begin
Term;
while Look in ['+', '-'] do begin
EmitLn('MOVE D0,-(SP)');
case Look of
'+': Add;
'-': Subtract;
else Expected('Addop');
end;
end;
end;
{β}
ΠΠΎΠ½ΡΠ΅ΡΠΊΠ°! ΠΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ Π² 55 ΡΡΡΠΎΠΊ ΠΠ°ΡΠΊΠ°Π»Ρ! ΠΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΠΌΡ Π½Π΅ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
ΠΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ ΡΡΡ ΡΠ°ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ. ΠΠ°ΠΊ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
2*(3+4) ,
ΡΠΊΠΎΠ±ΠΊΠΈ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎ, ΡΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΡΠΊΠΎΠ±ΠΊΠΈ Π΄Π°ΡΡ Π½Π°ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π»ΡΠ±ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
(1+2)/((3+4)+(5-6))
ΠΠ»ΡΡΠΎΠΌ ΠΊ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π² Π½Π°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π² ΡΠΊΠΎΠ±ΠΊΠΈ, Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΠΈΡΠ° ΠΎΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠΎΡΠΌ Π΄Π»Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ:
<factor> ::= (<expression>)
ΠΠ΄Π΅ΡΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΡ. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΡΡΠ³ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈ Ρ.Π΄. Π΄ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ.
Π‘Π»ΠΎΠΆΠ½ΠΎ ΡΡΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΡΠ΅ΠΊ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Factor:
{β}
{ Parse and Translate a Math Factor }
procedure Expression; Forward;
procedure Factor;
begin
if Look = '(' then begin
Match('(');
Expression;
Match(')');
end
else
EmitLn('MOVE #' + GetNum + ',D0');
end;
{β}
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅ ΡΠ½ΠΎΠ²Π°, ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΈ ΠΊΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΎ ΠΊΠΎΠ΄ ΠΠ°ΡΠΊΠ°Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ ΠΠΠ€.
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
Π£Π½Π°ΡΠ½ΡΠΉ ΠΌΠΈΠ½ΡΡ
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠΈ Π»ΡΠ±ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ? ΠΠ, ΡΠΎΠ³Π΄Π° ΠΈΡΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
β1
ΠΠΏΡ! ΠΠ½ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½Π΅ ΠΏΡΠ°Π²Π΄Π° Π»ΠΈ? ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Expression ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΈΡΠ»Π° Π±ΡΠ΄ΡΡ ΡΠ΅Π»ΡΠΌΠΈ ΠΈ ΡΠΏΠΎΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° Π·Π½Π°ΠΊΠ΅ ΠΌΠΈΠ½ΡΡ. ΠΡ Π½Π°ΠΉΠ΄Π΅ΡΠ΅, ΡΡΠΎ +3 ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΈΠΏΠ°:
β(3-2).
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠ°ΡΠ° ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄Π»Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π‘Π°ΠΌΡΠΉ Π»Π΅Π³ΠΊΠΈΠΉ (Ρ ΠΎΡΡ ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΌΡΠΉ Π»ΡΡΡΠΈΠΉ) ΡΠΏΠΎΡΠΎΠ± β Π²ΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ»Ρ Π² Π½Π°ΡΠ°Π»ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎΠ±Ρ -3 ΡΡΠ°Π» 0-3. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Expression:
{β}
{ Parse and Translate an Expression }
procedure Expression;
begin