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)12 RegExGroup *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