Package net.hydromatic.morel.compile
Class SuchThatShuttle.DeferredStepList
java.lang.Object
net.hydromatic.morel.compile.SuchThatShuttle.DeferredStepList
- Enclosing class:
SuchThatShuttle
Maintains a list of steps that have not been applied yet.
Holds the state necessary for a classic topological sort algorithm: For each node, keep the list of unresolved forward references. After each reference is resolved, remove it from each node's list. Output each node as its unresolved list becomes empty. The topological sort is stable.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final SuchThatShuttle.FreeFinder(package private) final List<Core.NamedPat> (package private) final PairList<Set<Core.Pat>, Consumer<FromBuilder>> -
Constructor Summary
ConstructorsConstructorDescriptionDeferredStepList(SuchThatShuttle.FreeFinder freeFinder, List<Core.NamedPat> refs) -
Method Summary
Modifier and TypeMethodDescription(package private) static SuchThatShuttle.DeferredStepListcreate(TypeSystem typeSystem, List<Core.FromStep> steps) (package private) voidflush(FromBuilder fromBuilder) (package private) voidMarks that a pattern has now been defined.(package private) voidscan(Environment env, Core.Pat pat, Core.Exp exp) (package private) voidscan(Environment env, Core.Pat pat, Core.Exp exp, Core.Exp condition) unresolvedRefs(Environment env, Core.Exp exp) (package private) voidwhere(Environment env, Core.Exp condition)
-
Field Details
-
steps
-
freeFinder
-
refs
-
-
Constructor Details
-
DeferredStepList
DeferredStepList(SuchThatShuttle.FreeFinder freeFinder, List<Core.NamedPat> refs)
-
-
Method Details
-
create
-
scan
-
scan
-
where
-
unresolvedRefs
-
resolve
Marks that a pattern has now been defined.After this method, it is possible that some steps might have no unresolved references. Those steps are now ready to add to the builder.
-
flush
-