1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
lex { ignore /[ \t\n]+/ token id /[a-z0-9]+/ literal ',', '.', '*', '(', ')' } def bigger ['(' item* ')'] def item [id] | [bigger] def lang [item*] B: bigger = construct bigger "( b1 b2 )" print( construct lang "a [B] c" '\n' )