Commit f95d599c authored by Gerd Moellmann's avatar Gerd Moellmann
Browse files

Lost version containing non-greedy changes from Emacs.

parent 7c7b25db
...@@ -38,9 +38,12 @@ ...@@ -38,9 +38,12 @@
add or remove a bit, only one other definition need change. */ add or remove a bit, only one other definition need change. */
typedef unsigned reg_syntax_t; typedef unsigned reg_syntax_t;
/* If this bit is set, then even *?, +? and ?? match greedily. */
#define RE_ALL_GREEDY (1)
/* If this bit is not set, then \ inside a bracket expression is literal. /* If this bit is not set, then \ inside a bracket expression is literal.
If set, then such a \ quotes the following character. */ If set, then such a \ quotes the following character. */
#define RE_BACKSLASH_ESCAPE_IN_LISTS (1) #define RE_BACKSLASH_ESCAPE_IN_LISTS (RE_ALL_GREEDY << 1)
/* If this bit is not set, then + and ? are operators, and \+ and \? are /* If this bit is not set, then + and ? are operators, and \+ and \? are
literals. literals.
...@@ -127,13 +130,13 @@ typedef unsigned reg_syntax_t; ...@@ -127,13 +130,13 @@ typedef unsigned reg_syntax_t;
starting range point, the range is ignored. */ starting range point, the range is ignored. */
#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1) #define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
/* If this bit is set, then an unmatched ) is ordinary.
If not set, then an unmatched ) is invalid. */
#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
/* If this bit is set, succeed as soon as we match the whole pattern, /* If this bit is set, succeed as soon as we match the whole pattern,
without further backtracking. */ without further backtracking. */
#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1) #define RE_NO_POSIX_BACKTRACKING (RE_NO_EMPTY_RANGES << 1)
/* If this bit is set, then an unmatched ) is ordinary.
If not set, then an unmatched ) is invalid. */
#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_POSIX_BACKTRACKING << 1)
/* This global variable defines the particular regexp syntax to use (for /* This global variable defines the particular regexp syntax to use (for
some interfaces). When a regexp is compiled, the syntax used is some interfaces). When a regexp is compiled, the syntax used is
...@@ -158,7 +161,7 @@ extern Lisp_Object re_match_object; ...@@ -158,7 +161,7 @@ extern Lisp_Object re_match_object;
(RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \ (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
| RE_NO_BK_PARENS | RE_NO_BK_REFS \ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
| RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \ | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
| RE_UNMATCHED_RIGHT_PAREN_ORD) | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_ALL_GREEDY)
#define RE_SYNTAX_POSIX_AWK \ #define RE_SYNTAX_POSIX_AWK \
(RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS) (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
...@@ -166,13 +169,13 @@ extern Lisp_Object re_match_object; ...@@ -166,13 +169,13 @@ extern Lisp_Object re_match_object;
#define RE_SYNTAX_GREP \ #define RE_SYNTAX_GREP \
(RE_BK_PLUS_QM | RE_CHAR_CLASSES \ (RE_BK_PLUS_QM | RE_CHAR_CLASSES \
| RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \ | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
| RE_NEWLINE_ALT) | RE_NEWLINE_ALT | RE_ALL_GREEDY)
#define RE_SYNTAX_EGREP \ #define RE_SYNTAX_EGREP \
(RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \ (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \ | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
| RE_NEWLINE_ALT | RE_NO_BK_PARENS \ | RE_NEWLINE_ALT | RE_NO_BK_PARENS \
| RE_NO_BK_VBAR) | RE_NO_BK_VBAR | RE_ALL_GREEDY)
#define RE_SYNTAX_POSIX_EGREP \ #define RE_SYNTAX_POSIX_EGREP \
(RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES) (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
...@@ -185,7 +188,7 @@ extern Lisp_Object re_match_object; ...@@ -185,7 +188,7 @@ extern Lisp_Object re_match_object;
/* Syntax bits common to both basic and extended POSIX regex syntax. */ /* Syntax bits common to both basic and extended POSIX regex syntax. */
#define _RE_SYNTAX_POSIX_COMMON \ #define _RE_SYNTAX_POSIX_COMMON \
(RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \ (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
| RE_INTERVALS | RE_NO_EMPTY_RANGES) | RE_INTERVALS | RE_NO_EMPTY_RANGES | RE_ALL_GREEDY)
#define RE_SYNTAX_POSIX_BASIC \ #define RE_SYNTAX_POSIX_BASIC \
(_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM) (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment