cvs commit: jakarta-oro/src/java/org/apache/oro/text/regex Perl5Compiler.java

[email protected]
Newsgroups gmane.comp.jakarta.oro.devel
Message-ID <[email protected]>
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.