summaryrefslogtreecommitdiff
path: root/examples/translator.cpp
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@cs.nyu.edu>2014-06-05 19:08:44 -0400
committerMorgan Deters <mdeters@cs.nyu.edu>2014-06-05 19:09:50 -0400
commite36f03f582423f5e9f17da86d79a58deebf6fce3 (patch)
treed9e6a4377c04992caa4d475df35b7e9ee864a01c /examples/translator.cpp
parentc2f576e0d425d028b6975914733432b36555cce6 (diff)
Add --default-dag-thresh to translator, build translator with other examples.
Diffstat (limited to 'examples/translator.cpp')
-rw-r--r--examples/translator.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/examples/translator.cpp b/examples/translator.cpp
index 67dce699d..b7e6f618a 100644
--- a/examples/translator.cpp
+++ b/examples/translator.cpp
@@ -19,6 +19,8 @@
#include <fstream>
#include <getopt.h>
#include <cstring>
+#include <cstdlib>
+#include <cerrno>
#include "util/language.h"
#include "expr/command.h"
#include "expr/expr.h"
@@ -34,12 +36,14 @@ enum {
INPUT_LANG = 'L',
OUTPUT_LANG = 'O',
OUTPUT_FILE = 'o',
- HELP = 'h'
+ HELP = 'h',
+ DEFAULT_DAG_THRESH,
};/* enum */
const struct option longopts[] = {
{ "output-lang", required_argument, NULL, OUTPUT_LANG },
{ "output-language", required_argument, NULL, OUTPUT_LANG },
+ { "default-dag-thresh", required_argument, NULL, DEFAULT_DAG_THRESH },
{ "lang", required_argument, NULL, INPUT_LANG },
{ "language", required_argument, NULL, INPUT_LANG },
{ "out", required_argument, NULL, OUTPUT_FILE },
@@ -52,6 +56,7 @@ static void showHelp() {
<< " --output-language | -O set output language (default smt2)" << endl
<< " --input-language | -L set input language (default auto)" << endl
<< " --out | -o set output file (- for stdout)" << endl
+ << " --default-dag-thresh=N set DAG threshold" << endl
<< " --help | -h this help" << endl
<< "Options and input filenames can be intermixed, and order is important." << endl
<< "For instance, \"-O smt2 x -O cvc4 y\" reads file x in smt2 format and"
@@ -115,6 +120,7 @@ int main(int argc, char* argv[]) {
InputLanguage fromLang = input::LANG_AUTO;
OutputLanguage toLang = output::LANG_SMTLIB_V2;
size_t files = 0;
+ int dag_thresh = 1;
try {
int c;
@@ -122,6 +128,7 @@ int main(int argc, char* argv[]) {
switch(c) {
case 1:
++files;
+ *out << Expr::dag(dag_thresh);
readFile(optarg, (!strcmp(optarg, "-") && fromLang == input::LANG_AUTO) ? input::LANG_CVC4 : fromLang, toLang, out);
break;
case INPUT_LANG:
@@ -150,6 +157,22 @@ int main(int argc, char* argv[]) {
out = &cout;
}
break;
+ case DEFAULT_DAG_THRESH: {
+ if(!isdigit(*optarg)) {
+ cerr << "error: --default-dag-thresh requires non-negative argument: `"
+ << optarg << "' invalid." << endl;
+ exit(1);
+ }
+ char* end;
+ unsigned long ul = strtoul(optarg, &end, 10);
+ if(errno != 0 || *end != '\0') {
+ cerr << "error: --default-dag-thresh argument malformed: `"
+ << optarg << "'." << endl;
+ exit(1);
+ }
+ dag_thresh = ul > INT_MAX ? INT_MAX : int(ul);
+ }
+ break;
case 'h':
showHelp();
exit(0);
@@ -164,6 +187,7 @@ int main(int argc, char* argv[]) {
}
if(files == 0) {
+ *out << Expr::dag(dag_thresh);
readFile("-", fromLang == input::LANG_AUTO ? input::LANG_CVC4 : fromLang, toLang, out);
exit(0);
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback