¼÷Á¦5: K Interpreter & Type Inference
4190.310 Programming Languages
2004 °¡À», È/¸ñ 14:30-15:45 @ 302µ¿ 308È£
¼¿ï´ëÇб³
/ ÄÄÇ»ÅÍ °øÇкÎ
/ ÇÁ·Î±×·¡¹Ö ¿¬±¸½Ç
Á¤¿µ¹ü | ½ÅÀçÈ£
¼÷Á¦5: K Interpreter & Type Inference
»À´ë ¹À½
¼÷Á¦ ÇÏ´Â ¹æ¹ý
- 1.nÀÇ K_Vanilla.run ÇÔ¼ö¿Í 2.nÀÇ K_Checker.check ¹× K_LowFat.run ÇÔ¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù. k.n¿¡ KÀÇ ¹®¹ý ¹× ŸÀÔ, ½ÇÇà±â, ŸÀÔ°Ë»ç±â, ±¸¹®±¸Á¶ Ãâ·Â µîÀÇ Á¤ÀÇ°¡ ¸ð¿©ÀÖÀ¸´Ï ÇÑ ¹øÂë »ìÆ캸´Â °ÍÀÌ ÁÁ°Ú½À´Ï´Ù.
- make¸¦ ÀÌ¿ëÇØ ÄÄÆÄÀÏÇÏ°í runÀ» ÀÌ¿ëÇØ K ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
(Windows¿¡¼´Â nmakegen -f run.exe·Î MakefileÀ» ´Ù½Ã ¸¸µé¾îÁÝ´Ï´Ù.)
- 1.n, 2.n °íÄ¡±â
- make
- run sort.k
- run -pp sort.k ¿Í °°ÀÌ Çϸé ÆÄ½ÌµÈ ±¸¹®±¸Á¶¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
- run -ty sort.k ó·³ -ty ¿É¼ÇÀ» ÁÖ¸é ÁÖ¾îÁø K ÇÁ·Î±×·¥À» 2.nÀÇ K_Checker.checkÀ¸·Î ŸÀÔ °Ë»ç¸¦ ÇÑ µÚ¿¡ K_LowFat.runÀ¸·Î µ¹¸³´Ï´Ù. -ty¸¦ ÁÖÁö ¾ÊÀ¸¸é 1.nÀÇ K_Vanilla.runÀ¸·Î µ¹¸®±â¸¸ ÇÕ´Ï´Ù.
- K ÇÁ·Î±×·¥¿¡¼´Â (* *) »çÀÌ¿¡ ÁÖ¼®À» ³ÖÀ» ¼ö ÀÖÀ¸¸ç, // ·Î ÇÑ ÁÙ¸¸ ÁÖ¼®À¸·Î ¸¸µé ¼öµµ ÀÖ½À´Ï´Ù.
Âü°í »çÇ×
- KÀÇ WRITE¸¦ µ¹¸®¸é¼ °ªÀ» Ãâ·ÂÇÒ °æ¿ì¿¡´Â ¹Ýµå½Ã ´ÙÀ½°ú °°ÀÌ
°ªÀ» ÂïÀº ´ÙÀ½¿¡ ÁٹٲÞÀ» ÇϽʽÿÀ.
Á¤¼ö°ª v => print_int v; print_newline() true => print_endline "true" false => print_endline "false" ¹®ÀÚ¿ s => print_endline s
- K.RuntimeError´Â K_Vanilla.run°ú K_LowFat.run¿¡¼¸¸, K.TypeError´Â K_Checker.check¿¡¼¸¸ ³»¾ß ÇÕ´Ï´Ù.
- ŸÀÔ ¿À·ù³ª ½ÇÇà ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì, ±× ÀÌÀ¯¸¦ ¼³¸íÇÏ´Â ÀûÀýÇÑ ¸Þ½ÃÁö¸¦ ¿¹¿Ü¿¡ Æ÷ÇÔ½ÃÅ°¸é ÁÁ½À´Ï´Ù.
- ¼÷Á¦ Á¦ÃâÀº ¿©´À ¶§¿Í °°ÀÌ 1.n°ú 2.n ÆÄÀϸ¸ ÇÕ´Ï´Ù.
½ÅÀçÈ£ ¸¸µë.