bool

Програм за тестирање логичких израза
git clone https://git.sr.ht/~strahinja/bool
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување c4b85bf29e974482a5fc8c75e515b8a024954930
родитељ 768865e8737ab748be50c3f5d9845f0a738a25a7
Аутор: Страхиња Радић <sr@strahinja.org>
Датум:   Tue, 20 Jan 2026 09:28:45 +0100

bool.y: Finish simulate

Diffstat:
Mbool.y | 32++++++++++++++++++++++----------
измењених датотека: 1, додавања: 22(+), брисања: 10(-)

diff --git a/bool.y b/bool.y @@ -310,11 +310,12 @@ simulate(const int index) { vals[index] = val; simulate(index+1); - /*if (!simulate(index+1)) - continue;*/ - for (ii = 0; ii < num_ids; ii++) - printf("%c\t", get_val(ii) ? 'T' : 'F'); - printf("= %c\n", evaluate(root) ? 'T' : 'F'); + if (index+1 == num_ids) + { + for (ii = 0; ii < num_ids; ii++) + printf("%c\t", get_val(ii) ? 'T' : 'F'); + printf("%c\n", evaluate(root) ? 'T' : 'F'); + } } return 1; } @@ -322,7 +323,7 @@ simulate(const int index) static void usage(void) { - puts("Usage: " PROGNAME " [-dhVv] [file]"); + puts("Usage: " PROGNAME " [-dhtVv] [file]"); } static void @@ -372,6 +373,8 @@ main(int argc, char** argv) { int ch; int showtree = 0; + int ididx; + int result; ids_size = IDS_DELTA; num_ids = 0; @@ -381,7 +384,7 @@ main(int argc, char** argv) vals[0] = 0; //yydebug = 1; - if ((ch = getopt(argc, argv, ":dhVv")) != -1) + if ((ch = getopt(argc, argv, ":dhtVv")) != -1) { switch (ch) { @@ -415,11 +418,20 @@ main(int argc, char** argv) exit(errno); } } - yyparse(); + result = yyparse(); if (yyin && yyin != stdin) fclose(yyin); - if (root && showtree) + if (!root || result) + exit(1); + + if (showtree) print_node(0, 0, root); - simulate(0); + else + { + for (ididx = 0; ididx < num_ids; ididx++) + printf("%s\t", get_id(ididx)); + puts("Result"); + simulate(0); + } }