inf[0] = '\0';
n = 0;
arg = 1; while (argc > arg) {
if (strcmp(argv[arg], "-is") == 0) {
arg++;
if (arg >= argc)
badusage();
n = atoi(argv[arg]);
} else if (strcmp(argv[arg], "-ip") == 0) {
arg++;
if (arg >= argc)
badusage();
if (strcmp(argv[arg], "d") == 0)
ip_store = DENSE; else if (argv[arg][0] == 's')
ip_store = SPARSE; else
badusage();
} else if (strcmp(argv[arg], "-silent") == 0)
kbm_print_level = 0; else if (strcmp(argv[arg], "-v") == 0)
kbm_print_level = 2; else if (strcmp(argv[arg], "-vv") == 0)
kbm_print_level = 3; else {
if (argv[arg][0] == '-')
badusage();
if (strcmp(inf, ""))
badusage();
strcpy(inf, argv[arg]);
}
arg++;
}
if (stringlen(inf) == 0)
rfile = stdin; else if ((rfile = fopen(inf, "r")) == 0) {
fprintf(stderr, "Cannot open file %s.\n", inf);
exit(1);
}
fsa_read(rfile, &testfsa, ip_store, 0, 0, TRUE, fsaname);
if (stringlen(inf))
fclose(rfile);
if (n > testfsa.states->size) {
fprintf(stderr, "Error: specified initial state is too large.\n");
exit(1);
}
if (n > 0 && testfsa.num_initial > 0) {
testfsa.initial[1] = n; /* This may destroy various properties of the automata */
testfsa.flags[MINIMIZED] = FALSE;
testfsa.flags[BFS] = FALSE;
testfsa.flags[ACCESSIBLE] = FALSE;
testfsa.flags[TRIM] = FALSE;
}
ct = fsa_count(&testfsa);
if (ct == -1)
exit(1);
if (ct == -2)
printf("#The language accepted is infinite.\n"); else
printf("#The language accepted has size %d.\n", ct);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.