Here is a link for those interested:
https://www.complang.tuwien.ac.at/ulrich/iso-prolog/dcgs/dcgsdraft-2021-08-16.pdf
This new draft has 2 problems. Just check back for example with
https://www.complang.tuwien.ac.at/ulrich/iso-prolog/dcgs/dcgsdin100401.pdf
To see that they couldn’t bake it even in this iteration:
Insufficient Specification
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn’t cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut is
allowed. The old draft did it much simpler, they simply stated:
Ebody((GREither; GROr), S0, S) ≡ Either; Or
where:
Ebody(GREither, S0, S) ≡ Either
Ebody(GROr, S0, S) ≡ Or
Semantic Shift
There is yet a new semantic shift in terminology. The first
semantic shift was when the push back was not anymore
called push back, but semi context.
The new semantic shift in this draft is that S0 is called semi
context. The new draft uses, which is utter nonsense:
More precisely, taking semicontext into account, phrase((A;B), S0,S), is true
iff ( phrase(A, S0,S) ; phrase(B, S0,S) ) is true.
One has only to check their own glossary to see that S0 is
not the semi-context:
3.22 semicontext: A terminal-sequence occurring optionally after the nonterminal of a grammar-rule-head, constraining parsing (respectively generation) by this grammar rule.
So the old draft used this terminology:
EType(T, Si, Si+1) the comprehensive and remaining
terminal-sequences Si and Si+1