If source code has certain accented letters [ 'ê', 'ô'],  Gnu-Prolog (MinGW 
distribution, gcc 3.4.5) fails to compile once in every  five trials. It is 
interesting that the compiler sometimes works fine, but sometimes claims that 
it cannot  unify_atom(Ý); as one can see, this atom is not among the accented 
letters that I am trying to recognize.  Work around: One can keep trying; the 
compiler will accept the source code eventually; once compiled, the program 
works perfectly well. Another work-around is avoidance of characters (use codes 
instead).


% Culprit:
accents(['á', 'é', 'í','ú', 'â', 'ê', 'ô']).

%Error message:
/*
D:\nogui>gplc --no-top-level --min-size  tokenizer
.pl -o tokenizer
line 195: atom expected
    unify_atom(Ý),
               Ý^ here
Translation aborted
compilation failed
*/
accented(W) :- accents(As), run_member(W, As).

run_member([X|_], As) :- member(X, As), !.
run_member([_|Xs], As) :- run_member(Xs, As).

alpha('-') :- !.
alpha(X) :- X @>= 'a', X @=< 'z', !.
alpha(X) :- accents(As),  member(X, As), !.

check(X) :- alpha(X), !, write('Yes!'), nl.
check(X) :- write('No!'), nl.

isalphap :- 
        argument_counter(ACount), ACount=2,
        argument_value(1, Symbol),
        check(Symbol).
isalphap :- write('Usage: isalphap <char>'), nl.

:- initialization(isalphap).

_______________________________________________
Bug-prolog mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-prolog

Reply via email to