not loc->end, since loc->end might contain garbage and this leads
to undefined behavior on some platforms.
(id_loc, token_start): Use (IF_LINTed) initial values that do not
depend on *loc, so that the reader doesn't give the the false
impression that *loc is initialized.
(<INITIAL>"%%"): Do not bother setting code_start, since its value
does not survive the return.
int token_type IF_LINT (= 0);
/* Location of most recent identifier, when applicable. */
int token_type IF_LINT (= 0);
/* Location of most recent identifier, when applicable. */
- location id_loc IF_LINT (= *loc);
+ location id_loc IF_LINT (= empty_location);
- /* Where containing code started, when applicable.
- Once the second %% seen, we are looking for the epilogue. */
- boundary code_start = loc->end;
+ /* Where containing code started, when applicable. Its initial
+ value is relevant only when yylex is invoked in the SC_EPILOGUE
+ start condition. */
+ boundary code_start = scanner_cursor;
/* Where containing comment or string or character literal started,
when applicable. */
/* Where containing comment or string or character literal started,
when applicable. */
- boundary token_start IF_LINT (= loc->start);
+ boundary token_start IF_LINT (= scanner_cursor);
"%%" {
static int percent_percent_count;
if (++percent_percent_count == 2)
"%%" {
static int percent_percent_count;
if (++percent_percent_count == 2)
- {
- code_start = loc->start;
- BEGIN SC_EPILOGUE;
- }
return PERCENT_PERCENT;
}
return PERCENT_PERCENT;
}