Оптимальні програми обчислення виразів, Детальна інформація
Оптимальні програми обчислення виразів
Begin
Write(TAB, s);
End;
Procedure EmitLn(s: String);
Begin
Emit(s);
WriteLn;
End;
Procedure Ident;
Var Name: String[8];
Begin
Name:= GetName;
If Look = '(' Then Begin
Match('(');
Match(')');
EmitLn('CALL ' + Name);
End
Else
EmitLn('MOV ' + Name + ',AX');
End;
Procedure Expression; Forward;
Procedure Factor;
Begin
If Look = '(' Then Begin
Match('(');
Expression;
Match(')');
End
Else If IsAlpha(Look) Then
Ident
Write(TAB, s);
End;
Procedure EmitLn(s: String);
Begin
Emit(s);
WriteLn;
End;
Procedure Ident;
Var Name: String[8];
Begin
Name:= GetName;
If Look = '(' Then Begin
Match('(');
Match(')');
EmitLn('CALL ' + Name);
End
Else
EmitLn('MOV ' + Name + ',AX');
End;
Procedure Expression; Forward;
Procedure Factor;
Begin
If Look = '(' Then Begin
Match('(');
Expression;
Match(')');
End
Else If IsAlpha(Look) Then
Ident
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021