SLIDE 19 Introduction LGen Implementation Analysis of Work
Generation Engine Code
function terminal ( s t r ) return function (g , prefix , l e v e l ) coroutine . y i e l d ( p r e f i x . . s t r ) end end function a l t ( patt1 , patt2 ) return function (g , prefix , l e v e l ) patt1 (g , prefix , l e v e l ) patt2 (g , prefix , l e v e l ) end end function seq ( patt1 , patt2 ) return function (g , prefix , l e v e l ) local m1 = coroutine . wrap ( function ( ) patt1 (g , prefix , l e v e l ) end) for s t r i in m1 do patt2 (g , s t r i , l e v e l ) end end end 14 / 23