}
if (state->link)
{
- need(o, ind, state->depth, readCh, setMarker);
+ need(o, ind, state->depth, readCh, setMarker && bUseYYMarker);
}
else
{
- if (setMarker)
+ if (setMarker && bUseYYMarker)
{
o << indent(ind) << "YYMARKER = YYCURSOR;\n";
}
if (state->link)
{
- o << indent(ind) << "YYMARKER = ++YYCURSOR;\n";
+ if (bUseYYMarker)
+ {
+ o << indent(ind) << "YYMARKER = ++YYCURSOR;\n";
+ }
need(o, ind, state->depth, readCh, false);
}
else
{
- o << indent(ind) << "yych = *(YYMARKER = ++YYCURSOR);\n";
+ if (bUseYYMarker)
+ {
+ o << indent(ind) << "yych = *(YYMARKER = ++YYCURSOR);\n";
+ }
+ else
+ {
+ o << indent(ind) << "yych = *++YYCURSOR;\n";
+ }
readCh = false;
}
}
if (first)
{
first = false;
+ bUseYYMarker = true;
o << indent(ind) << "YYCURSOR = YYMARKER;\n";
if (bUsedYYAccept && cases > 1)
{
extern bool bUseStateNext;
extern bool bWroteGetState;
extern bool bUseYYFill;
+extern bool bUseYYMarker;
extern uint asc2ebc[256];
extern uint ebc2asc[256];
bool bUseStartLabel= false;
bool bUseStateNext = false;
bool bUseYYFill = true;
+bool bUseYYMarker = false;
std::string startLabelName;
uint maxFill = 1;