diff --git a/README.md b/README.md
index 976e35a..9887c4f 100644
--- a/README.md
+++ b/README.md
@@ -29,28 +29,30 @@
 
 ### Operators
 
-| Name       | Comparison Type | Description                                |
-| ---------  | --------------- | --------------------------------           |
-| and        | NA              | Logical AND                                |
-| &&         | NA              | Logical AND                                |
-| or         | NA              | Logical OR                                 |
-|&#124;&#124;| NA              | Logical OR                                 |
-| ==         | String          | Equal operator for Strings                 |
-| <          | Number         | Less than operator for Numbers             |
-| <=         | Number         | Less than or equal operator for Numbers    |
-| >          | Number         | Greater than operator for Numbers          |
-| >=         | Number         | Greater than or equal operator for Numbers |
-| !=         | String          | Is not equal to for Strings                |
-| less than  | Number         | less than operator for Numbers             |
-| greater than| Number        | greater than operator for Numbers          |
-| is          | String         | Equal operator for Strings                 |
-| is not      | String         | Is not equal operator for Strings          |
-| like        | String - Regex  | Regex match against String                |
-| like not    | String - Regex  | Regex match against String                |
-| contains         | String[] &#124; String[] | String[] contains all of items |
-| contains not     | String[] | String[] does not contain all of the items |
-| contains any     | String[] | String[] contains at least one of items |
-| contains not any | String[] | String[] does not contain any of the items |
+| Name        | Comparison Type | Description                                |
+| ---------        | --------------- | --------------------------------           |
+| and              | NA              | Logical AND                                |
+| &&               | NA              | Logical AND                                |
+| or               | NA              | Logical OR                                 |
+|&#124;&#124;      | NA              | Logical OR                                 |
+| ==               | String          | Equal operator for Strings                 |
+| <                | Number          | Less than operator for Numbers             |
+| <=               | Number          | Less than or equal operator for Numbers    |
+| >                | Number          | Greater than operator for Numbers          |
+| >=               | Number          | Greater than or equal operator for Numbers |
+| !=               | String          | Is not equal to for Strings                |
+| ~=               | String - Regex  | Regex match against String                 |
+| less than        | Number          | less than operator for Numbers             |
+| greater than     | Number          | greater than operator for Numbers          |
+| is               | String          | Equal operator for Strings                 |
+| is not           | String          | Is not equal operator for Strings          |
+| like             | String - Regex  | Regex match against String                 |
+| is like          | String - Regex  | Regex match against String                 |
+| not like         | String - Regex  | Regex does not match String                |
+| contains         | String[]        | String[] contains all of items             |
+| contains not     | String[]        | String[] does not contain all of the items |
+| contains any     | String[]        | String[] contains at least one of items    |
+| contains not any | String[]        | String[] does not contain any of the items |
 ### Logical Operators
 The 'and' and 'or' operators are logical operators that string together conditions. 'And' operators take precedence. 'Or' operators evaluate from left to right
 
diff --git a/src/main/java/org/apache/sling/resource/filter/ResourceFilterException.java b/src/main/java/org/apache/sling/resource/filter/ResourceFilterException.java
index 5829f29..99db709 100644
--- a/src/main/java/org/apache/sling/resource/filter/ResourceFilterException.java
+++ b/src/main/java/org/apache/sling/resource/filter/ResourceFilterException.java
@@ -19,8 +19,8 @@
 package org.apache.sling.resource.filter;
 
 /**
- * Used to wrap internally generated Parser exceptions when a malformed scipt is
- * provided
+ * Used to wrap internally generated Parser exceptions when a malformed script
+ * is provided
  * 
  *
  */
diff --git a/src/main/java/org/apache/sling/resource/filter/impl/script/FilterParserConstants.java b/src/main/java/org/apache/sling/resource/filter/impl/script/FilterParserConstants.java
index 225d4d2..83a4ed0 100644
--- a/src/main/java/org/apache/sling/resource/filter/impl/script/FilterParserConstants.java
+++ b/src/main/java/org/apache/sling/resource/filter/impl/script/FilterParserConstants.java
@@ -142,7 +142,7 @@
     "\"contains not\"",
     "\"contains any\"",
     "\"contains not any\"",
-    "\"in\"",
+    "<IN>",
     "\"not in\"",
     "\"$\"",
     "<FUNCTION_NAME>",
diff --git a/src/main/java/org/apache/sling/resource/filter/impl/script/FilterParserTokenManager.java b/src/main/java/org/apache/sling/resource/filter/impl/script/FilterParserTokenManager.java
index f2060f4..5965356 100644
--- a/src/main/java/org/apache/sling/resource/filter/impl/script/FilterParserTokenManager.java
+++ b/src/main/java/org/apache/sling/resource/filter/impl/script/FilterParserTokenManager.java
@@ -22,11 +22,6 @@
             jjmatchedKind = 32;
             return -1;
          }
-         if ((active0 & 0x10000000000L) != 0L)
-         {
-            jjmatchedKind = 43;
-            return 168;
-         }
          if ((active0 & 0xf000000000L) != 0L)
          {
             jjmatchedKind = 43;
@@ -61,8 +56,6 @@
             jjmatchedPos = 1;
             return 57;
          }
-         if ((active0 & 0x10000000000L) != 0L)
-            return 60;
          if ((active0 & 0x80000000L) != 0L)
          {
             if (jjmatchedPos == 0)
@@ -192,8 +185,6 @@
          return jjMoveStringLiteralDfa1_0(0x80000000L);
       case 99:
          return jjMoveStringLiteralDfa1_0(0xf000000000L);
-      case 105:
-         return jjMoveStringLiteralDfa1_0(0x10000000000L);
       case 110:
          return jjMoveStringLiteralDfa1_0(0x20000800000L);
       default :
@@ -215,10 +206,6 @@
          else if ((active0 & 0x200000000L) != 0L)
             return jjStopAtPos(1, 33);
          break;
-      case 110:
-         if ((active0 & 0x10000000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 40, 60);
-         break;
       case 111:
          return jjMoveStringLiteralDfa2_0(active0, 0x2f000000000L);
       case 117:
@@ -533,7 +520,7 @@
 private int jjMoveNfa_0(int startState, int curPos)
 {
    int startsAt = 0;
-   jjnewStateCnt = 193;
+   jjnewStateCnt = 202;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
@@ -556,6 +543,23 @@
                      kind = 43;
                   jjCheckNAdd(60);
                   break;
+               case 56:
+                  if ((0x8c00846affffffffL & l) != 0L)
+                  {
+                     if (kind > 43)
+                        kind = 43;
+                     jjCheckNAdd(60);
+                  }
+                  else if (curChar == 32)
+                     jjstateSet[jjnewStateCnt++] = 55;
+                  break;
+               case 58:
+                  if ((0x8c00846affffffffL & l) == 0L)
+                     break;
+                  if (kind > 43)
+                     kind = 43;
+                  jjCheckNAdd(60);
+                  break;
                case 0:
                   if ((0x8c00846affffffffL & l) != 0L)
                   {
@@ -594,30 +598,6 @@
                   else if (curChar == 38)
                      jjstateSet[jjnewStateCnt++] = 15;
                   break;
-               case 168:
-                  if ((0x8c00846affffffffL & l) == 0L)
-                     break;
-                  if (kind > 43)
-                     kind = 43;
-                  jjCheckNAdd(60);
-                  break;
-               case 56:
-                  if ((0x8c00846affffffffL & l) != 0L)
-                  {
-                     if (kind > 43)
-                        kind = 43;
-                     jjCheckNAdd(60);
-                  }
-                  else if (curChar == 32)
-                     jjstateSet[jjnewStateCnt++] = 55;
-                  break;
-               case 58:
-                  if ((0x8c00846affffffffL & l) == 0L)
-                     break;
-                  if (kind > 43)
-                     kind = 43;
-                  jjCheckNAdd(60);
-                  break;
                case 1:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
@@ -1129,14 +1109,18 @@
                   if (curChar == 32)
                      jjstateSet[jjnewStateCnt++] = 171;
                   break;
-               case 179:
+               case 178:
                   if (curChar == 32)
-                     jjstateSet[jjnewStateCnt++] = 178;
+                     jjstateSet[jjnewStateCnt++] = 177;
                   break;
                case 189:
                   if (curChar == 32)
                      jjstateSet[jjnewStateCnt++] = 188;
                   break;
+               case 198:
+                  if (curChar == 32)
+                     jjstateSet[jjnewStateCnt++] = 197;
+                  break;
                default : break;
             }
          } while(i != startsAt);
@@ -1158,53 +1142,6 @@
                   if (curChar == 116)
                      jjstateSet[jjnewStateCnt++] = 56;
                   break;
-               case 0:
-                  if ((0xffffffffd7ffffffL & l) != 0L)
-                  {
-                     if (kind > 43)
-                        kind = 43;
-                     jjCheckNAdd(60);
-                  }
-                  else if (curChar == 91)
-                     jjCheckNAddStates(29, 31);
-                  if ((0x2000000020L & l) != 0L)
-                     jjAddStates(68, 69);
-                  else if (curChar == 108)
-                     jjAddStates(70, 72);
-                  else if (curChar == 105)
-                     jjAddStates(73, 74);
-                  else if (curChar == 110)
-                     jjstateSet[jjnewStateCnt++] = 58;
-                  else if (curChar == 126)
-                     jjstateSet[jjnewStateCnt++] = 50;
-                  else if (curChar == 103)
-                     jjstateSet[jjnewStateCnt++] = 47;
-                  else if (curChar == 102)
-                     jjstateSet[jjnewStateCnt++] = 30;
-                  else if (curChar == 116)
-                     jjstateSet[jjnewStateCnt++] = 26;
-                  else if (curChar == 111)
-                     jjstateSet[jjnewStateCnt++] = 22;
-                  else if (curChar == 124)
-                     jjstateSet[jjnewStateCnt++] = 20;
-                  else if (curChar == 97)
-                     jjstateSet[jjnewStateCnt++] = 18;
-                  break;
-               case 168:
-                  if ((0xffffffffd7ffffffL & l) != 0L)
-                  {
-                     if (kind > 43)
-                        kind = 43;
-                     jjCheckNAdd(60);
-                  }
-                  if (curChar == 115)
-                     jjstateSet[jjnewStateCnt++] = 172;
-                  if (curChar == 115)
-                  {
-                     if (kind > 28)
-                        kind = 28;
-                  }
-                  break;
                case 56:
                case 60:
                   if ((0xffffffffd7ffffffL & l) == 0L)
@@ -1223,6 +1160,38 @@
                   if (curChar == 111)
                      jjstateSet[jjnewStateCnt++] = 57;
                   break;
+               case 0:
+                  if ((0xffffffffd7ffffffL & l) != 0L)
+                  {
+                     if (kind > 43)
+                        kind = 43;
+                     jjCheckNAdd(60);
+                  }
+                  else if (curChar == 91)
+                     jjCheckNAddStates(29, 31);
+                  if ((0x2000000020L & l) != 0L)
+                     jjAddStates(68, 69);
+                  else if (curChar == 108)
+                     jjAddStates(70, 72);
+                  else if (curChar == 105)
+                     jjCheckNAddStates(73, 77);
+                  else if (curChar == 110)
+                     jjstateSet[jjnewStateCnt++] = 58;
+                  else if (curChar == 126)
+                     jjstateSet[jjnewStateCnt++] = 50;
+                  else if (curChar == 103)
+                     jjstateSet[jjnewStateCnt++] = 47;
+                  else if (curChar == 102)
+                     jjstateSet[jjnewStateCnt++] = 30;
+                  else if (curChar == 116)
+                     jjstateSet[jjnewStateCnt++] = 26;
+                  else if (curChar == 111)
+                     jjstateSet[jjnewStateCnt++] = 22;
+                  else if (curChar == 124)
+                     jjstateSet[jjnewStateCnt++] = 20;
+                  else if (curChar == 97)
+                     jjstateSet[jjnewStateCnt++] = 18;
+                  break;
                case 2:
                   if ((0x2000000020L & l) != 0L)
                      jjAddStates(68, 69);
@@ -1406,15 +1375,19 @@
                   break;
                case 155:
                   if ((0x2000000020L & l) != 0L)
-                     jjAddStates(75, 76);
+                     jjAddStates(78, 79);
                   break;
                case 161:
                   if ((0x2000000020L & l) != 0L)
-                     jjAddStates(77, 78);
+                     jjAddStates(80, 81);
                   break;
                case 167:
                   if (curChar == 105)
-                     jjAddStates(73, 74);
+                     jjCheckNAddStates(73, 77);
+                  break;
+               case 168:
+                  if (curChar == 115 && kind > 28)
+                     kind = 28;
                   break;
                case 169:
                   if (curChar == 116 && kind > 29)
@@ -1433,73 +1406,102 @@
                      jjstateSet[jjnewStateCnt++] = 172;
                   break;
                case 174:
-                  if (curChar == 108)
-                     jjAddStates(70, 72);
-                  break;
-               case 175:
-                  if (curChar == 110 && kind > 32)
-                     kind = 32;
-                  break;
-               case 176:
-                  if (curChar == 97)
-                     jjstateSet[jjnewStateCnt++] = 175;
-                  break;
-               case 177:
-                  if (curChar == 104)
-                     jjstateSet[jjnewStateCnt++] = 176;
-                  break;
-               case 178:
-                  if (curChar == 116)
-                     jjstateSet[jjnewStateCnt++] = 177;
-                  break;
-               case 180:
-                  if (curChar == 115)
-                     jjstateSet[jjnewStateCnt++] = 179;
-                  break;
-               case 181:
-                  if (curChar == 115)
-                     jjstateSet[jjnewStateCnt++] = 180;
-                  break;
-               case 182:
-                  if (curChar == 101)
-                     jjstateSet[jjnewStateCnt++] = 181;
-                  break;
-               case 183:
                   if (curChar == 101 && kind > 34)
                      kind = 34;
                   break;
-               case 184:
+               case 175:
+               case 193:
                   if (curChar == 107)
-                     jjstateSet[jjnewStateCnt++] = 183;
+                     jjCheckNAdd(174);
+                  break;
+               case 176:
+                  if (curChar == 105)
+                     jjstateSet[jjnewStateCnt++] = 175;
+                  break;
+               case 177:
+                  if (curChar == 108)
+                     jjstateSet[jjnewStateCnt++] = 176;
+                  break;
+               case 179:
+                  if (curChar == 115)
+                     jjstateSet[jjnewStateCnt++] = 178;
+                  break;
+               case 180:
+                  if (curChar == 110 && kind > 40)
+                     kind = 40;
+                  break;
+               case 181:
+                  if (curChar == 105)
+                     jjCheckNAdd(180);
+                  break;
+               case 182:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 181;
+                  break;
+               case 183:
+                  if (curChar == 115)
+                     jjstateSet[jjnewStateCnt++] = 182;
+                  break;
+               case 184:
+                  if (curChar == 108)
+                     jjAddStates(70, 72);
                   break;
                case 185:
-                  if (curChar == 105)
-                     jjstateSet[jjnewStateCnt++] = 184;
+                  if (curChar == 110 && kind > 32)
+                     kind = 32;
                   break;
                case 186:
-                  if (curChar == 116 && kind > 35)
-                     kind = 35;
+                  if (curChar == 97)
+                     jjstateSet[jjnewStateCnt++] = 185;
                   break;
                case 187:
-                  if (curChar == 111)
+                  if (curChar == 104)
                      jjstateSet[jjnewStateCnt++] = 186;
                   break;
                case 188:
-                  if (curChar == 110)
+                  if (curChar == 116)
                      jjstateSet[jjnewStateCnt++] = 187;
                   break;
                case 190:
-                  if (curChar == 101)
+                  if (curChar == 115)
                      jjstateSet[jjnewStateCnt++] = 189;
                   break;
                case 191:
-                  if (curChar == 107)
+                  if (curChar == 115)
                      jjstateSet[jjnewStateCnt++] = 190;
                   break;
                case 192:
-                  if (curChar == 105)
+                  if (curChar == 101)
                      jjstateSet[jjnewStateCnt++] = 191;
                   break;
+               case 194:
+                  if (curChar == 105)
+                     jjstateSet[jjnewStateCnt++] = 193;
+                  break;
+               case 195:
+                  if (curChar == 116 && kind > 35)
+                     kind = 35;
+                  break;
+               case 196:
+                  if (curChar == 111)
+                     jjstateSet[jjnewStateCnt++] = 195;
+                  break;
+               case 197:
+                  if (curChar == 110)
+                     jjstateSet[jjnewStateCnt++] = 196;
+                  break;
+               case 199:
+                  if (curChar == 101)
+                     jjstateSet[jjnewStateCnt++] = 198;
+                  break;
+               case 200:
+                  if (curChar == 107)
+                     jjstateSet[jjnewStateCnt++] = 199;
+                  break;
+               case 201:
+                  if (curChar == 105)
+                     jjstateSet[jjnewStateCnt++] = 200;
+                  break;
                default : break;
             }
          } while(i != startsAt);
