The parser is generated by Happy (http://www.haskell.org/happy).
- Ideally, ranges should be as precise as possible, to get messages that
- emphasize precisely the faulting term(s) upon error.
- However, interactive highlighting is only applied at the end of each
- mutual block, keywords are only highlighted once (see
Decl). So if the ranges of two declarations
- interleave, one must ensure that keyword ranges are not included in
- the intersection. (Otherwise they are uncolored by the interactive