Current section
Files
Jump to
Current section
Files
lib/wongi/engine/dsl/ncc.ex
defmodule Wongi.Engine.DSL.NCC do
@moduledoc false
defstruct subchain: []
def new(subchain), do: %__MODULE__{subchain: subchain}
defimpl Wongi.Engine.DSL.Clause do
import Wongi.Engine.Compiler
alias Wongi.Engine.Beta.NCC
alias Wongi.Engine.Compiler
alias Wongi.Engine.DSL.Clause
def compile(%@for{subchain: subchain}, context) do
subchain_context =
Enum.reduce(subchain, context, fn clause, context ->
Clause.compile(clause, context)
end)
{node, partner} = NCC.new_pair(context.node_ref, subchain_context.node_ref)
%Compiler{rete: rete} = advance(subchain_context, partner)
context
|> put_rete(rete)
|> advance(node)
end
end
end