From 0b8578f7a6d3e261b80b612fe93592633d2ddff9 Mon Sep 17 00:00:00 2001 From: ilor <kailoran@gmail.com> Date: Thu, 9 Dec 2010 11:11:35 +0100 Subject: [PATCH] add -f - featur to wcclparser to parse a mulitline query from stdin --- wcclparser/main.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/wcclparser/main.cpp b/wcclparser/main.cpp index 41fd12a..250a9c6 100644 --- a/wcclparser/main.cpp +++ b/wcclparser/main.cpp @@ -185,7 +185,7 @@ int main(int argc, char** argv) ("position,p", value(&position), "Position in the sentence to use, 'all' iterates through the sentence\n") ("query-file,f", value(&query_load), - "Run query from file (disables interactive mode)\n") + "Run query from file (disables interohaiactive mode) (- is stdin)\n") ("query,Q", value(&query), "Query to run (disables interactive mode)\n") ("quiet,q", value(&quiet)->zero_tokens(), @@ -237,15 +237,19 @@ int main(int argc, char** argv) process_line(query, parser, sc, position == "all", dump_variables); return 0; } else if (!query_load.empty()) { - std::ifstream qf(query_load.c_str()); - if (qf.good()) { - std::stringstream ss; - ss << qf.rdbuf(); - process_line(ss.str(), parser, sc, position == "all", dump_variables); - return 0; + std::stringstream ss; + if (query_load == "-") { + ss << std::cin.rdbuf(); } else { - throw Wccl::FileNotFound(sentence_load, "", "Query file"); + std::ifstream qf(query_load.c_str()); + if (qf.good()) { + ss << qf.rdbuf(); + } else { + throw Wccl::FileNotFound(sentence_load, "", "Query file"); + } } + process_line(ss.str(), parser, sc, position == "all", dump_variables); + return 0; } boost::function<bool (const std::string&)> f; f = boost::bind(&process_line, _1, boost::ref(parser), boost::ref(sc), -- GitLab