@@ -1523,20 +1525,6 @@
                      kind = 43;
                   jjCheckNAdd(60);
                   break;
-               case 0:
-                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     break;
-                  if (kind > 43)
-                     kind = 43;
-                  jjCheckNAdd(60);
-                  break;
-               case 168:
-                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     break;
-                  if (kind > 43)
-                     kind = 43;
-                  jjCheckNAdd(60);
-                  break;
                case 56:
                   if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
                      break;
@@ -1551,6 +1539,13 @@
                      kind = 43;
                   jjCheckNAdd(60);
                   break;
+               case 0:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 43)
+                     kind = 43;
+                  jjCheckNAdd(60);
+                  break;
                case 7:
                case 8:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
@@ -1577,7 +1572,7 @@
          kind = 0x7fffffff;
       }
       ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 193 - (jjnewStateCnt = startsAt)))
+      if ((i = jjnewStateCnt) == (startsAt = 202 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { return curPos; }
@@ -1588,7 +1583,8 @@
    103, 133, 150, 151, 154, 158, 164, 11, 13, 14, 6, 8, 9, 62, 64, 65, 
    72, 73, 74, 100, 70, 72, 100, 101, 68, 70, 101, 102, 108, 109, 110, 130, 
    106, 108, 130, 131, 104, 106, 131, 132, 138, 139, 140, 147, 136, 138, 147, 148, 
-   134, 136, 148, 149, 3, 4, 182, 185, 192, 168, 173, 156, 157, 162, 163, 
+   134, 136, 148, 149, 3, 4, 192, 194, 201, 168, 173, 179, 183, 180, 156, 157, 
+   162, 163, 
 };
 private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
 {
@@ -1609,7 +1605,7 @@
 null, null, null, null, null, null, null, null, null, null, "\156\165\154\154", 
 "\50", "\51", "\54", null, null, null, null, "\76\75", null, "\74\75", null, null, 
 "\143\157\156\164\141\151\156\163", "\143\157\156\164\141\151\156\163\40\156\157\164", 
-"\143\157\156\164\141\151\156\163\40\141\156\171", "\143\157\156\164\141\151\156\163\40\156\157\164\40\141\156\171", "\151\156", 
+"\143\157\156\164\141\151\156\163\40\141\156\171", "\143\157\156\164\141\151\156\163\40\156\157\164\40\141\156\171", null, 
 "\156\157\164\40\151\156", "\44", null, null, null, };
 
 /** Lexer state names. */
@@ -1623,8 +1619,8 @@
    0x6L, 
 };
 protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[193];
