View | Details | Raw Unified | Return to bug 198552
Collapse All | Expand All

(-)b.c (+10 lines)
Lines 68-73 Link Here
68
68
69
static	int setcnt;
69
static	int setcnt;
70
static	int poscnt;
70
static	int poscnt;
71
static  int subexprlvl; /* incremented in parenthesized subexpression */
71
72
72
char	*patbeg;
73
char	*patbeg;
73
int	patlen;
74
int	patlen;
Lines 657-669 Link Here
657
	case '$':
658
	case '$':
658
		rtok = relex();
659
		rtok = relex();
659
		return (unary(op2(CHAR, NIL, NIL)));
660
		return (unary(op2(CHAR, NIL, NIL)));
661
	case ')':
662
		np = op2(CHAR, NIL, itonp(')'));
663
		rtok = relex();
664
		return (unary(np));
660
	case '(':
665
	case '(':
661
		rtok = relex();
666
		rtok = relex();
662
		if (rtok == ')') {	/* special pleading for () */
667
		if (rtok == ')') {	/* special pleading for () */
663
			rtok = relex();
668
			rtok = relex();
664
			return unary(op2(CCL, NIL, (Node *) tostring("")));
669
			return unary(op2(CCL, NIL, (Node *) tostring("")));
665
		}
670
		}
671
		subexprlvl++;
666
		np = regexp();
672
		np = regexp();
673
		subexprlvl--;
667
		if (rtok == ')') {
674
		if (rtok == ')') {
668
			rtok = relex();
675
			rtok = relex();
669
			return (unary(np));
676
			return (unary(np));
Lines 681-686 Link Here
681
	switch (rtok) {
688
	switch (rtok) {
682
	case CHAR: case DOT: case ALL: case EMPTYRE: case CCL: case NCCL: case '$': case '(':
689
	case CHAR: case DOT: case ALL: case EMPTYRE: case CCL: case NCCL: case '$': case '(':
683
		return (concat(op2(CAT, np, primary())));
690
		return (concat(op2(CAT, np, primary())));
691
	case ')':
692
		if (!subexprlvl)
693
			return (concat(op2(CAT, np, primary())));
684
	}
694
	}
685
	return (np);
695
	return (np);
686
}
696
}

Return to bug 198552