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

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -