[Haskell-cafe] Parsec line number off-by-one

Ben Gamari bgamari.foss at gmail.com
Wed Sep 21 05:32:34 CEST 2011


Recently I've been playing around with Parsec for a simple parsing
project. While I was able to quickly construct my grammar (simplified
version attached), getting it working has been a bit tricky. In
particular, I am now stuck trying to figure out why Parsec is
mis-reporting line numbers. Parsec seems convinced that line 12 of my
input (also attached) has a "%" character,

  $ runghc Test.hs
  Left "(unknown)" (line 12, column 1):
  unexpected "%"
  expecting space or atom name

while my file clearly disagrees,

  10  %FLAG ATOM_NAME                                                                 
  11  %FORMAT(20a4)                                                                   
  12  C1  H1  C2  H2  C3  H3  C4  H4  C5  C6  C7  C8  N1  C9  H9  C10 H10 C11 H11 C12 
  13  H12 C13 H13 C14 C15 N2  C16 C17 C29 H18 C19 H19 C20 H20 C21 H21 C22 H221H222H223
  ...
  18  %FLAG CHARGE
  19  %FORMAT(5E16.8)                                                                 

The task here is to identify the block of data lines (lines 12-17),
ending at the beginning of the next block (starting with "%"). It seems
likely that my problem stems from the fact that I use "try" to
accomplish this but this is as far as I can reason.

Any ideas what might cause this sort of off-by-one? Does anyone see a
better (i.e. working) way to formulate my grammar? Any and all help
would be greatly appreciated. Thanks.

Cheers,

- Ben


-------------- next part --------------
A non-text attachment was scrubbed...
Name: Test.hs
Type: text/x-haskell
Size: 2309 bytes
Desc: not available
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110920/9762a25a/attachment.hs>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.prmtop
Type: application/octet-stream
Size: 1479 bytes
Desc: not available
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110920/9762a25a/attachment.obj>


More information about the Haskell-Cafe mailing list