[DFDL-WG] DFDL pointer & offset proposal

Bradd Kadlecik braddk at us.ibm.com
Thu Jul 23 09:52:28 EDT 2020


I incorporated some of your grammar changes but had a few modifications of
my own we can discuss further in case I'm not understanding some of the
subtleties.  I think there may be a case for a nil value with indirection
however as well.  I've updated the document to include the changes as
version 4.

(See attached file: DFDL_Indirection_v4.docx)

                                                                                   
 Regards,                                                                          
                                                                                   
 Bradd Kadlecik                                                                    
 z/TPF Development                                                                 
                                                                                   
                                                                                    
                                                                                    
                                                                                    
 Phone: 1-845-433-1573                                                2455 South Rd 
 E-mail: braddk at us.ibm.com                                         Poughkeepsie, NY 
                                                                         12601-5400 
                                                                      United States 
                                                                                    







From:	Steve Hanson/UK/IBM
To:	Bradd Kadlecik/Poughkeepsie/IBM at IBMUS
Cc:	DFDL-WG <dfdl-wg at ogf.org>, "dfdl-wg" <dfdl-wg-bounces at ogf.org>,
            Mike Beckerle <mbeckerle.dfdl at gmail.com>
Date:	07/10/2020 08:11 AM
Subject:	Re: [EXTERNAL] Re: [DFDL-WG] DFDL pointer & offset proposal


I think 'indirect' in property names  should be 'indirection', so I will
assume that in what follows.

I am not happy with 'indirectionEmptyValue' or 'indirectionMissingValue'.
Both 'empty' and 'missing' are concepts with well-defined meanings in DFDL.
How about 'indirectionInactiveValue' or better 'indirectionUnusedValue'?

My stab at an updated grammar below (changes in blue). There is no concept
of an empty indirection value or a nil indirection value, so we don't need
those clauses.

I also think we can simplify the EnclosedElement construct (changes in red)

Bradd I know you were struggling with how to link the target of the
indirection into the main grammar, as it is dis-contiguous. I think we can
achieve that by incorporating the target(s) into the Document as a whole.

If we think that the concept of an indirection can only ever happen inside
a complex type, then we could move IndirectionRep from
SimpleElement/ComplexElement to EnclosedElement.

I don't think it is worth getting more specific with IndirectElement.
Specifically, it has no LeadingAlignment or TrailingAlignment, but to
reflect that requires duplicating most of the rest of the grammar.

You have not disallowed lengthKind 'prefixed' for the 'indirectionType', so
that is included in the grammar.

                                                                                         
 Productions                                                                             
 --------------------------------------------------------------------------------------- 
                                                                                         
 Document =  DocumentElement IndirectElement*                                            
                                                                                         
 DocumentElement = SimpleElement | ComplexElement                                        
                                                                                         
 SimpleElement = SimpleLiteralNilElementRep | SimpleEmptyElementRep |                    
                             SimpleNormalRep | IndirectionRep                            
 SimpleEnclosedElement = SimpleElement | AbsentElementRep                                
                                                                                         
 ComplexElement = ComplexLiteralNilElementRep | ComplexNormalRep |                       
                                ComplexEmptyElementRep | IndirectionRep                  
 ComplexEnclosedElement = ComplexElement | AbsentElementRep                              
                                                                                         
 EnclosedElement = SimpleElement | ComplexElement | AbsentElementRep                     
                                                                                         
 IndirectElement = SimpleElement | ComplexElement                                        
                                                                                         
 --------------------------------------------------------------------------------------- 
                                                                                         
 AbsentElementRep = Absent                                                               
 --------------------------------------------------------------------------------------- 
                                                                                         
 IndirectionRep = IndirectionLeftFraming PrefixLength IndirectionContent                 
                              IndirectionRightFraming                                    
                                                                                         
 IndirectionLeftFraming = LeadingAlignment                                               
 IndirectionRightFraming = TrailingAlignment                                             
                                                                                         
 IndirectionContent = LeftPadding [ IndirectionValue | IndirectionUnusedValue ]          
 RightPadOrFill                                                                          
                                                                                         
 IndirectionValue = SimpleValue                                                          
                                                                                         
 --------------------------------------------------------------------------------------- 
                                                                                         
 SimpleEmptyElementRep =  EmptyElementLeftFraming EmptyElementRightFraming               
 ComplexEmptyElementRep =  EmptyElementLeftFraming EmptyElementRightFraming              
                                                                                         
 EmptyElementLeftFraming = LeadingAlignment EmptyElementInitiator PrefixLength           
 EmptyElementRightFraming = EmptyElementTerminator TrailingAlignment                     
 --------------------------------------------------------------------------------------- 
                                                                                         
 SimpleLiteralNilElementRep = NilElementLeftFraming [NilLiteralCharacters |              
                                                  NilElementLiteralContent]              
 NilElementRightFraming                                                                  
 ComplexLiteralNilElementRep = NilElementLeftFraming NilLiteralValue                     
 NilElementRightFraming                                                                  
                                                                                         
 NilElementLeftFraming = LeadingAlignment NilElementInitiator PrefixLength               
 NilElementRightFraming = NilElementTerminator TrailingAlignment                         
                                                                                         
 NilElementLiteralContent = LeftPadding  NilLiteralValue RightPadOrFill                  
 --------------------------------------------------------------------------------------- 
                                                                                         
 SimpleNormalRep = LeftFraming PrefixLength SimpleContent RightFraming                   
 ComplexNormalRep = LeftFraming PrefixLength ComplexContent ElementUnused                
                                     RightFraming                                        
                                                                                         
 LeftFraming = LeadingAlignment Initiator                                                
 RightFraming = Terminator TrailingAlignment                                             
                                                                                         
 PrefixLength = SimpleContent | PrefixPrefixLength SimpleContent                         
 PrefixPrefixLength = SimpleContent                                                      
                                                                                         
 SimpleContent =   LeftPadding [ NilLogicalValue | SimpleValue ]  RightPadOrFill         
                                                                                         
 ComplexContent = Sequence | Choice                                                      
 --------------------------------------------------------------------------------------- 
                                                                                         
 Sequence =  LeftFraming SequenceContent RightFraming                                    
 SequenceContent = [ PrefixSeparator  EnclosedContent [ Separator EnclosedContent ]*     
                                    PostfixSeparator ]                                   
                                                                                         
 Choice = LeftFraming ChoiceContent RightFraming                                         
 ChoiceContent = [ EnclosedContent ] ChoiceUnused                                        
                                                                                         
 EnclosedContent = [ EnclosedElement | Array | Sequence | Choice ]                       
                                                                                         
 Array = [ EnclosedElement [ Separator EnclosedElement ]*  [ Separator StopValue] ]      
                                                                                         
 StopValue = SimpleElement                                                               
 --------------------------------------------------------------------------------------- 
                                                                                         
 LeadingAlignment = LeadingSkip AlignmentFill                                            
 TrailingAlignment = TrailingSkip                                                        
 RightPadOrFill = RightPadding | RightFill | RightPadding RightFill                      
                                                                                         




Regards

Steve Hanson


IBM Hybrid Integration, Hursley, UK
Architect, IBM DFDL
Co-Chair, OGF DFDL Working Group
smh at uk.ibm.com
tel:+44-1962-815848
mob:+44-7717-378890
Note: I work Tuesday to Friday




From:	Bradd Kadlecik/Poughkeepsie/IBM
To:	Steve Hanson/UK/IBM
Cc:	DFDL-WG <dfdl-wg at ogf.org>, "dfdl-wg" <dfdl-wg-bounces at ogf.org>,
            Mike Beckerle <mbeckerle.dfdl at gmail.com>
Date:	09/07/2020 15:09
Subject:	Re: [EXTERNAL] Re: [DFDL-WG] DFDL pointer & offset proposal


I have updated the document proposal with proposed DFDL grammar changes:
[attachment "DFDL_Indirection_v3.docx" deleted by Bradd
Kadlecik/Poughkeepsie/IBM]


                                                                                   
 Regards,                                                                          
                                                                                   
 Bradd Kadlecik                                                                    
 z/TPF Development                                                                 
                                                                                   


                                                                                    
                                                                                    
                                                                                    
 Phone: 1-845-433-1573                                                2455 South Rd 
 E-mail: braddk at us.ibm.com                                         Poughkeepsie, NY 
                                                                         12601-5400 
                                                                      United States 
                                                                                    





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ogf.org/pipermail/dfdl-wg/attachments/20200723/a605f6f7/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <http://www.ogf.org/pipermail/dfdl-wg/attachments/20200723/a605f6f7/attachment-0001.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: DFDL_Indirection_v4.docx
Type: application/octet-stream
Size: 30293 bytes
Desc: not available
URL: <http://www.ogf.org/pipermail/dfdl-wg/attachments/20200723/a605f6f7/attachment-0001.obj>


More information about the dfdl-wg mailing list