Bradd, Mike - as discussed on WG call please review my version of the grammar for next call.

The key issue is how to link the target of the indirection into the main grammar, as it is dis-contiguous.

Regards
 
Steve Hanson

IBM Hybrid Integration, Hursley, UK
Architect,
IBM DFDL
Co-Chair,
OGF DFDL Working Group
smh@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@ogf.org>, "dfdl-wg" <dfdl-wg-bounces@ogf.org>, Mike Beckerle <mbeckerle.dfdl@gmail.com>
Date:        23/07/2020 14:52
Subject:        Re: [EXTERNAL] Re: [DFDL-WG] DFDL pointer & offset proposal




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.



Regards,

Bradd Kadlecik
z/TPF Development


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






From:        Steve Hanson/UK/IBM
To:        Bradd Kadlecik/Poughkeepsie/IBM@IBMUS
Cc:        DFDL-WG <dfdl-wg@ogf.org>, "dfdl-wg" <dfdl-wg-bounces@ogf.org>, Mike Beckerle <mbeckerle.dfdl@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@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@ogf.org>, "dfdl-wg" <dfdl-wg-bounces@ogf.org>, Mike Beckerle <mbeckerle.dfdl@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
E-mail:
braddk@us.ibm.com
2455 South Rd
Poughkeepsie, NY 12601-5400
United States






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU