That appears to give me an error in lex: %option noyywrap %% \x00 { return ZERO; } .|\n { return *yytext; } %%
— Error: flex -8 gmr.l gcc -c lex.yy.c gmr.l: In function ‘yylex’: gmr.l:2:10: error: ‘ZERO’ undeclared (first use in this function); did you mean ‘EIO’? \x00 { return ZERO; } ^~~~ EIO gmr.l:2:10: note: each undeclared identifier is reported only once for each function it appears in Makefile:13: recipe for target 'lex.yy.o' failed make: *** [lex.yy.o] Error 1 Bison likes it. Tried quoting the \x00 but thats not right it appears. > On Mar 30, 2021, at 16:15, Chris verBurg <cheetomons...@gmail.com> wrote: > > > 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 <help-bison@gnu.org> 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 >> >> >> >> >
smime.p7s
Description: S/MIME cryptographic signature