1use logos::Logos;
2
3#[derive(Logos, Debug, PartialEq, Clone)]
4#[logos(skip r"[ \t\r\n\f]+|;.*")]
5pub(super) enum Token<'a> {
6 #[token("(")]
7 LParen,
8
9 #[token(")")]
10 RParen,
11
12 #[regex("(?i)define")]
13 Definition,
14
15 #[regex("(?i)domain")]
16 DomainName,
17
18 #[regex(":(?i)requirements")]
19 Requirements,
20
21 #[regex(":[a-zA-Z][a-zA-Z0-9-_]*")]
22 Requirement(&'a str),
23
24 #[regex(":(?i)types")]
25 Types,
26
27 #[regex(":(?i)predicates")]
28 Predicates,
29
30 #[regex(":(?i)action")]
31 Action,
32
33 #[regex(":(?i)parameters")]
34 Parameters,
35
36 #[regex(":(?i)precondition")]
37 Precondition,
38
39 #[regex(":(?i)effect")]
40 Effect,
41
42 #[regex(":(?i)init")]
43 Init,
44
45 #[regex("=")]
46 Equal,
47
48 #[regex("(?i)and")]
49 And,
50
51 #[regex("(?i)or")]
52 Or,
53
54 #[regex("(?i)not")]
55 Not,
56
57 #[token("-")]
58 TypeSeparator,
59
60 #[regex("[a-zA-Z?][a-zA-Z0-9-_]*")]
61 Name(&'a str),
62}