BNFC / bnfc

BNF Converter
http://bnfc.digitalgrammars.com/
578 stars 163 forks source link

Store tokens' position range instead of just start position #461

Open aabounegm opened 9 months ago

aabounegm commented 9 months ago

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))