Grammar fix.
[bpt/guile.git] / libguile / regex-posix.c
index f52c723..40f7f33 100644 (file)
@@ -133,25 +133,63 @@ scm_regexp_error_msg (int regerrno, regex_t *rx)
   return SCM_CHARS (errmsg);
 }
 
-GUILE_PROC (scm_regexp_p, "regexp?", 1, 0, 0, 
+SCM_DEFINE (scm_regexp_p, "regexp?", 1, 0, 0, 
             (SCM x),
-"")
+"Return @code{#t} if @var{obj} is a compiled regular expression, or
+@code{#f} otherwise.")
 #define FUNC_NAME s_scm_regexp_p
 {
-  return SCM_BOOL(SCM_NIMP (x) && SCM_RGXP (x));
+  return SCM_BOOL(SCM_RGXP (x));
 }
 #undef FUNC_NAME
 
-GUILE_PROC (scm_make_regexp, "make-regexp", 1, 0, 1, 
+SCM_DEFINE (scm_make_regexp, "make-regexp", 1, 0, 1, 
             (SCM pat, SCM flags),
-"")
+"Compile the regular expression described by @var{str}, and return the
+compiled regexp structure.  If @var{str} does not describe a legal
+regular expression, @code{make-regexp} throws a
+@code{regular-expression-syntax} error.
+
+The @var{flag} arguments change the behavior of the compiled regexp.
+The following flags may be supplied:
+
+@table @code
+@item regexp/icase
+Consider uppercase and lowercase letters to be the same when matching.
+
+@item regexp/newline
+If a newline appears in the target string, then permit the @samp{^} and
+@samp{$} operators to match immediately after or immediately before the
+newline, respectively.  Also, the @samp{.} and @samp{[^...]} operators
+will never match a newline character.  The intent of this flag is to
+treat the target string as a buffer containing many lines of text, and
+the regular expression as a pattern that may match a single one of those
+lines.
+
+@item regexp/basic
+Compile a basic (``obsolete'') regexp instead of the extended
+(``modern'') regexps that are the default.  Basic regexps do not
+consider @samp{|}, @samp{+} or @samp{?} to be special characters, and
+require the @samp{@{...@}} and @samp{(...)} metacharacters to be
+backslash-escaped (@pxref{Backslash Escapes}).  There are several other
+differences between basic and extended regular expressions, but these
+are the most significant.
+
+@item regexp/extended
+Compile an extended regular expression rather than a basic regexp.  This
+is the default behavior; this flag will not usually be needed.  If a
+call to @code{make-regexp} includes both @code{regexp/basic} and
+@code{regexp/extended} flags, the one which comes last will override
+the earlier one.
+@end table
+")
 #define FUNC_NAME s_scm_make_regexp
 {
   SCM flag;
   regex_t *rx;
   int status, cflags;
 
-  SCM_VALIDATE_ROSTRING(1,pat);
+  SCM_VALIDATE_ROSTRING (1,pat);
   SCM_COERCE_SUBSTR (pat);
 
   /* Examine list of regexp flags.  If REG_BASIC is supplied, then
@@ -185,22 +223,25 @@ GUILE_PROC (scm_make_regexp, "make-regexp", 1, 0, 1,
 }
 #undef FUNC_NAME
 
-GUILE_PROC (scm_regexp_exec, "regexp-exec", 2, 2, 0, 
+SCM_DEFINE (scm_regexp_exec, "regexp-exec", 2, 2, 0, 
             (SCM rx, SCM str, SCM start, SCM flags),
-"")
+"Match the compiled regular expression @var{regexp} against @code{str}.
+If the optional integer @var{start} argument is provided, begin matching
+from that position in the string.  Return a match structure describing
+the results of the match, or @code{#f} if no match could be found.")
 #define FUNC_NAME s_scm_regexp_exec
 {
   int status, nmatches, offset;
   regmatch_t *matches;
   SCM mvec = SCM_BOOL_F;
 
-  SCM_VALIDATE_RGXP(1,rx);
-  SCM_VALIDATE_ROSTRING(2,str);
-  SCM_VALIDATE_INT_DEF_COPY(3,start,0,offset);
+  SCM_VALIDATE_RGXP (1,rx);
+  SCM_VALIDATE_ROSTRING (2,str);
+  SCM_VALIDATE_INUM_DEF_COPY (3,start,0,offset);
   SCM_ASSERT_RANGE (3,start,offset >= 0 && (unsigned) offset <= SCM_LENGTH (str));
   if (SCM_UNBNDP (flags))
     flags = SCM_INUM0;
-  SCM_VALIDATE_INT(4,flags);
+  SCM_VALIDATE_INUM (4,flags);
   SCM_COERCE_SUBSTR (str);
 
   /* re_nsub doesn't account for the `subexpression' representing the