Nemerle OperatorAttribute параметры

Мой вопрос в комментарии в следующем коде.

namespace TestMacroLib
{
    [assembly: Nemerle.Internal.OperatorAttribute ("TestMacroLib", "multiply", false, 160, 161)] 
    // what does 160 and 161 represent? The parameters are "left" and "right", but that doesn't help.
    public macro multiply(op1, op2)
    {
        <[ ( $op1 * $op2 ) ]>
    }
}

Этот пример кода из: формата Infix для макроса Nemerle

1 ответ

Решение

Эти числа определяют приоритет оператора и ассоциативность. Если первое число меньше, оператор является ассоциативным слева, если второе - справа. Операторы с большими числами имеют более высокий приоритет. С первого взгляда это выглядит не интуитивно, но когда вы больше думаете о деталях разбора выражения, это имеет смысл.

Другие вопросы по тегам