This is an automated email from the ASF dual-hosted git repository.
mbeckerle pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-daffodil-site.git
The following commit(s) were added to refs/heads/master by this push:
new b15090f Remove transition plan sections since this is now implemented.
b15090f is described below
commit b15090f64c7c680da9ad0dcf24f179f47d6357b1
Author: Michael Beckerle <[email protected]>
AuthorDate: Fri Apr 3 16:02:23 2020 -0400
Remove transition plan sections since this is now implemented.
---
.../term-sharing-in-schema-compiler.adoc | 76 ----------------------
1 file changed, 76 deletions(-)
diff --git a/site/dev/design-notes/term-sharing-in-schema-compiler.adoc
b/site/dev/design-notes/term-sharing-in-schema-compiler.adoc
index cda6a37..f6d82f2 100644
--- a/site/dev/design-notes/term-sharing-in-schema-compiler.adoc
+++ b/site/dev/design-notes/term-sharing-in-schema-compiler.adoc
@@ -588,79 +588,3 @@ It exists in 1 to 1 correspondence (aka it is "owned" by
the enclosing model gro
In the Runtime 1 backend, a processor (parser/unparser) is generated for the
shared term object,
and that processor is referenced from the processor generated for the unshared
term object.
-== Transition Plan
-
-IMPORTANT: Once implemented this section can be deleted as it is describing
transition from an older Daffodil version to one that implements the shared
objects.
-
-We can examine several of the context-dependent calculations below.
-
-==== isAlignmentFillNeeded, isInitiatorMTANeeded, isTerminatorMTANeeded,
isPrefixInfixSeparatorMTANeeded, isPostfixSeparatorMTANeeded
-
-These are the output of the analysis of alignments, and they turn on/off the
presence of these regions.
-These are of particular importance to a streaming unparser since they can
require suspension of unparsing until alignment can be determined at runtime.
-
-==== isPotentiallyTrailing
-
-This is context dependent because a given term definition can be reused in
multiple contexts, some of which where it is potentially trailing, and others
of which where it is not.
-
-==== needsBitOrderChange
-
-This is used to optimize out suspensions in the unparser. It is context
dependent because whether the bit order is changing when the processor arrives
on a term depends on what preceded it in the processing.
-
-==== isScanningForDelimiter
-
-This is used to determine whether a delimiter stack combinator is used as part
of the grammar. It is context dependent because a separator or terminator can
be defined on an enclosing model group.
-
-TBD: It's possible we don't need to wrap this combinator around elements.
Manipulating the delimiter stack should only be necessary when delimiters go
into and out of scope. So that would mean once per model group, not per term
within the model group.
-
-==== isScanningForTerminator
-
-This determines whether the schema compiler will allow the entity "%ES;" as a
runtime value for the expression value of a dfdl:terminator property.
-Specifically if we are scanning for a terminator then the "%ES;" entity is
disallowed.
-
-This is context dependent because the terminator may be defined on an
enclosing model group, not on an element that is within that model group.
-The element may have a position in the model group such that it may be last,
and in that case if it has a length kind that does not use the terminator
(e.g., dfdl:lengthKind='pattern') then that terminator is not being scanned
for, and so it is allowable for it to be empty string at runtime.
-
-If this computation is done on the unshared term, it must inquire about many
characteristics of the enclosing model group.
-It may be that this computation is best done on the model-group object.
-
-==== initiatedContent Check
-
-When a model group has the dfdl:initiatedContent="yes" property, all
represented term children must have a defined initiator.
-
-This is context dependent because a global element declaration or a global
group definition may define an initiator, but the model group with initiated
content may refer to these via an element reference or group reference.
-That is, the relationship is not one of lexical enclosure.
-The check must be done as part of the unshared term, or on the enclosing model
group itself.
-
-=== Refactoring of Primary DSOM Classes
-
-Implementing this sharing requires splitting the DSOM Term clases each into a
unique and a shared part.
-
-This will be done by renaming each Term to SharedTerm, and introducing
UniqueTerm.
-
-For example ElementBase will be renamed to SharedElementBase, and new abstract
class UniqueElementBase will be created.
-
-This will occur uniformly across the DSOM Term subclasses/traits.
-
-Some of the mixins to these classes will go on only one or the other of the
shared or unique parts.
-
-Many of the mixins will have to split into a mixin for the shared part and
another mixin for the unique part.
-One example of this is the AlignedMixin. This currently deals with alignment
regions that are found in unique parts and shared parts, and those
-methods must go on different objects.
-
-The unique term classes will utilize a central memoizing factory to allocate
or find shared term instances based on having equivalent PropEnvs.
-
-
-
-
-=== Testing Notes
-
-
-==== Compiler Instrumentation
-
-Some standard compiler instrumentation that is dumped out based on options to
daffodil compiler, to include:
-
-* counters of number of distinct shared terms for each global def/decl.
-* counters of number of inbound references to each shared term.
-
-The point is to have metrics that can be compared and which will make it clear
if under maintenance the sharing is somehow lost and we're getting bad
compile-time behavior again.