-
Notifications
You must be signed in to change notification settings - Fork 2
/
lex-fct_pddl.l
executable file
·124 lines (83 loc) · 2.19 KB
/
lex-fct_pddl.l
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
%{
#include "ff.h"
#include "parse.h"
/* default yywrap function - always treat EOF as an EOF */
int fct_pddlwrap() {
return 1;
};
int gbracket_count = 0;
%}
a [Aa]
b [Bb]
c [Cc]
d [Dd]
e [Ee]
f [Ff]
g [Gg]
h [Hh]
i [Ii]
j [Jj]
k [Kk]
l [Ll]
m [Mm]
n [Nn]
o [Oo]
p [Pp]
q [Qq]
r [Rr]
s [Ss]
t [Tt]
u [Uu]
v [Vv]
w [Ww]
x [Xx]
y [Yy]
z [Zz]
%x COMMENT OVERREAD
%%
"(" { return(OPEN_PAREN); }
")" { return(CLOSE_PAREN); }
\([ \t]*{i}{n}"-"{p}{a}{c}{k}{a}{g}{e} { gbracket_count = 1;
BEGIN OVERREAD; }
\([ \t]*":"{l}{e}{n}{g}{t}{h} { gbracket_count = 1;
BEGIN OVERREAD; }
\([ \t]*":"{r}{e}{q}{u}{i}{r}{e}{m}{e}{n}{t}{s} { gbracket_count = 1;
BEGIN OVERREAD; }
{d}{e}{f}{i}{n}{e} { return(DEFINE_TOK); }
{p}{r}{o}{b}{l}{e}{m} { return(PROBLEM_TOK); }
{s}{i}{t}{u}{a}{t}{i}{o}{n} { return(SITUATION_TOK); }
":"{s}{i}{t}{u}{a}{t}{i}{o}{n} { return(BSITUATION_TOK); }
":"{o}{b}{j}{e}{c}{t}{s} { return(OBJECTS_TOK); }
":"{g}{o}{a}{l} { return(GOAL_TOK); }
":"{i}{n}{i}{t} { return(INIT_TOK); }
":"{d}{o}{m}{a}{i}{n} { return(BDOMAIN_TOK); }
\([ \t]*":"{e}{x}{t}{e}{n}{d}{s} { gbracket_count = 1;
BEGIN OVERREAD; }
"=" { return(EQ_TOK); }
{a}{n}{d} { return(AND_TOK); }
{i}{m}{p}{l}{y} { return(IMPLY_TOK); }
{o}{r} { return(OR_TOK); }
{f}{o}{r}{a}{l}{l} { return(FORALL_TOK); }
{e}{x}{i}{s}{t}{s} { return(EXISTS_TOK); }
{n}{o}{t} { return(NOT_TOK); }
:?[a-zA-Z][a-zA-Z0-9\-_]* { strupcase( yytext );
strcpy(yylval.string, yytext ); return(NAME); }
\?[a-zA-Z][a-zA-Z0-9\-_\[\]]* {strupcase( yytext );
strcpy(yylval.string, yytext); return(VARIABLE); }
"-"[ \t]*[a-zA-Z][a-zA-Z0-9\-_\[\]]* {strupcase(yytext);
strcpy(yylval.string, rmdash(yytext)); return(TYPE); }
"-"[ \t]*"("[ \t]*{e}{i}{t}{h}{e}{r} { return(EITHER_TOK); }
\;(.)*\n { lineno++; }
\;(.)* { /* this will hold only in files that end with
a comment but no linefeed */ }
<COMMENT>(.^\")*\n { lineno++; } ;
<INITIAL>\" { BEGIN COMMENT;}
<COMMENT>\" { BEGIN INITIAL;}
\n { lineno++; }
<OVERREAD>(.^\(\))*\n { lineno++; }
<OVERREAD>[^\(\)] { }
<OVERREAD>\( { gbracket_count++; }
<OVERREAD>\) { gbracket_count--;
if (!gbracket_count) BEGIN INITIAL; }
. {}
%%