-private final int[] jjstateSet = new int[386];
+private final int[] jjrounds = new int[202];
+private final int[] jjstateSet = new int[404];
 private final StringBuilder jjimage = new StringBuilder();
 private StringBuilder image = jjimage;
 private int jjimageLen;
@@ -1655,7 +1651,7 @@
 {
    int i;
    jjround = 0x80000001;
-   for (i = 193; i-- > 0;)
+   for (i = 202; i-- > 0;)
       jjrounds[i] = 0x80000000;
 }
 
diff --git a/src/main/javacc/resourceFilter.jj b/src/main/javacc/resourceFilter.jj
index c1c1cd7..3570900 100644
--- a/src/main/javacc/resourceFilter.jj
+++ b/src/main/javacc/resourceFilter.jj
@@ -96,13 +96,13 @@
 | < GREATER_THAN_OR_EQUAL : ">=" >
 | < LESS_THAN : "<" | "less than" >
 | < LESS_THAN_OR_EQUAL : "<=" >
-| < LIKE : "~=" | "like" >
-| < LIKE_NOT : "like not" | "not like" >
+| < LIKE : "~=" | "like" | "is like" >
+| < LIKE_NOT : "not like" >
 | < CONTAINS : "contains" >
 | < CONTAINS_NOT : "contains not" >
 | < CONTAINS_ANY : "contains any" >
 | < CONTAINS_NOT_ANY : "contains not any" >
-| < IN : "in" >
+| < IN : "is in" | "in" >
 | < NOT_IN : "not in" >
 | < DYNAMIC_ARG : "$" >
 | < FUNCTION_NAME : (~[ "\"", "'", "$", "(", ")", ",", "=", "<", ">", " ", "[", "]","+","-",".","0"-"9" ])+ >
