DEBUG_DUMP_UNMATCHED(ctx, was_unmatched);
DEBUG_DUMP_TOKEN(ctx, &new->token);
- switch (new->token.type) {
- case TOKEN_STRING:
- if (!current) {
+ if (!current) {
+ switch (new->token.type) {
+ case TOKEN_STRING:
+ case TOKEN_RE:
+ case TOKEN_NOT:
+ case TOKEN_LBRACE:
root = current = new;
- break;
+ continue;
+
+ default:
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+ "Invalid expression \"%s\" in file %s",
+ expr, r->filename);
+ *was_error = 1;
+ return retval;
}
+ }
+ switch (new->token.type) {
+ case TOKEN_STRING:
switch (current->token.type) {
case TOKEN_STRING:
current->token.value =
break;
case TOKEN_RE:
- if (!current) {
- root = current = new;
- break;
- }
-
switch (current->token.type) {
case TOKEN_EQ:
case TOKEN_NE:
case TOKEN_AND:
case TOKEN_OR:
- if (!current) {
- ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
- "Invalid expression \"%s\" in file %s",
- expr, r->filename);
- *was_error = 1;
- return retval;
- }
/* Percolate upwards */
while (current) {
switch (current->token.type) {
break;
case TOKEN_NOT:
- if (!current) {
- root = current = new;
- break;
- }
-
switch (current->token.type) {
case TOKEN_STRING:
case TOKEN_RE:
case TOKEN_GT:
case TOKEN_LE:
case TOKEN_LT:
- if (!current) {
- ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
- "Invalid expression \"%s\" in file %s",
- expr, r->filename);
- *was_error = 1;
- return retval;
- }
/* Percolate upwards */
while (current) {
switch (current->token.type) {
break;
case TOKEN_LBRACE:
- if (!current) {
- root = current = new;
- break;
- }
-
switch (current->token.type) {
case TOKEN_STRING:
case TOKEN_RE: