|
|
1.1 ! root 1: #include "re.h" ! 2: #include "lre.h" ! 3: #include "hdr.h" ! 4: ! 5: static int egparen(Expr *e); ! 6: ! 7: int ! 8: re_paren(re_re *re) ! 9: { ! 10: return egparen(re->root); ! 11: } ! 12: ! 13: static int ! 14: egparen(Expr *e) ! 15: { ! 16: if(e == 0) ! 17: return(0); ! 18: switch(e->type) ! 19: { ! 20: case Null: ! 21: case Literal: ! 22: case Dot: ! 23: case Carat: ! 24: case Dollar: ! 25: case Backref: ! 26: case Compcharclass: ! 27: case Charclass: ! 28: break; ! 29: case Cat: ! 30: case Alternate: ! 31: return(egparen(e->l)+egparen(e->r)); ! 32: case Star: ! 33: case Plus: ! 34: case Quest: ! 35: case EOP: ! 36: return(egparen(e->l)); ! 37: case Group: ! 38: return(1+egparen(e->l)); ! 39: } ! 40: return(0); ! 41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.