Download | Plain Text | Line Numbers
/**
* @module imgsynth2
* @author Guenther Neuwirth (0626638), Manuel Mausz (0728348)
* @brief imgsynth2 reads a scriptfile given as commandline option
* and executes all known function inside.
* On error (e.g. unknown function) the program will terminate
* @date 17.04.2009
* @par Exercise
* 2
*/
#include <iostream>
#include <boost/program_options.hpp>
#include "cscriptparser.h"
using namespace std;
namespace po = boost::program_options;
/**
* @func main
* @brief program entry point
* @param argc standard parameter of main
* @param argv standard parameter of main
* @return 0 on success, not 0 otherwise
* @globalvars none
* @exception none
* @conditions none
*
* setup commandline options, parse them and pass scriptfile to scriptparser
* instance. On error print error message to stderr.
* Unknown commandline options will print a usage message.
*/
int main(int argc, char* argv[])
{
string me(argv[0]);
/* define commandline options */
po::options_description desc("Allowed options");
desc.add_options()
("help,h", "this help message")
("input,i", po::value<string>(), "input scriptfile");
/* parse commandline options */
po::variables_map vm;
try
{
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
}
catch(po::error& ex)
{
cerr << "Error: " << ex.what() << endl;
}
/* print usage upon request or missing params */
if (vm.count("help") || !vm.count("input"))
{
cout << "Usage: " << me << " -i <scriptfile>" << endl;
cout << desc << endl;
return 0;
}
CScriptparser parser(vm["input"].as<string>());
try
{
parser.parse();
}
catch(CScriptparser::ParserError& ex)
{
cerr << me << ": Error while processing scriptfile: " << ex.what() << endl;
if (!ex.getLine().empty())
cerr << "Scriptline: '" << ex.getLine() << "'" << endl;
return 1;
}
catch(exception& ex)
{
cerr << me << ": Unexpected exception: " << ex.what() << endl;
return 1;
}
return 0;
}
/* vim: set et sw=2 ts=2: */