Minor cleanup of the parser.

This commit is contained in:
Simon Forman 2019-08-12 20:59:02 -07:00
parent 120610cd6b
commit e67ef3951c
1 changed files with 9 additions and 10 deletions

View File

@ -39,19 +39,14 @@ num(N) --> digits(Codes), !, { number_codes(N, Codes) }.
% Groups of characters.
chars([Ch|Rest]) --> char(Ch), chars(Rest).
chars([Ch]) --> char(Ch).
blanks --> blank, !, blanks.
blanks --> [].
digits([Ch|Rest]) --> digit(Ch), digits(Rest).
digits([Ch]) --> digit(Ch).
chars(Chars) --> one_or_more(char, Chars).
blanks --> blank, !, blanks | [].
digits(Digits) --> one_or_more(digit, Digits).
% Character types.
char(Ch) --> [Ch], { nonvar(Ch), Ch \== 0'[, Ch \== 0'], between(33, 126, Ch) }.
blank --> [Ch], { nonvar(Ch), Ch =:= 32 ; between(9, 13, Ch) }.
char(Ch) --> [Ch], { nonvar(Ch), Ch =\= 0'[, Ch =\= 0'], between(33, 126, Ch) }.
blank --> [Ch], { nonvar(Ch),(Ch =:= 32 ; between(9, 13, Ch)) }.
digit(Ch) --> [Ch], { nonvar(Ch), between(48, 57, Ch) }.
@ -64,6 +59,10 @@ line(10, []) :- !. % break on new-lines.
line(-1, [eof]) :- !. % break on EOF
line(X, [X|Line]) :- get_code(Y), !, line(Y, Line).
one_or_more(E, List) --> one_or_more_(List, E).
one_or_more_([Ch|Rest], P) --> call(P, Ch), one_or_more_(Rest, P).
one_or_more_([Ch], P) --> call(P, Ch).
/*