blob: 0c87832cae197aaec0a44164bb5c82b66f7b427b (
plain)
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
|
lex
token DEF / 'def' /
token id / ( 'a' .. 'z' ) + /
token SQOPEN /'['/
token SQCLOSE /']'/
token COLON /':'/
token FOIL /'!'/
ignore / ( '\n' | ' ' )+ /
end
def opt_prod_el_name
[id COLON]
| []
def prod_el
[opt_prod_el_name id]
def prod
[SQOPEN prod_el SQCLOSE]
def E []
def item
[DEF] | [id] | [SQOPEN] | [SQCLOSE] | [COLON]
def cfl_def
[E item* FOIL]
| [DEF id prod]
parse Id: id
[stdin]
cons Def: cfl_def
"def x \[[Id]\]"
match Def
"def x \[[id]\]
print [xml(Def) "\n"]
##### IN #####
y
##### EXP ####
<cfl_def><DEF>def</DEF><id>x</id><prod><SQOPEN>[</SQOPEN><prod_el><opt_prod_el_name></opt_prod_el_name><id>y</id></prod_el><SQCLOSE>]</SQCLOSE></prod></cfl_def>
|