/// As per mark() but with a call to tell the debugger we are doing this /// static ANTLR3_MARKER dbgMark (pANTLR3_INT_STREAM is) { pANTLR3_TOKEN_STREAM ts; ts = (pANTLR3_TOKEN_STREAM) is->super; is->lastMarker = is->index(is); ts->debugger->mark(ts->debugger, is->lastMarker); return is->lastMarker; }
/// As per ordinary consume but notifies the debugger about hidden /// tokens and so on. /// static void dbgConsume (pANTLR3_INT_STREAM is) { pANTLR3_TOKEN_STREAM ts; ANTLR3_MARKER a; ANTLR3_MARKER b; pANTLR3_COMMON_TOKEN t; ts = (pANTLR3_TOKEN_STREAM) is->super; if (ts->initialStreamState == ANTLR3_TRUE) { consumeInitialHiddenTokens(is); } a = is->index(is); // Where are we right now? t = ts->_LT(ts, 1); // Current token from stream consume(is); // Standard consumer b = is->index(is); // Where are we after consuming 1 on channel token? ts->debugger->consumeToken(ts->debugger, t); // Tell the debugger that we consumed the first token if (b>a+1) { // The standard consume caused the index to advance by more than 1, // which can only happen if it skipped some off-channel tokens. // we need to tell the debugger about those tokens. // ANTLR3_MARKER i; for (i = a+1; i<b; i++) { ts->debugger->consumeHiddenToken(ts->debugger, ts->get(ts, (ANTLR3_UINT32)i)); } } }
/// Debug only method to flag consumption of initial off-channel /// tokens in the input stream /// static void consumeInitialHiddenTokens(pANTLR3_INT_STREAM is) { ANTLR3_MARKER first; ANTLR3_INT32 i; pANTLR3_TOKEN_STREAM ts; ts = (pANTLR3_TOKEN_STREAM) is->super; first = is->index(is); for (i=0; i<first; i++) { ts->debugger->consumeHiddenToken(ts->debugger, ts->get(ts, i)); } ts->initialStreamState = ANTLR3_FALSE; }
static ANTLR3_MARKER mark (pANTLR3_INT_STREAM is) { is->lastMarker = is->index(is); return is->lastMarker; }