summaryrefslogtreecommitdiff
path: root/test/colm.d/btpat1.lm
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>