diff options
author | Jed Barber <jjbarber@y7mail.com> | 2014-03-22 01:02:47 +1100 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2014-03-22 01:02:47 +1100 |
commit | f59e957d741814459a0dca2993a4d3d4a2325688 (patch) | |
tree | 31ce30650735fa50de0aba9268dfbdf797bfe3cc /read.prolog | |
parent | 410fc38f935b552a58af2e716d2fe814eee432c9 (diff) |
Reorganising code
Diffstat (limited to 'read.prolog')
-rw-r--r-- | read.prolog | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/read.prolog b/read.prolog deleted file mode 100644 index 63d3ae7..0000000 --- a/read.prolog +++ /dev/null @@ -1,56 +0,0 @@ - -:- module(read, [prompt/1, readList/1]). - - -% functions for obtaining a line of input text and parsing -% it into a list of words - -% prompt provides the user with a '>' prompt as well -% readList merely obtains and parses the input - - -prompt(L) :- - write('> '), - readList(L). - - -readList(L) :- - readLine(X), - wordList(L,X,[]), !. - - -readLine(L) :- - get_char(C), - readLine_tail(C,L). - - -readLine_tail('\n',[]) :- !. -readLine_tail(C,[C|X]) :- - get_char(C2), - readLine_tail(C2,X). - - -wordList(X) --> whitespace, wordList(X). -wordList([X]) --> word(X). -wordList([X]) --> word(X), whitespace. -wordList([X|Y]) --> word(X), whitespace, wordList(Y). - - -word(W) --> charList(X), {atom_chars(W,X)}. - - -charList([X|Xs]) --> char(X), charList(Xs). -charList([X]) --> char(X). - - -whitespace --> whsp, whitespace. -whitespace --> whsp. - - -whsp --> oneOf(_,[' ', '\r', '\n', '\t']). -char(X) --> noneOf(X,[' ', '\r', '\n', '\t']). - - -oneOf(X,L) --> [X], {member(X,L)}. -noneOf(X,L) --> [X], {not(member(X,L))}. - |