Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Please see the package documentation for the dsom package in the code base (dsom folder, package.scala file), as that is where the primary motivational documentation is.

In general, Daffodil converts the DFDL schema into a DSOM tree/graph. The DSOM tree is used for much semantic checking, but it is the generator for a corresponding Gram (short for Grammar) tree the nodes of which correspond to combinators and terminals of a data syntax grammar. This grammar provides a simple framework for localized optimizations. Ultimately the Gram tree/graph generates the processors - parser and unparser - which are themselves trees of objects derived from the Parser and Unparser base traits/classes.

So really it's a 4 step process DFDL XSD → DSOM → Gram → Parser/Unparser.

UML Class Diagram

This diagram shows only the primary traits and classes of DSOM. Threre are many other components, and a wide variety of mixin traits that enable code sharing.

 


draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameDSOM-primary-classes
simpleViewerfalse
diagramWidth2548
revision40

The above shows now fact that each def-ref relationship is many (refs) to 1 (def) and is bi-directional in that the "backpointer" is to multiple refs, from a def, not a single one.

Shading for concrete Term subclasses.

This next diagram shows the simpleType and complexType system.

draw.io Diagram
width
bordertrue
diagramNameElements, Types, Groups
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth23171829
revision79