Advertisement
Guest User

Untitled

a guest
Oct 9th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. gr :: AST -> Gr
  2. gr ast =
  3.     let (start, rules, nonT) = (gr' ast)
  4.    in (start, rules)
  5.  
  6. gr' :: AST -> (String, [(String, String)], [String])
  7. gr' (Star x) =
  8.    let (start, rules, nonT) = gr' (x)
  9.     in (start, [(a, "") | a <- nonT] ++ rules, nonT)
  10. gr' (C x) =
  11.    ("A", [("A", x)], ["A"])
  12. gr' (Seq x y) =
  13.     (xstart, , xnonT ++ ynonT)
  14.         where (xstart, xrules, xnonT) = gr' x
  15.              (ystart, yrules, ynonT) = gr' y
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement