From 6a7ac84173ff608cf4ad5ccd806bec7da97fb033 Mon Sep 17 00:00:00 2001
From: ilor <kailoran@gmail.com>
Date: Thu, 25 Nov 2010 15:44:02 +0100
Subject: [PATCH] add options processing and tagset loading to wcclparser

---
 wcclparser/main.cpp | 37 +++++++++++++++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/wcclparser/main.cpp b/wcclparser/main.cpp
index 37c910c..4ba829e 100644
--- a/wcclparser/main.cpp
+++ b/wcclparser/main.cpp
@@ -2,8 +2,10 @@
 
 #include <libwccl/values/strset.h>
 #include <libwccl/parser/Parser.h>
+#include <libcorpus2/tagsetmanager.h>
 
 #include <boost/bind.hpp>
+#include <boost/program_options.hpp>
 
 #include <antlr/MismatchedTokenException.hpp>
 // ----------------------------------------------------------------------------
@@ -120,9 +122,40 @@ bool process_line(const std::string& line, Parser& parser)
 	return false;
 }
 
-int main()
+int main(int argc, char** argv)
 {
-	Corpus2::Tagset tagset;
+	std::string tagset_load = "kipi";
+	bool quiet = false;
+	using boost::program_options::value;
+
+	boost::program_options::options_description desc("Allowed options");
+	desc.add_options()
+			("tagset,t", value(&tagset_load),
+			 "Tagset to use\n")
+			("quiet,q", value(&quiet)->zero_tokens(),
+			 "Suppress messages\n")
+			("help,h", "Show help")
+			;
+	boost::program_options::variables_map vm;
+	boost::program_options::positional_options_description p;
+	p.add("tagset", -1);
+
+	try {
+		boost::program_options::store(
+			boost::program_options::command_line_parser(argc, argv)
+			.options(desc).positional(p).run(), vm);
+	} catch (boost::program_options::error& e) {
+		std::cerr << e.what() << "\n";
+		return 2;
+	}
+	boost::program_options::notify(vm);
+
+	if (vm.count("help")) {
+		std::cout << desc << "\n";
+		return 1;
+	}
+
+	const Corpus2::Tagset& tagset = Corpus2::get_named_tagset(tagset_load);
 	Parser parser(tagset);
 
 	if (system("clear")) {
-- 
GitLab