fix error handling for second argument of number_codes and

number_chars/2


git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@626 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2002-10-08 05:00:36 +00:00
parent 1fe8842094
commit 98d9c42c42
3 changed files with 25 additions and 18 deletions

View File

@ -831,6 +831,18 @@ p_atom_split(void)
return(unify_constant(ARG3,to1) && unify_constant(ARG4,to2));
}
static Term
gen_syntax_error(char *s)
{
Term ts[6], ti[2];
ti[0] = ARG1;
ti[1] = ARG2;
ts[0] = MkApplTerm(MkFunctor(LookupAtom(s),2),2,ti);
ts[1] = ts[4] = ts[5] = MkIntTerm(0);
ts[2] = MkAtomTerm(LookupAtom("number syntax"));
ts[3] = TermNil;
return(MkApplTerm(MkFunctor(LookupAtom("syntax_error"),6),6,ts));
}
static Int
p_number_chars(void)
@ -893,10 +905,7 @@ p_number_chars(void)
Error(INSTANTIATION_ERROR, t1, "number_chars/2");
return(FALSE);
}
if (t == TermNil) {
return (FALSE);
}
if (!IsPairTerm(t)) {
if (!IsPairTerm(t) && t != TermNil) {
Error(TYPE_ERROR_LIST, t, "number_chars/2");
return(FALSE);
}
@ -959,7 +968,7 @@ p_number_chars(void)
}
*s++ = '\0';
if ((NewT = get_num(String)) == TermNil) {
Error(SYNTAX_ERROR, Deref(ARG2), "number_chars/2", String);
Error(SYNTAX_ERROR, gen_syntax_error("number_chars"), "while scanning %s", String);
return (FALSE);
}
return (unify(ARG1, NewT));
@ -1013,9 +1022,6 @@ p_number_atom(void)
Error(INSTANTIATION_ERROR, t, "number_chars/2");
return(FALSE);
}
if (t == TermNil) {
return (FALSE);
}
if (!IsAtomTerm(t)) {
Error(TYPE_ERROR_LIST, t, "number_atom/2");
return(FALSE);
@ -1071,10 +1077,7 @@ p_number_codes(void)
if (IsVarTerm(t)) {
Error(INSTANTIATION_ERROR, t, "number_codes/2");
}
if (t == TermNil) {
return (FALSE);
}
if (!IsPairTerm(t)) {
if (!IsPairTerm(t) && t != TermNil) {
Error(TYPE_ERROR_LIST, t, "number_codes/2");
return(FALSE);
}
@ -1107,7 +1110,7 @@ p_number_codes(void)
}
*s++ = '\0';
if ((NewT = get_num(String)) == TermNil) {
Error(SYNTAX_ERROR, Deref(ARG2), "number_chars/2", String);
Error(SYNTAX_ERROR, gen_syntax_error("number_codes"), "while scanning %s", String);
return (FALSE);
}
return (unify(ARG1, NewT));

View File

@ -112,10 +112,11 @@ low_level_trace(yap_low_level_port port, PredEntry *pred, CELL *args)
/* extern int gc_calls; */
vsc_count++;
/* if (vsc_count < 123808900) return; */
/* if (vsc_count == 59) {
/* if (vsc_count < 24200) return; */
/* if (vsc_count == 24340) {
printf("Here I go\n");
} */
}
*/
/* if (vsc_count > 500000) exit(0); */
/* if (gc_calls < 1) return;*/
#if defined(__GNUC__)

View File

@ -160,6 +160,7 @@ print_message(Level, Mss) :-
'$beautify_hidden_goal'('$yes_no',_,_,_,_,[]) :- !.
'$beautify_hidden_goal'('$do_yes_no',_,_,_,_,[]) :- !.
'$beautify_hidden_goal'('$query',_,_,_,_,[]) :- !.
'$beautify_hidden_goal'('$enter_top_level',_,_,_,_,[]) :- !.
% The user should never know these exist.
'$beautify_hidden_goal'('$csult',_,prolog,ClNo,Gs,NGs) :- !,
'$preprocess_stack'(Gs, NGs).
@ -293,7 +294,7 @@ print_message(Level, Mss) :-
'$format'(user_error,"[ DOMAIN ERROR- ~w: number ~w not newline ]~n",
[Where,N]).
'$output_error_message'(domain_error(not_zero,N), Where) :-
'$format'(user_error,"[ DOMAIN ERROR- ~w: number ~w not zero ]~n",
'$format'(user_error,"[ DOMAIN ERROR- ~w: ~w is not allowed in the domain ]~n",
[Where,N]).
'$output_error_message'(domain_error(operator_priority,N), Where) :-
'$format'(user_error,"[ DOMAIN ERROR- ~w: ~w invalid operator priority ]~n",
@ -439,6 +440,8 @@ print_message(Level, Mss) :-
'$output_error_message'(representation_error(max_arity), Where) :-
'$format'(user_error,"[ REPRESENTATION ERROR- ~w: number too big ]~n",
[Where]).
'$output_error_message'(syntax_error(G,0,Msg,[],0,0), Where) :- !,
'$format'(user_error,"[ SYNTAX ERROR in ~w: ~a ]~n",[G,Msg]).
'$output_error_message'(syntax_error(_,Position,_,Term,Pos,Start), Where) :-
'$format'(user_error,"[ ~w ",[Where]),
'$dump_syntax_error_line'(Start,Position),