Project

General

Profile

Actions

Task #4656

closed

[translator] Возможность инстанцирования операций в других операциях

Added by Alexander Kamkin almost 11 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
High
Assignee:
Andrei Tatarnikov
Category:
-
Target version:
Start date:
12/26/2013
Due date:
05/31/2014
% Done:

100%

Estimated time:
Detected in build:
svn
Published in build:
141230

Description

Цель - возможность выделения общей функциональность в операции.

Предположим, требуется выделить проверку условий возникновения исключений в отдельную операцию и вызывать ее из action-блоков инструкций.

op ExceptionChecker(flags: Flags) // возможны параметры
    action = { ... }              // синтаксис не нужен

Сейчас для вызова одной операции из другой у родительской операции нужно заводить параметр. Соответственно, параметр нужно указывать в тестовом шаблоне (что уже кривовато); есть шанс, что он будет указан некорректно (это никуда не годится).

Другой вариант - создать инстанс требуемой операции и осуществить вызов.

op ADD(src1: REG, src2: REG, dst: REG)
    syntax  = format("slozhenie %s %s %s", src1.syntax, src2.syntax, dst.syntax)
    action  =
    {
        ExceptionChecker(0xDEAD).action;
        checker.action;
        ...
    }

Режимы с возвращаемым значением можно использовать в выражениях:

mode TypeOf(x: IMMEDIATE) = x<13..12>
if(TypeOf(x) == X)
    ...
endif
Actions

Also available in: Atom PDF