* # Return range n1 .. n2 define('range(n1,n2)') :(range_end) range range = range n1 ','; n1 = lt(n1,n2) n1 + 1 :s(range) range rtab(1) . range :(return) range_end define('rangex(range)d1,d2') num = ('-' | '') span('0123456789') :(rangex_end) rangex range num . d1 '-' num . d2 = range(d1,d2) :s(rangex) rangex = range :(return) rangex_end * # Test and display output = rangex('-6,-3--1,3-5,7-11,14,15,17-20') end