Re: Parsing '\x00' -- appears to be the only thing preventing parsing binary data
Chris verBurg <[email protected]> Tue, 30 Mar 2021 13:15:26 -0700
| Newsgroups | gmane.comp.parsers.bison.general |
|---|---|
| Message-ID | <[email protected]> |
I don’t know how you’ve set up your flex/bison interface, but I’m guessing from your quoting that you have flex return each character as a token? Can you special-case 0 to not have the token value 0? That is, flex does this:
\x00 { return ZERO; }
And then in your grammar:
%token ZERO
and use ZERO instead of ‘\x00’?
(Note: typed this on a phone..not 100% sure the syntax is right.)
-Chris
> On Mar 30, 2021, at 12:37 PM, Stephen Taylor via Users list for the GNU Bison parser generator <[email protected]> wrote:
>
> I am trying to parse binary files and obviously need to write rules that include the 8-bit value 0x00 — flex appears to allow me to obtain an 8-bit scanner using the -8 option. I seem to be able to use ‘\x01’ to ‘\xFF’ for individual terminal symbols in Bison rules. Unfortunately, ‘\x00’ is used to denote end of input. Looking at the output tables, there appears to be no real reason to do this (other than convenience) and I am wondering if anyone has a workaround?
> Thanks !
> Steve
>
>
>
>