Parse floating point numbers.

This commit is contained in:
Simon Forman 2019-08-13 11:24:28 -07:00
parent 4c78a31bd9
commit 3f19b2b210
2 changed files with 6 additions and 2 deletions

View File

@ -34,9 +34,14 @@ joy_term(C) --> symbol(C).
symbol(C) --> chars(Chars), !, { Chars \= "==", atom_codes(C, Chars) }.
num(N) --> signed_digits(Codes), !, end_num, { number_codes(N, Codes) }.
num(N) --> number_digits(Codes), { number_codes(N, Codes) }.
number_digits(Codes) --> signed_float_or_integer(Codes), !, end_num.
% TODO: floats, scientific notation.
signed_float_or_integer(Codes) --> signed_digits(J), ".", !, digits(I),
{ append(J, [0'.|I], Codes) }.
signed_digits([45|Codes]) --> "-", !, digits(Codes).
signed_digits( Codes ) --> digits(Codes).

View File

@ -123,7 +123,6 @@ combo(i, [P|S], S, Ei, Eo) :- append(P, Ei, Eo).
combo(dip, [P, X|S], S, Ei, Eo) :- append(P, [X|Ei], Eo).
combo(dipd, [P, X, Y|S], S, Ei, Eo) :- append(P, [Y, X|Ei], Eo).
combo(dupdip, [P, X|S], [X|S], Ei, Eo) :- append(P, [X|Ei], Eo).
combo(dupdip, [P, X|S], [X|S], Ei, Eo) :- append(P, [X|Ei], Eo).
combo(branch, [T, _, true|S], S, Ei, Eo) :- append(T, Ei, Eo).