cosell@BBN-UNIX@sri-unix (06/03/82)
From: Bernie Cosell <cosell@BBN-UNIX>
Date: 13 May 1982 11:42:29 EDT (Thursday)
I am trying to write a library routine that will parse a string and I'd like to
use YACC to express the grammar for the acceptable strings. I am having a
problem that perhaps some wizard out there might be able to help me with:
I want to match the longest possible string. That is, I want to snake along
the supplied string accepting as much as I can and have my parsing routine
not only set upa suitable structure with the results of the parse, but
have as its value a pointer to the first character in the string that didn't
match. Here's is the best shot I've been able to come up with so far, and I'm
not even sure it works:
when I get an error, have the `error' rule save the current text pointer
and set to restart the parse at the beginning of the string, and then
with a yyerrok and yyclearin, go and reparse. my yylex routine will
always be checking the current text pointer against the saved text
pointer. When the lex pointer reaches the saved pointer, yylex stops
parsing and simply returns 0's.
any help or advice would be appreciated.
Thanks
/Bernie