}
public static LinkedListTree parseRegexpLiteral(LinkedListToken startMarker, AS3Lexer lexer, CharStream cs, LinkedListTokenStream stream) throws RecognitionException {
String tail = cs.substring(cs.index(), cs.size()-1);
int initialTailLength = tail.length();
RegexSimpleParser parser;
try {
parser = regexpParserOn(new StringReader(tail), stream);
} catch (IOException e) {
// TODO: better exception type?
throw new RuntimeException(e);
}
LinkedListTree ast = AS3FragmentParser.tree(parser.regexpLiteral());
tail = parser.getInputTail();
// skip over the regexp in the original, underlying CharStream
cs.seek(cs.index() + (initialTailLength - tail.length()));
LinkedListTokenSource source = (LinkedListTokenSource)stream.getTokenSource();
stream.setTokenSource(source); // cause any remembered RegexpSimple state to be dropped
stream.scrub(1); // erase the subsequent token that the RegexpSimple parser got from this stream