(deffacts dane ; dane nie beda potrzebne - wszystko wczytamy z pliku ;-) ) (defrule otwieraj ; brak warunku uaktywni zaraz po (reset) => (close we) ; otwieranie otwartego powoduje bledy, wiec lepiej zamknac przed otwarciem ;-) (open "dane.txt" we "r") ; ten plik musi istniec przed uruchomieniem (close wy) ; otwieranie otwartego powoduje bledy, wiec lepiej zamknac przed otwarciem ;-) (open "wynik.txt" wy "w") ; ten plik zostanie utworzony przez program (assert (faza odczytu)) ) (defrule czytaj ?i<-(faza odczytu) => (retract ?i) (assert (dana (read we))) ) (defrule koniec-pliku ?i<-(dana ?x) (test (eq ?x EOF)) => (retract ?i) (assert (faza zamykania)) ) (defrule przetwarzaj1 ?i<-(dana ?x) (test (numberp ?x)) (test (> ?x 100)) => (retract ?i) (printout wy "Za wysoka wartosc!!!" crlf) (assert (faza odczytu)) ) (defrule przetwarzaj2 ?i<-(dana ?x) (test (numberp ?x)) (test (<= ?x 100)) => (retract ?i) (printout wy "Wartosc w normie!!!" crlf) (assert (faza odczytu)) ) (defrule zamykaj ?i<-(faza zamykania) => (retract ?i) (close we) (close wy) )