Is there a place in the documentation where all the whitespace rules are explained? (I use '$' for both delimiters throughout.)
It seems like the expansion of
```
foo() ::= <<
A
>>
```
and
```
foo() ::= <<
A>>
```
are equivalent to
```
foo()::= <<A>>
```
So, it appears the rule is:
newlines are ignored immediately after '<<' and immediately before '>>' and immediately after $endif$ (or <endif> or whatever. YDMV.)
Are those the only places where newlines are treated specially (besides the obvious <% %>)?
```
foo() ::= <<
$if (true)$A
$else$B
$endif$C
>>
bar() ::= <<
$if (true)$A
$else$B
$endif$
>>
baz() ::= <<
$if (true)$A
$else$B
$endif$
C
>>
quux() ::= <<
$if (true)$A
$else$B
$endif$C>>
quuux() ::= <<$if (true)$A
$else$B
$endif$C
>>
quuuux() ::= <<
$if (true)$$\\$
A
$else$$\\$
B
$endif$C
>>
quuuuux() ::= <<
$if (true)$$\\$
A$\\$
$else$$\\$
B$\\$
$endif$C
>>
quuuuuux() ::= <<
$if (true)$$\\$
A$\\$
$else$$\\$
B$\\$
$endif$
C
>>
my_test() ::= <<
<!-- Test foo -->$foo()$<!-- EndTest -->
<!-- Test bar -->$bar()$<!-- EndTest -->
<!-- Test baz -->$baz()$<!-- EndTest -->
<!-- Test quux -->$quux()$<!-- EndTest -->
<!-- Test quuux -->$quuux()$<!-- EndTest -->
<!-- Test quuuux -->$quuuux()$<!-- EndTest -->
<!-- Test quuuuux -->$quuuuux()$<!-- EndTest -->
<!-- Test quuuuuux -->$quuuuux()$<!-- EndTest -->
>>
```
my_test expands to
```
<!-- Test foo -->A
C<!-- EndTest -->
<!-- Test bar -->A
<!-- EndTest -->
<!-- Test baz -->A
C<!-- EndTest -->
<!-- Test quux -->A
C<!-- EndTest -->
<!-- Test quuux -->A
C<!-- EndTest -->
<!-- Test quuuux -->A
C<!-- EndTest -->
<!-- Test quuuuux -->AC<!-- EndTest -->
<!-- Test quuuuuux -->AC<!-- EndTest -->
```