module A5 where import Grammar -- note that all of the definitions below -- are technically of nullary functions grammar0 = Grammar s [vp,np,pp] [Rule s [np, vp], Rule np [det, n], Rule np [det, n, pp], Rule vp [v], Rule vp [v, np], Rule vp [v, pp], Rule vp [v, np, pp], Rule pp [p, np]] where (s,vp,np,pp,n,det,v,p) = (Symbol "s", Symbol "vp", Symbol "np", Symbol "pp", Symbol "n", Symbol "det", Symbol "v", Symbol "p") grammar1 = Grammar s [] [Rule s [x], Rule s [x, s, s]] where (s,x) = (Symbol "s", Symbol "x") grammar2 = Grammar e [f,t] [Rule e [t], Rule e [t, plus, e], Rule t [f], Rule t [f, times, t], Rule f [x], Rule f [y], Rule f [lt, e, gt]] where (e,f,t,x,y,plus,times,lt,gt) = (Symbol "e", Symbol "f", Symbol "t", Symbol "x", Symbol "y", Symbol "+", Symbol "*", Symbol "<", Symbol ">") test01 = getyields (Symbol "s") grammar0 3 test02 = getyields (Symbol "s") grammar0 4 test03 = getyields (Symbol "s") grammar0 5 test04 = getyields (Symbol "s") grammar0 6 test05 = getyields (Symbol "s") grammar0 7 test06 = getyields (Symbol "vp") grammar0 6 test07 = getyields (Symbol "s") grammar0 8 test11 = getyields (Symbol "s") grammar1 3 test12 = getyields (Symbol "s") grammar1 5 test13 = getyields (Symbol "s") grammar1 6 test14 = getyields (Symbol "s") grammar1 7 test15 = getyields (Symbol "vp") grammar1 6 test21 = getyields (Symbol "e") grammar2 1 test22 = getyields (Symbol "e") grammar2 2 test23 = getyields (Symbol "e") grammar2 3 test24 = getyields (Symbol "e") grammar2 4 test25 = getyields (Symbol "e") grammar2 5 test = sequence_ (map print [getyields (Symbol "s") grammar0 3, getyields (Symbol "s") grammar0 4, getyields (Symbol "s") grammar0 5, getyields (Symbol "s") grammar0 6, getyields (Symbol "s") grammar0 7, getyields (Symbol "vp") grammar0 6, getyields (Symbol "s") grammar0 8, getyields (Symbol "s") grammar1 3, getyields (Symbol "s") grammar1 5, getyields (Symbol "s") grammar1 6, getyields (Symbol "s") grammar1 7, getyields (Symbol "vp") grammar1 6, getyields (Symbol "e") grammar2 1, getyields (Symbol "e") grammar2 2, getyields (Symbol "e") grammar2 3, getyields (Symbol "e") grammar2 4, getyields (Symbol "e") grammar2 5])