Files
bash/parse.y.regexp
T
2011-12-07 08:59:28 -05:00

25 lines
934 B
Plaintext

#ifdef COND_REGEXP
/* When parsing a regexp as a single word inside a conditional command,
we need to special-case characters special to both the shell and
regular expressions. Right now, that is only '(' and '|'. */ /*)*/
if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/
{
if (character == '|')
goto got_character;
push_delimiter (dstack, character);
ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0);
pop_delimiter (dstack);
if (ttok == &matched_pair_error)
return -1; /* Bail immediately. */
RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2,
token_buffer_size, TOKEN_DEFAULT_GROW_SIZE);
token[token_index++] = character;
strcpy (token + token_index, ttok);
token_index += ttoklen;
FREE (ttok);
dollar_present = all_digit_token = 0;
goto next_character;
}
#endif /* COND_REGEXP */