BNFC currently generates position information (BNFC'Position) for the parsed tokens, but it would also be great if the range information (begin position, end position) was also provided. This would help identify which part of the AST the cursor is currently at (useful for language servers in particular).
In other words, I am suggesting that instead of the current definition:
-- | Start position (line, column) of something.
type BNFC'Position = C.Maybe (C.Int, C.Int)
we instead (or in addition) have
-- | Start and end positions ((start line, start column), (end line, end column)) of something.
type BNFC'PositionRange = C.Maybe ((C.Int, C.Int), (C.Int, C.Int))
BNFC currently generates position information (
BNFC'Position
) for the parsed tokens, but it would also be great if the range information (begin position, end position) was also provided. This would help identify which part of the AST the cursor is currently at (useful for language servers in particular).In other words, I am suggesting that instead of the current definition:
we instead (or in addition) have