1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#include <iostream>
#include "SimpleLexer.hpp"
#include "SimpleParser.hpp"
#include "SimpleParser2.hpp"
int main()
{
ANTLR_USING_NAMESPACE(std);
ANTLR_USING_NAMESPACE(antlr);
try
{
SimpleLexer lexer(cin);
/* Invoke first parser */
cout << "first parser" << endl;
SimpleParser parser(lexer);
parser.simple();
/* Now we need to get the inputState from the first parser
* this includes data about guessing and stuff like it.
* If we don't do this and create the second parser
* with just the lexer object we might (doh! will!) miss tokens
* read for lookahead tests.
*/
ParserSharedInputState inputstate(parser.getInputState());
/* When first parser runs out, invoke secnond parser */
cout << "second parser" << endl;
SimpleParser2 parser2(inputstate);
parser2.simple();
}
catch( ANTLRException& e )
{
cerr << "exception: " << e.getMessage() << endl;
return -1;
}
catch( exception& e )
{
cerr << "exception: " << e.what() << endl;
return -1;
}
return 0;
}
|