-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdomain.flex
85 lines (65 loc) · 1.75 KB
/
domain.flex
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/**
* Domain Parser
*/
package PARSER;
%%
%byaccj
%{
private Parser yyparser;
public static int lineCount = 1;
public static void reset(){
lineCount = 1;
}
public Yylex(java.io.Reader r, Parser yyparser) {
this(r);
this.yyparser = yyparser;
}
%}
req = ":"([:letter:]|[:digit:])+([:letter:]|[:digit:]|"-"|"_")*
obj = "?"([:letter:]|[:digit:])+([:letter:]|[:digit:]|"-"|"_")*
str = ([:letter:]|[:digit:])+([:letter:]|[:digit:]|"-"|"_")*
comment = ";"[^\n]*\n
%%
define {return Parser.DEFINE;}
domain {return Parser.DOMAIN;}
problem {return Parser.PROBLEM;}
":requirements" {return Parser.REQUIREMENTS;}
":types" {return Parser.TYPES;}
":predicates" {return Parser.PREDICATES;}
":domain" {return Parser.PDOMAIN;}
":init" {return Parser.INIT;}
":objects" {return Parser.OBJECTS;}
":goal" {return Parser.GOAL;}
":action" {return Parser.ACTION;}
":parameters" {return Parser.PARAMETERS;}
":precondition" {return Parser.PRECONDITION;}
":effect" {return Parser.EFFECT;}
":constraints" {return Parser.CONSTRAINTS;}
"and" {return Parser.AND;}
"not" {return Parser.NOT;}
"forall" {return Parser.FORALL;}
"exists" {return Parser.EXISTS;}
//constraint statement type
"always" |
"sometime" |
"within" |
"at-most-once" |
"sometime-after" |
"sometime-before"|
"always-within" |
"hold-during" |
"hold-after" {yyparser.yylval = new ParserVal(yytext());
return Parser.CSTAT;}
"(" |
")" |
"=" |
"-" {return (int) yycharat(0);}
{req} {yyparser.yylval = new ParserVal(yytext());
return Parser.REQ;}
{obj} {yyparser.yylval = new ParserVal(yytext());
return Parser.OBJ;}
{str} {yyparser.yylval = new ParserVal(yytext());
return Parser.STRING;}
{comment} {}
[ \t\r]+ {}
\n {lineCount++;}