├── .gitignore ├── LICENSE ├── Setup.hs ├── app └── Main.hs ├── haskell-tiger.cabal ├── src └── Language │ ├── Tiger.hs │ └── Tiger │ ├── AST.hs │ ├── Access.hs │ ├── Env.hs │ ├── Escape.hs │ ├── Frame.hs │ ├── Gensym.hs │ ├── IR.hs │ ├── Lexer.x │ ├── Loc.hs │ ├── Parser.y │ ├── Semant.hs │ ├── Symtab.hs │ ├── Temp.hs │ ├── Token.hs │ ├── Translate.hs │ ├── Types.hs │ └── Utils.hs ├── stack.yaml ├── test └── Spec.hs └── testcases ├── merge.tig ├── queens.tig ├── test1.tig ├── test10.tig ├── test11.tig ├── test12.tig ├── test13.tig ├── test14.tig ├── test15.tig ├── test16.tig ├── test17.tig ├── test18.tig ├── test19.tig ├── test2.tig ├── test20.tig ├── test21.tig ├── test22.tig ├── test23.tig ├── test24.tig ├── test25.tig ├── test26.tig ├── test27.tig ├── test28.tig ├── test29.tig ├── test3.tig ├── test30.tig ├── test31.tig ├── test32.tig ├── test33.tig ├── test34.tig ├── test35.tig ├── test36.tig ├── test37.tig ├── test38.tig ├── test39.tig ├── test4.tig ├── test40.tig ├── test41.tig ├── test42.tig ├── test43.tig ├── test44.tig ├── test45.tig ├── test46.tig ├── test47.tig ├── test48.tig ├── test49.tig ├── test5.tig ├── test6.tig ├── test7.tig ├── test8.tig └── test9.tig /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/LICENSE -------------------------------------------------------------------------------- /Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /app/Main.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/app/Main.hs -------------------------------------------------------------------------------- /haskell-tiger.cabal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/haskell-tiger.cabal -------------------------------------------------------------------------------- /src/Language/Tiger.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger.hs -------------------------------------------------------------------------------- /src/Language/Tiger/AST.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/AST.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Access.hs: -------------------------------------------------------------------------------- 1 | module Language.Tiger.Access where 2 | -------------------------------------------------------------------------------- /src/Language/Tiger/Env.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Env.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Escape.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Escape.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Frame.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Frame.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Gensym.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Gensym.hs -------------------------------------------------------------------------------- /src/Language/Tiger/IR.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/IR.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Lexer.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Lexer.x -------------------------------------------------------------------------------- /src/Language/Tiger/Loc.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Loc.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Parser.y: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Parser.y -------------------------------------------------------------------------------- /src/Language/Tiger/Semant.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Semant.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Symtab.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Symtab.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Temp.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Temp.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Token.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Token.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Translate.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Translate.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Types.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Types.hs -------------------------------------------------------------------------------- /src/Language/Tiger/Utils.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/src/Language/Tiger/Utils.hs -------------------------------------------------------------------------------- /stack.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/stack.yaml -------------------------------------------------------------------------------- /test/Spec.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/test/Spec.hs -------------------------------------------------------------------------------- /testcases/merge.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/merge.tig -------------------------------------------------------------------------------- /testcases/queens.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/queens.tig -------------------------------------------------------------------------------- /testcases/test1.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test1.tig -------------------------------------------------------------------------------- /testcases/test10.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test10.tig -------------------------------------------------------------------------------- /testcases/test11.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test11.tig -------------------------------------------------------------------------------- /testcases/test12.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test12.tig -------------------------------------------------------------------------------- /testcases/test13.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test13.tig -------------------------------------------------------------------------------- /testcases/test14.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test14.tig -------------------------------------------------------------------------------- /testcases/test15.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test15.tig -------------------------------------------------------------------------------- /testcases/test16.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test16.tig -------------------------------------------------------------------------------- /testcases/test17.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test17.tig -------------------------------------------------------------------------------- /testcases/test18.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test18.tig -------------------------------------------------------------------------------- /testcases/test19.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test19.tig -------------------------------------------------------------------------------- /testcases/test2.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test2.tig -------------------------------------------------------------------------------- /testcases/test20.tig: -------------------------------------------------------------------------------- 1 | /* error: undeclared variable i */ 2 | 3 | while 10 > 5 do (i+1;()) 4 | -------------------------------------------------------------------------------- /testcases/test21.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test21.tig -------------------------------------------------------------------------------- /testcases/test22.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test22.tig -------------------------------------------------------------------------------- /testcases/test23.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test23.tig -------------------------------------------------------------------------------- /testcases/test24.tig: -------------------------------------------------------------------------------- 1 | /* error : variable not array */ 2 | let 3 | var d:=0 4 | in 5 | d[3] 6 | end 7 | 8 | -------------------------------------------------------------------------------- /testcases/test25.tig: -------------------------------------------------------------------------------- 1 | /* error : variable not record */ 2 | let 3 | var d:=0 4 | in 5 | d.f 6 | end 7 | 8 | -------------------------------------------------------------------------------- /testcases/test26.tig: -------------------------------------------------------------------------------- 1 | /* error : integer required */ 2 | 3 | 3 + "var" 4 | -------------------------------------------------------------------------------- /testcases/test27.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test27.tig -------------------------------------------------------------------------------- /testcases/test28.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test28.tig -------------------------------------------------------------------------------- /testcases/test29.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test29.tig -------------------------------------------------------------------------------- /testcases/test3.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test3.tig -------------------------------------------------------------------------------- /testcases/test30.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test30.tig -------------------------------------------------------------------------------- /testcases/test31.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test31.tig -------------------------------------------------------------------------------- /testcases/test32.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test32.tig -------------------------------------------------------------------------------- /testcases/test33.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test33.tig -------------------------------------------------------------------------------- /testcases/test34.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test34.tig -------------------------------------------------------------------------------- /testcases/test35.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test35.tig -------------------------------------------------------------------------------- /testcases/test36.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test36.tig -------------------------------------------------------------------------------- /testcases/test37.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test37.tig -------------------------------------------------------------------------------- /testcases/test38.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test38.tig -------------------------------------------------------------------------------- /testcases/test39.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test39.tig -------------------------------------------------------------------------------- /testcases/test4.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test4.tig -------------------------------------------------------------------------------- /testcases/test40.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test40.tig -------------------------------------------------------------------------------- /testcases/test41.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test41.tig -------------------------------------------------------------------------------- /testcases/test42.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test42.tig -------------------------------------------------------------------------------- /testcases/test43.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test43.tig -------------------------------------------------------------------------------- /testcases/test44.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test44.tig -------------------------------------------------------------------------------- /testcases/test45.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test45.tig -------------------------------------------------------------------------------- /testcases/test46.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test46.tig -------------------------------------------------------------------------------- /testcases/test47.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test47.tig -------------------------------------------------------------------------------- /testcases/test48.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test48.tig -------------------------------------------------------------------------------- /testcases/test49.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test49.tig -------------------------------------------------------------------------------- /testcases/test5.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test5.tig -------------------------------------------------------------------------------- /testcases/test6.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test6.tig -------------------------------------------------------------------------------- /testcases/test7.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test7.tig -------------------------------------------------------------------------------- /testcases/test8.tig: -------------------------------------------------------------------------------- 1 | /* correct if */ 2 | if (10 > 20) then 30 else 40 3 | -------------------------------------------------------------------------------- /testcases/test9.tig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themattchan/haskell-tiger/HEAD/testcases/test9.tig --------------------------------------------------------------------------------