dfs 2002/10/14 09:16:22
Modified: src/java/org/apache/oro/text/regex Perl5Compiler.java
Log:
Added support for negating modifiers. For example (?-i)foo. Note,
we still do not support Perl 5.005+ group-local modifiers like
(?imsx-imsx:pattern).
Revision Changes Path
1.14 +11 -5 jakarta-oro/src/java/org/apache/oro/text/regex/Perl5Compiler.java
Index: Perl5Compiler.java
===================================================================
RCS file: /home/cvs/jakarta-oro/src/java/org/apache/oro/text/regex/Perl5Compiler.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- Perl5Compiler.java 23 Oct 2001 06:42:20 -0000 1.13
+++ Perl5Compiler.java 14 Oct 2002 16:16:22 -0000 1.14
@@ -1524,11 +1524,12 @@
private int __parseExpression(boolean isParenthesized, int[] hintFlags)
throws MalformedPatternException {
char value, paren;
+ char[] modifierFlags, posFlags = { 0 }, negFlags = { 0 };
int nodeOffset = OpCode._NULL_OFFSET, parenthesisNum = 0, br, ender;
- int[] flags = { 0 };
- String modifiers = "iogmsx";
-
+ int[] flags = { 0 };;
+ String modifiers = "iogmsx-";
+ modifierFlags = posFlags;
// Initially we assume expression doesn't match null string.
hintFlags[0] = __NONNULL;
@@ -1557,9 +1558,14 @@
value = __input._getValue();
while(value != CharStringPointer._END_OF_STRING &&
modifiers.indexOf(value) != -1) {
- __setModifierFlag(__modifierFlags, value);
+ if(value == '-')
+ modifierFlags = negFlags;
+ __setModifierFlag(modifierFlags, value);
value = __input._increment();
}
+ __modifierFlags[0] |= posFlags[0];
+ __modifierFlags[0] &= ~negFlags[0];
+
if(value != ')')
throw new MalformedPatternException(
"Sequence (?" + value + "...) not recognized");
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.