Github user mbeckerle commented on a diff in the pull request:
https://github.com/apache/incubator-daffodil/pull/12#discussion_r154124026
--- Diff:
daffodil-core/src/main/scala/edu/illinois/ncsa/daffodil/grammar/TermGrammarMixin.scala
---
@@ -62,7 +61,7 @@ trait TermGrammarMixin
protected lazy val hasEncoding = optionEncodingRaw.isDefined
- protected lazy val termIOPropertiesChange = prod("ioPropertiesChange") {
bitOrderChange ~ encodingChange }
+ protected lazy val termIOPropertiesChange = prod("ioPropertiesChange") {
bitOrderChange }
--- End diff --
Yes. Unfortunately one cannot get rid of bitOrderChange parser unless we
build into the main combinators a check for bitOrderChange every time bitOrder
is accessed. That's for parsing. Because a parser proceeds in-linear order
through the data this works because the notion of "prior bit order" is well
defined.
For unparsing, bitOrderChange is trickier due to suspensions and jumping
back to handle them. (There's still a bug in that logic. DAFFODIL-1843) But
that's why I left in bitOrderChange for now.
---