Оптимальні програми обчислення виразів
Оптимальні програми обчислення виразів
Тип документу: Курсовая
Сторінок: 28
Предмет: Математика
Автор: Орос Володимир
Розмір: 46.4
Скачувань: 1318
Begin
Match('+');
Term;
EmitLn('POP DX');
EmitLn('ADD AX,DX');
End;
Procedure Subtract;
Begin
Match('-');
Term;
EmitLn('POP DX');
EmitLn('SUB DX,AX');
EmitLn('MOV DX,AX');
End;
Procedure Expression;
Begin
If IsAdDop(Look) Then
EmitLn('XOR AX,AX')
Else
Term;
While IsAdDop(Look) Do Begin
EmitLn('PUSH AX');
Case Look Of
'+': Add;
'-': Subtract;
End;
End;
End;
Procedure Assignment;
Var Name: String[8];
Match('+');
Term;
EmitLn('POP DX');
EmitLn('ADD AX,DX');
End;
Procedure Subtract;
Begin
Match('-');
Term;
EmitLn('POP DX');
EmitLn('SUB DX,AX');
EmitLn('MOV DX,AX');
End;
Procedure Expression;
Begin
If IsAdDop(Look) Then
EmitLn('XOR AX,AX')
Else
Term;
While IsAdDop(Look) Do Begin
EmitLn('PUSH AX');
Case Look Of
'+': Add;
'-': Subtract;
End;
End;
End;
Procedure Assignment;
Var Name: String[8];