This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-daffodil-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 5543223 Publishing from b15090f64c7c680da9ad0dcf24f179f47d6357b1
5543223 is described below
commit 5543223d7324fe70fb7f5dd89e198d1e09c66d1d
Author: Mike Beckerle <[email protected]>
AuthorDate: Fri Apr 3 23:19:01 2020 +0000
Publishing from b15090f64c7c680da9ad0dcf24f179f47d6357b1
---
.../term-sharing-in-schema-compiler/index.html | 122 ---------------------
1 file changed, 122 deletions(-)
diff --git
a/content/dev/design-notes/term-sharing-in-schema-compiler/index.html
b/content/dev/design-notes/term-sharing-in-schema-compiler/index.html
index 825bab5..c54356f 100644
--- a/content/dev/design-notes/term-sharing-in-schema-compiler/index.html
+++ b/content/dev/design-notes/term-sharing-in-schema-compiler/index.html
@@ -747,128 +747,6 @@ and that processor is referenced from the processor
generated for the unshared t
</div>
</div>
</div>
-<div class="sect1">
-<h2 id="transition-plan">Transition Plan</h2>
-<div class="sectionbody">
-<div class="admonitionblock important">
-<table>
-<tr>
-<td class="icon">
-<img src="/images/icons/important.png" alt="Important">
-</td>
-<td class="content">
-Once implemented this section can be deleted as it is describing transition
from an older Daffodil version to one that implements the shared objects.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>We can examine several of the context-dependent calculations below.</p>
-</div>
-<div class="sect3">
-<h4
id="isalignmentfillneeded-isinitiatormtaneeded-isterminatormtaneeded-isprefixinfixseparatormtaneeded-ispostfixseparatormtaneeded">isAlignmentFillNeeded,
isInitiatorMTANeeded, isTerminatorMTANeeded, isPrefixInfixSeparatorMTANeeded,
isPostfixSeparatorMTANeeded</h4>
-<div class="paragraph">
-<p>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.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="ispotentiallytrailing">isPotentiallyTrailing</h4>
-<div class="paragraph">
-<p>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.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="needsbitorderchange">needsBitOrderChange</h4>
-<div class="paragraph">
-<p>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.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="isscanningfordelimiter">isScanningForDelimiter</h4>
-<div class="paragraph">
-<p>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.</p>
-</div>
-<div class="paragraph">
-<p>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.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="isscanningforterminator">isScanningForTerminator</h4>
-<div class="paragraph">
-<p>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.</p>
-</div>
-<div class="paragraph">
-<p>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.</p>
-</div>
-<div class="paragraph">
-<p>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.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="initiatedcontent-check">initiatedContent Check</h4>
-<div class="paragraph">
-<p>When a model group has the dfdl:initiatedContent="yes" property, all
represented term children must have a defined initiator.</p>
-</div>
-<div class="paragraph">
-<p>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.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="refactoring-of-primary-dsom-classes">Refactoring of Primary DSOM
Classes</h3>
-<div class="paragraph">
-<p>Implementing this sharing requires splitting the DSOM Term clases each into
a unique and a shared part.</p>
-</div>
-<div class="paragraph">
-<p>This will be done by renaming each Term to SharedTerm, and introducing
UniqueTerm.</p>
-</div>
-<div class="paragraph">
-<p>For example ElementBase will be renamed to SharedElementBase, and new
abstract class UniqueElementBase will be created.</p>
-</div>
-<div class="paragraph">
-<p>This will occur uniformly across the DSOM Term subclasses/traits.</p>
-</div>
-<div class="paragraph">
-<p>Some of the mixins to these classes will go on only one or the other of the
shared or unique parts.</p>
-</div>
-<div class="paragraph">
-<p>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.</p>
-</div>
-<div class="paragraph">
-<p>The unique term classes will utilize a central memoizing factory to
allocate or find shared term instances based on having equivalent PropEnvs.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="testing-notes">Testing Notes</h3>
-<div class="sect3">
-<h4 id="compiler-instrumentation">Compiler Instrumentation</h4>
-<div class="paragraph">
-<p>Some standard compiler instrumentation that is dumped out based on options
to daffodil compiler, to include:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>counters of number of distinct shared terms for each global def/decl.</p>
-</li>
-<li>
-<p>counters of number of inbound references to each shared term.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>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.</p>
-</div>
-</div>
-</div>
-</div>
-</div>
</div>
</div>