1 2 /* Web Polygraph http://www.web-polygraph.org/ 3 * Copyright 2003-2011 The Measurement Factory 4 * Licensed under the Apache License, Version 2.0 */ 5 6 #include "base/polygraph.h" 7 8 #include "pgl/PglRegExSym.h" 9 #include "client/RegExGroups.h" 10 11 FromExpr(RegExExpr * expr)12RegExGroup *RegExGroup::FromExpr(RegExExpr *expr) { 13 if (expr) { 14 switch (expr->theOper) { 15 case RegExExpr::opNone: 16 return new RegExGrpOne(expr->theVal); 17 case RegExExpr::opNot: 18 return new RegExGrpNot(FromExpr(expr->theLhs)); 19 case RegExExpr::opAnd: { 20 RegExGrpAnd *res = new RegExGrpAnd; 21 res->add(FromExpr(expr->theLhs)); 22 res->add(FromExpr(expr->theRhs)); 23 return res; 24 } 25 case RegExExpr::opOr: { 26 RegExGrpOr *res = new RegExGrpOr; 27 res->add(FromExpr(expr->theLhs)); 28 res->add(FromExpr(expr->theRhs)); 29 return res; 30 } 31 default: { 32 Assert(false); 33 return 0; 34 } 35 } 36 } 37 return 0; 38 } 39