-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathCondition.cpp
39 lines (27 loc) · 872 Bytes
/
Condition.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "Domain.h"
Condition * createCondition( Filereader & f, Domain & d ) {
std::string s = f.getToken();
if ( s == "=" ) return new Equals;
if ( s == "AND" ) return new And;
if ( s == "EXISTS" ) return new Exists;
if ( s == "FORALL" ) return new Forall;
if ( s == "INCREASE" ) return new Increase;
if ( s == "NOT" ) return new Not;
if ( s == "ONEOF" ) return new Oneof;
if ( s == "OR" ) return new Or;
if ( s == "WHEN" ) return new When;
int i = d.preds.index( s );
if ( i >= 0 ) return new Ground( d.preds[i] );
f.tokenExit( s );
return 0;
}
Condition * createSHOPCondition( Filereader & f, Domain & d ) {
std::string s = f.getToken();
if ( s == "AND" ) return new And;
if ( s == "FORALL" ) return new Forall;
if ( s == "NOT" ) return new Not;
if ( s == "OR" ) return new Or;
return new Ground( s );
f.tokenExit( s );
return 0;
}