4 Update: December 11, 1992
5 Info: simple upgrade example RICE 3.x application, see file rice3x.doc
9 /* standard include files */
17 /* include rice.c so it will always be compiled along with this file... */
22 /* application specific user i/o functions */
24 void ask(char *fact
, float *grade
)
27 printf("%s ? ", fact
);
30 if(sscanf(ans
, "%g", grade
) != 1)
32 sscanf(ans
, "%c", &c
);
33 if(c
== 'Y' || c
== 'y')
36 if(c
== 'N' || c
== 'n')
39 } while(*grade
!= -1.0 && (*grade
< 0.0 || 1.0 < *grade
));
42 void inform(char *fact
, float *grade
)
48 printf("! %g\n", *grade
);
51 void report(int type
, char *msg
, void *data
)
55 case 1: printf("ERROR: "); break;
56 case 2: printf("WARNING: "); break;
57 case 3: printf("MESSAGE: "); break;
61 if(data
) printf(" (%s)", (char *) data
);
66 /* get file name from user */
68 char *get_name(int command
, char *filename
)
72 case '1': printf("File to compile from: "); break;
73 case '2': printf("File to load from : "); break;
74 case '3': printf("File to save to : "); break;
75 case '4': printf("File to rebuild to : "); break;
78 scanf("%s", filename
);
83 /* in this example not really possible to have stack overflow... */
86 extern unsigned _stklen
= 10000U;
97 /* redirect i/o to user i/o functions (see above) */
100 RedirectInform(inform
);
101 RedirectReport(report
);
103 /* do loop while not exit command or error */
107 printf("\n1 : compile\n");
108 printf("2 : load\n");
109 printf("3 : save\n");
110 printf("4 : rebuild\n");
111 printf("5 : infer\n");
112 printf("6 : clear\n");
113 printf("7 : destroy\n\n");
114 printf("0 : exit\n");
120 case '1': CompileKB(get_name(command
, filename
)); break;
121 case '2': LoadKB(get_name(command
, filename
)); break;
122 case '3': SaveKB(get_name(command
, filename
)); break;
123 case '4': RebuildKB(get_name(command
, filename
)); break;
124 case '5': InferKB(); break;
125 case '6': ClearKB(); break;
126 case '7': DestroyKB(); break;