чување c4b85bf29e974482a5fc8c75e515b8a024954930
родитељ 768865e8737ab748be50c3f5d9845f0a738a25a7
Аутор: Страхиња Радић <sr@strahinja.org>
Датум: Tue, 20 Jan 2026 09:28:45 +0100
bool.y: Finish simulate
Diffstat:
| M | bool.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);
+ }
}