package parsing.C.Functions;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.tree.ParseTree;
import parsing.ANTLRParserDriver;
import parsing.TokenSubStream;
import antlr.C.FunctionLexer;
import antlr.C.FunctionParser;
public class ANTLRCFunctionParserDriver extends ANTLRParserDriver
{
public ANTLRCFunctionParserDriver()
{
super();
CFunctionParseTreeListener listener = new CFunctionParseTreeListener();
setListener(listener);
listener.setDriver(this);
}
@Override
public Lexer createLexer(ANTLRInputStream input)
{
return new FunctionLexer(input);
}
@Override
public ParseTree parseTokenStreamImpl(TokenSubStream tokens)
{
setAntlrParser(new FunctionParser(tokens));
FunctionParser thisParser = (FunctionParser) getAntlrParser();
ParseTree tree = null;
try
{
setSLLMode(getAntlrParser());
tree = thisParser.statements();
}
catch (RuntimeException ex)
{
if (isRecognitionException(ex))
{
tokens.reset();
setLLStarMode(getAntlrParser());
tree = thisParser.statements();
}
}
return tree;
}
}