-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathgrammar.rl
44 lines (30 loc) · 978 Bytes
/
grammar.rl
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
%%{
machine OP;
BASE = [0-9a-zA-Z~_];
INT60U = BASE{1,10} $int60_digit ;
INT60Z = (
[([\{\}\])] $int60_prefix
BASE{,10} $int60_digit
);
INT60 = ( INT60U | INT60Z ) %int60 ;
UUID = (
INT60
( [\-+$%] @uuid_sep INT60 | INT60Z %int60 )?
) %uuid
;
# ( [`\\|/] %uuid_redef )?
#number = (
# ( [0-9]+ $dgt %done ) ( '.' @dec [0-9]+ $dgt )?
# ( [eE] ( [+\-] $exp_sign )? [0-9]+ $exp )?
#) %number;
INT_ATOM = [\-+]? [0-9]{1,17} $dgt;
STRING_ATOM = [^']*;
ATOM = ("?"|"!"|"="INT_ATOM|"'"STRING_ATOM"'"|">"UUID) >atom_start %atom;
OP = (
( "." UUID )? %type >type_start
( "#" UUID )? %object >object_start
( "@" UUID )? %event >event_start
( ":" UUID )? %location >location_start
(ATOM{1,8}) %value
) "\n";
}%%