int off = ps->start_location_.defined_str0_ - sf->to_str0();
-
scm_seek (port, scm_long2num (off), scm_long2num (SEEK_SET));
SCM from = scm_ftell (port);
{
Parse_start* ps = (Parse_start*) data;
- ps->start_location_.error (_("GUILE signaled an error for the expression begining here"));
+ ps->start_location_.error (_("GUILE signaled an error for the expression beginning here"));
if (scm_ilength (args) > 2)
scm_display_error_message (gh_cadr (args), gh_caddr(args), scm_current_error_port());
*/
ps->nchars = 1;
- return SCM_EOL;
+ return SCM_UNDEFINED;
}
/*
&catch_protected_parse_body,
(void*)ps,
&parse_handler, (void*)ps);
-
}
+bool parse_protect_global = true;
+/*
+ Try parsing. If failure, then return SCM_UNDEFINED.
+ */
SCM
ly_parse_scm (char const* s, int *n, Input i)
{
+
Parse_start ps ;
ps.str = s;
ps.start_location_ = i;
- SCM ans = protected_ly_parse_scm (&ps);
+ SCM ans = parse_protect_global ? protected_ly_parse_scm (&ps)
+ : internal_ly_parse_scm (&ps);
*n = ps.nchars;
+
return ans;
}