Skip to content

Instantly share code, notes, and snippets.

@JulianLeviston
Created June 4, 2017 11:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JulianLeviston/6f645dcf4a0143fc8213bed9b22990e7 to your computer and use it in GitHub Desktop.
Save JulianLeviston/6f645dcf4a0143fc8213bed9b22990e7 to your computer and use it in GitHub Desktop.
Showing output from arbitrary grammar with some expressions
module Test where
data EExp a
= ELit a
| EAdd (EExp a) (EExp a)
eg1 :: EExp Int
eg1 = EAdd (ELit 1) (EAdd (ELit 2) (ELit 0))
eg2 :: EExp Int
eg2 = EAdd (ELit 1) (EAdd (ELit 1) (ELit 1))
eg3 :: EExp Int
eg3 =
EAdd (ELit 1) (EAdd (ELit 2) (EAdd (ELit 3) (EAdd (ELit 4) (EAdd (ELit 5) (ELit 0)))))
-- output:
{-
eg1:
1: EAdd (ELit 1) (EAdd (ELit 2) (ELit 0))
2: ELit 1
3: EAdd (ELit 2) (ELit 0)
4: ELit 2
5: ELit 0
eg2:
1: EAdd (ELit 1) (EAdd (ELit 1) (ELit 1))
2: ELit 1
3: EAdd (ELit 1) (ELit 1)
4: ELit 1
5: ELit 1
eg3:
1: EAdd (ELit 1) (EAdd (ELit 2) (EAdd (ELit 3) (EAdd (ELit 4) (EAdd (ELit 5) (ELit 0)))))
2: ELit 1
3: EAdd (ELit 2) (EAdd (ELit 3) (EAdd (ELit 4) (EAdd (ELit 5) (ELit 0))))
4: ELit 2
5: EAdd (ELit 3) (EAdd (ELit 4) (EAdd (ELit 5) (ELit 0)))
6: ELit 3
7: EAdd (ELit 4) (EAdd (ELit 5) (ELit 0))
8: ELit 4
9: EAdd (ELit 5) (ELit 0)
10: ELit 5
11: ELit 0
-}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment