------------------------------------------------------------------------------
MC logo
Parser Demo
[^] Recursive Descent Parser
------------------------------------------------------------------------------
main.cpp
/*
 * This program parses its input according to the following expression grammar:
 *   Asst --> Id := Expr ;
 *   Expr --> Term | { [ + | - ] Term }*
 *   Term --> Fact | { [ * | / ] Fact }*
 *   Fact --> Id | Lit | ( Expr )
 *
 * The program reads standard input and attempts to parse it as an Asst.  It
 * then prints a representation of the input structure.  If you type the input,
 * make sure to issue an EOF (^D in unix, ^Z in windows shell) at the end.
 *
 * The parser itself (which encodes the rules) resides in parser.h/parser.cpp.
 */

#include <stdlib.h>
#include <iostream>
#include "parser.h"

using namespace std;

// Read and print.
main()
{
        Parser p(cin);

        try {
                p.parse();
        } catch(exception &e) {
                cout << "Parsing failed: " << e.what() << endl;
                exit(1);
        }
        p.print(cout);
}