private void TokenLexicalActions(Token matchedToken)
{
switch(jjmatchedKind)
{
case 5:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
if (!inComment)
lparen++;
/*
* If in REFERENCE and we have seen the dot, then move
* to REFMOD2 -> Modifier()
*/
if (curLexState == REFMODIFIER)
SwitchTo(REFMOD2);
break;
case 6:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
RPARENHandler();
break;
case 7:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
/*
* need to simply switch back to REFERENCE, not drop down the stack
* because we can (infinitely) chain, ala
* $foo.bar().blargh().woogie().doogie()
*/
SwitchTo(REFERENCE);
break;
case 9:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
if (! inComment)
{
inDirective = true;
if (debugPrint)
Console.Out.Write("#set : going to {0}", DIRECTIVE);
StateStackPush();
inSet = true;
SwitchTo(DIRECTIVE);
}
break;
case 19:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
inComment = false;
StateStackPop();
break;
case 20:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
inComment = false;
StateStackPop();
break;
case 21:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
inComment = false;
StateStackPop();
break;
case 24:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
/*
* - if we are in DIRECTIVE and haven't seen ( yet, then also drop out.
* don't forget to account for the beloved yet wierd #set
* - finally, if we are in REFMOD2 (remember : $foo.bar( ) then " is ok!
*/
if (curLexState == DIRECTIVE && !inSet && lparen == 0)
StateStackPop();
break;
case 27:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
if (debugPrint)
Console.Out.WriteLine(" NEWLINE :");
StateStackPop();
if (inSet)
inSet = false;
if (inDirective)
inDirective = false;
break;
case 43:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
inDirective = false;
StateStackPop();
break;
case 44:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
SwitchTo(DIRECTIVE);
break;
case 45:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
SwitchTo(DIRECTIVE);
break;
case 46:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
inDirective = false;
StateStackPop();
break;
case 47:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
matchedToken.Kind = EOF;
break;
case 49:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
/*
* check to see if we are in set
* ex. #set $foo = $foo + 3
* because we want to handle the \n after
*/
if (lparen == 0 && !inSet && curLexState != REFMOD2)
{
StateStackPop();
}
break;
case 57:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
/*
* push the alpha char back into the stream so the following identifier
* is complete
*/
input_stream.Backup(1);
/*
* and munge the <DOT> so we just get a . when we have normal text that
* looks like a ref.ident
*/
matchedToken.Image = ".";
if (debugPrint)
Console.Out.Write("DOT : switching to {0}", REFMODIFIER);
SwitchTo(REFMODIFIER);
break;
case 59:
if (image == null)
image = new StringBuilder(new String(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1))));
else
image.Append(input_stream.GetSuffix(jjimageLen + (jjmatchedPos + 1)));
StateStackPop();
break;
default:
break;
}
}