Data Format Description Language (DFDL) v1.0 Specification
OGF Proposed Recommendation GFD-P-R.174, January 31, 2011


9.2 DFDL Data Syntax Grammar

Data in a format describable via a DFDL schema obeys the grammar given here. A given DFDL schema is read by the DFDL processor to provide specific meaning to the terminals and decisions in this grammar.

The bits of the data are divided into two broad categories:

The content is the bits of data that are interpreted to compute a logical value.

Framing is the term we use to describe the delimiters, length fields, and other parts of the data stream which are present, and may be necessary to determine the length or position of the content of DFDL Infoset items.

Note that sometimes the framing is not strictly necessary for parsing, but adds useful redundancy to the data format, allowing corrupt data to be more robustly detected, and sometimes the framing adds human readability to the data format.

In our grammar tables below primitive content is in italic font. The primitive content is one subset of the grammar’s terminal symbols. The terminal symbols that are framing are shown in bold italic font.

Productions

Document = Element

Element = SimpleElement | ComplexElement

SimpleElement = ElementLeftFraming SimpleContent RightFraming

ComplexElement = ElementLeftFraming ComplexContent RightFraming

ElementLeftFraming = LeftFraming PrefixLength

PrefixLength = SimpleContent

LeftFraming = LeadingAlignment Initiator

RightFraming =  Terminator TrailingAlignment

LeadingAlignment = LeadingSkip AlignmentFill

TrailingAlignment = TrailingSkip

SimpleContent = LeftPadding SimpleRepresentation RightPadOrFill

ComplexContent = Sequence | Choice

Sequence = LeftFraming SequenceContent RightFraming

SequenceContent = [ PrefixSeparator SequenceItem [ Separator SequenceItem ]* PostfixSeparator ] FinalUnusedRegion

SequenceItem = Element | Array | ComplexContent

Choice = LeftFraming ChoiceContent RightFraming

ChoiceContent = [ Element | Array | ComplexContent ] FinalUnusedRegion

Array = [ Element [ Separator Element ]* [ Separator StopValue] ]

StopValue = SimpleElement

Table 13 DFDL Grammar Productions

 


Copyright (C) Open Grid Forum (2005-2010). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the OGF or other organizations, except as needed for the purpose of developing Grid Recommendations in which case the procedures for copyrights defined in the OGF Document process must be followed, or as required to translate it into languages other than English.