написал макрос для проверки
[assembly: Nemerle.Internal.OperatorAttribute ("DBLib", "|>", false, 120, 121)]
[assembly: Nemerle.Internal.OperatorAttribute ("DBLib", "!>", false, 120, 121)]
[MacroUsage(MacroPhase.BeforeInheritance, MacroTargets.Method)]\
macro Rule(typeBuilder : TypeBuilder, _ : ClassMember.Function, expr : PExpr)\
syntax ("Rule", expr)
_ = expr
и смотрю, что он дает для выражения:
#pragma warning disable 10005
#pragma indent
public class Var
[DBall] meth()
5 > z
Rule 5 > z && 10 > z |> r = "" |> r = "6" !> r = "5" //вар 1
Rule 5 > z && 10 > z |>
r = "" |> r = "6" !> r = "5" //вар 2
r : string
s : double
z : int
в варианте 1 AST-рутом оказывается !> что логично.
в варианте 2 — |> . как на это реагировать?