¼÷Á¦3: º¸¹°¼¶ & C- ½ÇÇà±â
4190.310 Programming Languages
2004 °¡À», È/¸ñ 14:30-15:45 @ 302µ¿ 308È£
¼¿ï´ëÇб³
/ ÄÄÇ»ÅÍ °øÇкÎ
/ ÇÁ·Î±×·¡¹Ö ¿¬±¸½Ç
Á¤¿µ¹ü | ½ÅÀçÈ£
¼÷Á¦3: º¸¹°¼¶ & C- ½ÇÇà±â
ÇÁ·Î±×·¥
Á¦°øÇÏ´Â ÇÁ·Î±×·¥ ¼Ò½º´Â C- ¾ð¾îÀÇ ¹®¹ý ºÐ¼®±â (parser) ¿Í ¸Þ¸ð¸® (memory) ¿Í ȯ°æ (environment) À» ±¸ÇöÇÑ ÇÁ·Î±×·¥ ºÎÇ°ÀÔ´Ï´Ù. ¼÷Á¦ Á¦ÃâÀº ¹Ýµå½Ã 3.n ¸¸ Á¦ÃâÇØ ÁÖ¼¼¿ä.ÄÄÆÄÀÏ ¹× ½ÇÇà ¹æ¹ý
Á¦°øµÇ´Â 3.n ÆÄÀÏ¿¡´Â ¼÷Á¦ ±¸Çö ºÎºÐÀº ºñ¿öÁ® ÀÖ½À´Ï´Ù. ÀÌ ÆÄÀÏÀ» ¼öÁ¤Çؼ interpreter¸¦ ¿Ï¼ºÇÏ°í ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏ ¹× ½ÇÇàÀ» ÇÏ¸é µË´Ï´Ù.[UNIX] 1. nmakegen -f 2. make 3. run examples/test.c- [WINDOWS] 1. nmakegen -f run.exe 2. make ( nml ¼³Ä¡½Ã¿¡ °°ÀÌ ¼³Ä¡µË´Ï´Ù. ) 3. run examples\test.c-Â÷ÈÄ¿¡ ¼öÁ¤À» Çؼ ´Ù½Ã ÄÄÆÄÀÏÇÏ´Â °æ¿ì´Â 2~3°úÁ¤¸¸ ´Ù½Ã ½ÇÇàÇÏ¸é µË´Ï´Ù.
¼÷Á¦ Á¦Ãâ ¹æ¹ý
¼÷Á¦ Á¦ÃâÀº 3.n ÆÄÀϸ¸ ÇØÁÖ¼¼¿ä. Áï Á¶±³°¡ ¿©±â¼ Á¦°øµÇ°í ÀÖ´Â ÆÄÀÏ Áß 3.n¸¸ °¢ÀÚ°¡ Á¦ÃâÇÑ °ÍÀ¸·Î ¹Ù²ã¼ ÄÄÆÄÀÏ ¹× ½ÇÇàÀÌ µÇµµ·Ï Çؼ Á¦ÃâÇØ Áֽñ⠹ٶø´Ï´Ù.¿ì¼± ¼øÀ§
»ç¿ëµÇ´Â ±âÈ£µéÀÇ ¿ì¼±¼øÀ§´Â ¾Æ·¡¿Í °°½À´Ï´Ù. À§¿¡ ÀÖ´Â ±âÈ£°¡ ¿ì¼± ¼øÀ§°¡ °¡Àå ³ô°í, ¾Æ·¡·Î °¥¼ö·Ï ¿ì¼± ¼øÀ§°¡ ³·¾ÆÁý´Ï´Ù.not (¿À¸¥ÂÊ) . (¿ÞÂÊ) *, / (¿ÞÂÊ) +, - (¿ÞÂÊ) =, < (¿ÞÂÊ) write (¿À¸¥ÂÊ) := (¿À¸¥ÂÊ) else then do ; (¿ÞÂÊ) in¿ì¼±¼øÀ§¸¦ °í·ÁÇØ¾ß µÇ´Â ¸î°¡Áö ÀϹÝÀûÀÎ °æ¿ì¸¦ º¸¿©µå¸®¸é ´ÙÀ½°ú °°½À´Ï´Ù.
x := e1 ; e2 => (x := e1) ; e2 (* := ÀÌ ; º¸´Ù ¿ì¼± ¼øÀ§°¡ ³ô±â¶§¹® *) while e do e1;e2 => (while e do e1);e2 if e1 then e2 else e3;e4 => (if e1 then e2 else e3); e4 let x := e1 in e2 ; e3 => let x :=e in (e2;e3)Áï :=, while, for, if ÀÇ ¹Ùµð·Î sequence¸¦ ¾²°í ½ÍÀ¸¸é sequence¸¦ ´ÙÀ½°ú °°ÀÌ °ýÈ£·Î ¹¾î Áà¾ß ÇÕ´Ï´Ù.
while e do (e1;e2)¸¶Âù°¡Áö·Î let in ÀÇ ¹Ùµð¿¡¼´Â scope¸¦ Á¦ÇѽÃÅ°·Á¸é °ýÈ£¸¦ ÃÄÁà¾ß ÇÏ°Ô µË´Ï´Ù.
(let x := e1 in e2); e3¹æÇ⼺Àº ¿ì¼±¼øÀ§°¡ °°Àº °æ¿ì¿¡ Àû¿ëÀÌ µË´Ï´Ù. ¿¹¸¦ µé¾î ¹æÇ⼺ÀÌ ¿ÞÂÊÀÎ . ´Â
x.y.z => (x.y).z°¡ µÇ°í, ¿À¸¥ÂÊÀÎ := Àº
x := y := 1 => x := (y := 1)ÀÌ µÇ°Ô µË´Ï´Ù. ¿ì¼±¼øÀ§¸¦ Àß ¸ð¸£°ÚÀ»½Ã¿¡´Â °ýÈ£¸¦ ÃÄÁÖ´Â °ÍÀÌ ÇÑ°¡Áö ¹æÆíÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.
pretty-printer
ÀÔ·Â ÇÁ·Î±×·¥À» °£´ÜÈ÷ ȸ鿡 Ãâ·Â½ÃÄÑÁÖ´Â pretty-printer°¡ Á¦°øµÈ pp.n ÆÄÀÏ¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. »ç¿ë¹ýÀºrun -pp test.c-¸¦ ½ÇÇàÇϸé main.n¿¡¼ run ÇÔ¼ö¸¦ ºÒ·¯¼ intepreter¸¦ µ¹¸®´Â °ÍÀÌ ¾Æ´Ï¶ó test.c-¸¦ ÆÄ½Ì Çؼ ÀÔ·ÂµÈ ÇÁ·Î±×·¥À» ȸ鿡 Ãâ·ÂÇØÁÖ°í ¸¶Ä¡°Ô µË´Ï´Ù. À̸¦ ÅëÇØ ÆĽÌÀÌ ÀǵµÇÑ ´ë·Î µÇ°í ÀÖ´ÂÁö È®ÀÎÇØ º¸½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù. intepreter¸¦ ±¸ÇöÇϱâ ÀÌÀü¿¡ Á¦°øµÈ ÆÄÀϵ鸸 ÄÄÆÄÀÏÀ» Çصµ run -pp ¿É¼ÇÀº ½ÇÇàÀÌ µÇµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù.
ÁÖ¼®
c- ÇÁ·Î±×·¥ ¾È¿¡¼ (* *) ·Î ÁÖ¼®À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
½ÅÀçÈ£ ¸¸µë.