home *** CD-ROM | disk | FTP | other *** search
- /*********************************************
- Programm BP3: DOS-Pfade und -Namen
- **********************************************/
-
- include "KIT.PRO"
-
- predicates
- main
- pattern(symbol, patternlist)
- matchloop(string, patternlist, stringlist)
- filter(string, integer)
- repeat
-
- goal
- main.
-
- clauses
- pattern(dosname, [any(["\92",""]), span(Alfa),
- any([".",""]), span([""| Alfa]), rtab(0)]) :-
- literal(alfanums, Alfa).
- pattern(drive_0, [any(["A:","a:","B:","b:","C:","c:",""]),
- any(["\92",""]), rtab(0)]).
-
- main :-
- makewindow(1,7,7,"DOS DATEI- & PFADNAMEN",0,0,25,80),
- pattern(dosname, NamePat),
- pattern(drive_0, DrivePat),
- repeat,
- clearwindow,
- write("Pfadname = "), nl,
- readln(Input),
- trim(Input, Path),
- match(Path, DrivePat, [Drive, Root, Rest]),
- matchloop(Rest, NamePat, NameList),
- nl, write("= ", Drive, Root, NameList), nl,
- readchar(_),
- fail.
-
- matchloop("", _, []):-!.
- matchloop(String, Pattern, [Name| List]) :-
- match(String, Pattern, [_, A, B, C, Rest]),
- !,
- concat(A, B, A1), concat(A1, C, Name),
- filter(A, 8), filter(C, 3),
- matchloop(Rest, Pattern, List).
-
- filter(X, Maxlen) :-
- str_len(X, L),
- L <= Maxlen, !.
- filter(_, _) :- !,
- nl, write("illegale Namensform"), nl,
- readchar(_), fail.
-
- repeat.
- repeat:- repeat.
- /************** Ende BP3 **********************/
-