diff options
Diffstat (limited to 'microbe/main.cpp')
-rw-r--r-- | microbe/main.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/microbe/main.cpp b/microbe/main.cpp new file mode 100644 index 0000000..1325159 --- /dev/null +++ b/microbe/main.cpp @@ -0,0 +1,80 @@ +/*************************************************************************** + * Copyright (C) 2004-2005 by Daniel Clarke * + * Copyright (C) 2005 by David Saxton * + * [email protected] * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "microbe.h" +#include "pic14.h" + +#include <kaboutdata.h> +#include <kcmdlineargs.h> +#include <klocale.h> +#include <qfile.h> + +#include <iostream> +#include <fstream> +using namespace std; + +static const char description[] = + I18N_NOOP("The Microbe Compiler"); + +static const char version[] = "0.3"; + +static KCmdLineOptions options[] = +{ + { "show-source", I18N_NOOP( "Show source code lines in assembly output"),0}, + { "nooptimize", I18N_NOOP( "Do not attempt optimization of generated instructions."),0}, + { "+[Input URL]", I18N_NOOP( "Input filename" ),0}, + { "+[Output URL]", I18N_NOOP( "Output filename" ),0}, + KCmdLineLastOption +}; + +int main(int argc, char **argv) +{ + KAboutData about("microbe", I18N_NOOP("Microbe"), version, description, + KAboutData::License_GPL, "(C) 2004-2005, The KTechlab developers", 0, "http://ktechlab.org", "[email protected]" ); + about.addAuthor( "Daniel Clarke", 0, "[email protected]" ); + about.addAuthor( "David Saxton", 0, "[email protected]" ); + KCmdLineArgs::init(argc, argv, &about); + KCmdLineArgs::addCmdLineOptions( options ); + + KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); + + if(args->count() == 2 ) + { + Microbe mb; + QString s = mb.compile( args->arg(0), args->isSet("show-source"), args->isSet("optimize")); + QString errorReport = mb.errorReport(); + + if ( !errorReport.isEmpty() ) + { + cerr << mb.errorReport(); + return 1; // If there was an error, don't write the output to file. + } + + else + { + ofstream out(args->arg(1)); + out << s; + return 0; + } + } + else args->usage(); +} + |