home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 01 / pattern / bp3.pro < prev    next >
Encoding:
Text File  |  1987-06-05  |  1.4 KB  |  57 lines

  1. /*********************************************
  2.      Programm BP3: DOS-Pfade und -Namen
  3. **********************************************/  
  4.  
  5. include "KIT.PRO" 
  6.  
  7. predicates
  8.   main
  9.   pattern(symbol, patternlist)
  10.   matchloop(string, patternlist, stringlist)
  11.   filter(string, integer)
  12.   repeat
  13.  
  14. goal
  15.   main.
  16.  
  17. clauses
  18.   pattern(dosname, [any(["\92",""]), span(Alfa),
  19.      any([".",""]), span([""| Alfa]), rtab(0)]) :-
  20.      literal(alfanums, Alfa).
  21.   pattern(drive_0, [any(["A:","a:","B:","b:","C:","c:",""]), 
  22.      any(["\92",""]), rtab(0)]).
  23.  
  24.   main :-
  25.     makewindow(1,7,7,"DOS DATEI- & PFADNAMEN",0,0,25,80),     
  26.     pattern(dosname, NamePat),
  27.     pattern(drive_0, DrivePat), 
  28.     repeat,
  29.     clearwindow,
  30.     write("Pfadname = "), nl,
  31.     readln(Input),
  32.     trim(Input, Path),
  33.     match(Path, DrivePat, [Drive, Root, Rest]),
  34.     matchloop(Rest, NamePat, NameList),
  35.     nl, write("= ", Drive, Root, NameList), nl,
  36.     readchar(_),
  37.     fail.
  38.     
  39.   matchloop("", _, []):-!.
  40.   matchloop(String, Pattern, [Name| List]) :-
  41.     match(String, Pattern, [_, A, B, C, Rest]), 
  42.     !,
  43.     concat(A, B, A1), concat(A1, C, Name),
  44.     filter(A, 8), filter(C, 3),
  45.     matchloop(Rest, Pattern, List).
  46.     
  47.   filter(X, Maxlen) :- 
  48.     str_len(X, L),
  49.     L <= Maxlen, !.
  50.   filter(_, _) :- !,
  51.     nl, write("illegale Namensform"), nl,
  52.     readchar(_), fail.
  53.  
  54.   repeat.
  55.   repeat:- repeat.
  56. /************** Ende BP3 **********************/
  57.