prolog - How do I specify a DCG for a valid number? -
i'm trying specify dcg valid number used so:
value(number) --> valid_number(number). basically checking if specified value numeric, (it variable, it's necessary check).
i don't know how build valid_number dcg/predicate though.
right have:
valid_number('1') --> ['1']. valid_number('2') --> ['2']. ... which works terrible. trying like:
valid_number(number) --> { integer(number), number = number }. which both doesn't work , admittedly looks pretty gross (i'm sorry, new prolog , trying learn best practices).
how go building dcg/predicate validates whether or not it's number?
i give code sample describes natural numbers:
:- set_prolog_flag(double_quotes, chars). natural_number(n) --> number_(cs), { number_codes(n, cs) }. number_([d|ds]) --> digit(d), number_(ds). number_([d]) --> digit(d). digit(d) --> [d], { char_type(d, digit) }. example usage:
?- phrase(natural_number(n), "123"). n = 123 ; false. i leave generalizing other numbers exercise.
Comments
Post a Comment