Glen Whitney
c516ed6d7f
All checks were successful
continuous-integration/drone/push Build is passing
By using list wrap properly.
21 lines
742 B
Plaintext
21 lines
742 B
Plaintext
module desugar
|
|
imports libstrategolib signatures/-
|
|
|
|
rules
|
|
/* ISequence() and Prior() are just noise for more expressions in sequence,
|
|
put in to get the layout rules right. So we remove them and collapse
|
|
all occurrence of them into one big Sequence() call on a list.
|
|
|
|
This is slightly tricky because there might not be any Sequence() call
|
|
at the top level, but yet an ISequence(). So we do it in two passes,
|
|
first converting ISequence()s to Sequence()s, and then collapsing
|
|
Sequence()s.
|
|
*/
|
|
deISe: ISequence(Prior(l),x) -> Sequence(<conc>(l, [x]))
|
|
|
|
seqFlatten: Sequence(l) -> Sequence(<mapconcat(?Sequence(<id>) <+ ![<id>])>l)
|
|
|
|
strategies
|
|
|
|
desugar-fostr = bottomup(try(deISe <+ seqFlatten))
|
|
|