Slide 1

Slide 1 text

ͭͬͯ͋ͦ͘΅ ϥϜμܭࢉΠϯλϓϦλ ,.$ྫձߨ࠲!VUHXLL

Slide 2

Slide 2 text

ࣗݾ঺հ w !VUHXLL ͏͕ͨΘ͖͖  w ޻ֶ෦৘ใֶՊճੜ w ϓϩάϥϛϯάݴޠʹؔ͢Δݚڀ w &VSP5SVDL4JNVMBUPS

Slide 3

Slide 3 text

ࢀߟ <>6S[ZD[ZOFUBM-FDUVSFTPOUIF$VSSZ)PXBSE *TPNPSQIJTN 4UVEJFTJO-PHJDBOEUIF'PVOEBUJPOTPG .BUIFNBUJDT  &MTFWJFS4DJFODF <>IUUQXXXLCFDFJUPIPLVBDKQdTVNJJDMBTT LFJTBOLJTPGUXBSFLPVHBLVMBNCEBQEG <>IUUQUUJDVDIJDBHPFEVdQMDMBTTFT$.4$ 8JOUFSMFDUVSFTMFDQEG

Slide 4

Slide 4 text

͓͠ͳ͕͖ w ಈػ w Еܭࢉʹ͍ͭͯ஌Ζ͏ w ЕܭࢉͷΠϯλϓϦλΛ࣮૷͠Α͏

Slide 5

Slide 5 text

ಈػ w Еܭࢉͷݟͨ໨͸ίϯύΫτͰ͔ͭදݱྗ͕ڧ͍ w ͔࣮͠͠૷Λͨ͜͠ͱ͕ͳ͍ w ΠϯλϓϦλΛ࣮૷ͯ͠ΈΑ͏ w ࿦จಡΉͷ͕ͩΔ͍ͱ͖ʹखΛಈ͔ͯͨ͠

Slide 6

Slide 6 text

͜ͷߨ࠲ͷ໨త w ʮΈͳ͞Μ͕ීஈ࢖͍ͬͯΔϓϩάϥϛϯάݴޠ ͷΠϯ λϓϦλ ΋͜ͷΑ͏ʹ࣮૷͞Ε͍ͯΔʯͱ͍͏࣮ײΛ࣋ͬ ͯ΋Β͏ w ЕܭࢉΛ࣮૷ͨ͠ͱ͖ͷͭ·͖ͣϙΠϯτΛڞ༗͢Δ

Slide 7

Slide 7 text

͓͠ͳ͕͖ w ಈػ w Еܭࢉʹ͍ͭͯ஌Ζ͏ w ЕܭࢉͷΠϯλϓϦλΛ࣮૷͠Α͏

Slide 8

Slide 8 text

ܕແ͠ Еܭࢉ w ܭࢉͷϞσϧԽͷͻͱͭ w ؔ਺Λͭ͘Δ ந৅  w ؔ਺Λద༻͢Δ w ͜Ε͚ͩͰͳΜͱνϡʔϦϯά׬શ

Slide 9

Slide 9 text

Е߲ w .YcЕY.c.. w Y͸ม਺ w ؔ਺ந৅͸ӈ݁߹ЕYЕZ.ЕY ЕZ.  w ؔ਺ద༻͸ࠨ݁߹123 12 3 w ద౰ʹׅހΛՃ͑ͯΑ͍

Slide 10

Slide 10 text

͞·͟·ͳЕ߲ w ЕYY Z w ЕYЕZY w ЕYЕZЕ[Y[ Z[

Slide 11

Slide 11 text

ଋറม਺ͱࣗ༝ม਺ w ଋറม਺ w ؔ਺ந৅ʹΑͬͯଋറ͞Ε͍ͯΔม਺ w ЕYЕZYZ[ͷଋറม਺͸Y Z w ࣗ༝ม਺ w ଋറม਺Ͱ͸ͳ͍΋ͷ w ЕYЕZYZ[ͷࣗ༝ม਺͸[

Slide 12

Slide 12 text

ม਺ͷஔ׵ w . w ߲.ʹొ৔͢Δࣗ༝ม਺YΛ w ࠩ͠ࢧ͑ͳ͍ൣғͰ ߲/ʹஔ׵͢Δ w ࠩ͠ࢧ͑ͳ͍ൣғͬͯͳʹʁ

Slide 13

Slide 13 text

ม਺ͷஔ׵ͷྫ w YЕZZ w ZZ Y㱠Z  w Y[ ZY  ЕXX [ Z ЕXX  w ЕYYЕYY w ЕZYЕZЕ[[ Y㱠Z

Slide 14

Slide 14 text

Ћม׵ w ЕY.ЋЕZ. w ࠩ͠ࢧ͑ͳ͍ൣғͰҾ਺ͷม਺໊͸ຊ࣭Ͱ͸ͳ͍ w ЕYYͱЕZZΛ۠ผ͢Δඞཁ͸ͳ͍Ͱ͢ΑͶʁ

Slide 15

Slide 15 text

Ќ؆໿ w ͬ͘͟Γݴ͑͹ؔ਺ద༻ w ЕY. /.

Slide 16

Slide 16 text

Ќ؆໿Λମײ͢Δ w EFGG Y SFUVSOY Y w G      w ͜Ε͸͋͘·ͰମײͰ͢

Slide 17

Slide 17 text

Ќ؆໿ ЕYЕZЕ[Y[ Z[  ЕYЕZY  ЕYЕZY   ЕZЕ[ ЕYЕZY [ Z[  ЕYЕZY  Е[ ЕYЕZY [ ЕYЕZY [  Е[ ЕZ[ ЕYЕZY [  Е[ ЕZ[ ЕZ[  Е[[

Slide 18

Slide 18 text

ਖ਼نܗ w ͜ΕҎ্Ќ؆໿Ͱ͖ͳ͍߲ w ྫ w Y w ЕYY w ЕYЕZY

Slide 19

Slide 19 text

͓͠ͳ͕͖ w ಈػ w Еܭࢉʹ͍ͭͯ஌Ζ͏ w ЕܭࢉͷΠϯλϓϦλΛ࣮૷͠Α͏

Slide 20

Slide 20 text

࢓༷ w ೖྗЕ߲ͷจࣈྻදݱ w ग़ྗЌ؆໿ͷεςοϓͱਖ਼نܗ ͷΑ͏ͳ΋ͷ  w ͭ͡͸ඞͣ͠΋ਖ਼نܗʹ؆໿͞ΕΔΘ͚Ͱ͸ͳ͍  w Ќ؆໿ͯ͠Έͯɼ߲͕มԽ͠ͳ͔ͬͨΒఀࢭ͢Δ

Slide 21

Slide 21 text

࣮૷ݴޠ w ݴޠ͸0$BNMΛ࢖͏ w ͦͦ͜͜πʔϧνΣʔϯ͕͋Δ w Θ͕ͨ͠Α͘৮͍ͬͯΔ w ࢖͍͜ͳͤͯ͸͍ͳ͍ͱࢥ͏ʜʜ

Slide 22

Slide 22 text

؆໿·ͰͷྲྀΕ τʔΫϯྻ -".#%"*%%05 ߏจ໦ 'VO Y  %F#SVJKOJOEFY 'VO ЕYЕZЕ[Y[ Z[ ЕYЕZY ЕYЕZY ЕYY ࣈ۟ղੳ ߏจղੳ %F#SVJKOJOEFY΁ม׵ Ќ؆໿

Slide 23

Slide 23 text

࣮૷ͷྲྀΕ τʔΫϯྻ -".#%"*%%05 ߏจ໦ 'VO Y  %F#SVJKOJOEFY 'VO ЕYЕZЕ[Y[ Z[ ЕYЕZY ЕYЕZY ЕYY ࣈ۟ղੳ ߏจղੳ %F#SVJKOJOEFY΁ม׵ Ќ؆໿    

Slide 24

Slide 24 text

DGΠϯλϓϦλ τʔΫϯྻ *% Y &2/6.   ߏจ໦ 45.5 <"44*(/ Y  > Ծ૝ػցίʔυ -0"% 4503&  YY   ࣈ۟ղੳ ߏจղੳ Ծ૝ػցίʔυ΁ͷม׵ ධՁ ˞ͲΕ͘Β͍σʔλߏ଄Λม׵͢Δ͔͸ઃܭʹΑΔ

Slide 25

Slide 25 text

Е߲ͷσʔλܕΛఆٛ͠Α͏ w .YcЕY.c.. w ஧࣮ʹམͱ͜͠Ή

Slide 26

Slide 26 text

Е߲ͷσʔλܕΛఆٛ͠Α͏ type id = string
 
 type term =
 | Var of id
 | Fun of id * term
 | App of term * term

Slide 27

Slide 27 text

࣮૷ͷྲྀΕ τʔΫϯྻ -".#%"*%%05 ߏจ໦ 'VO Y  %F#SVJKOJOEFY 'VO ЕYЕZЕ[Y[ Z[ ЕYЕZY ЕYЕZY ЕYY ࣈ۟ղੳ ߏจղੳ %F#SVJKOJOEFY΁ม׵ Ќ؆໿    

Slide 28

Slide 28 text

ߏจղੳ w ЕYYͷΑ͏ͳه߸ྻʹҙຯΛ࣋ͨͤΔ࡞ۀ w ЕYY'VO Y 7BSY  w ݫີʹ͸͜ͷه߸ྻΛͦͷ··ѻ͏Θ͚Ͱ͸ͳ͍

Slide 29

Slide 29 text

ߏจղੳثΛ࣮૷͠Α͏ w NFOIJSΛ࢖͏Α w ZBDDͷ0$BNM൛ͷ͍͢͝΍ͭ w PDBNMZBDDͱ͍͏ͷ΋͋Δ w จ๏Λ#/'෩ͷ΋ͷͰهड़

Slide 30

Slide 30 text

τʔΫϯΛఆٛ͢Δ w .YcЕY.c.. w άοͱᛀΜͰඞཁͦ͏ͳτʔΫϯΛఆٛ͠Α͏ w *% ม਺  w -".#%" %05 Е   w -1"3&/ 31"3&/ ׅހ  w &0- Е߲ͷऴ୺

Slide 31

Slide 31 text

τʔΫϯΛఆٛ͢Δ %{
 open Syntax
 %}
 
 %token ID
 %token LAMBDA DOT
 %token LPAREN RPAREN
 %token EOL

Slide 32

Slide 32 text

จ๏Λఆٛ͢Δ w .YcЕY.c.. w άοͱᛀΜͰจ๏Λॻ͘ w NBJO&YQS&0- w &YQS-".#%"*%%05&YQSc"QQ&YQS w "QQ&YQS"QQ&YQS"&YQSc"&YQS w "&YQS*%c-1"3&/&YQS31"3&/

Slide 33

Slide 33 text

จ๏Λఆٛ͢Δ %start main
 %type main
 %% main:
 Expr EOL { $1 }
 
 Expr:
 | LAMBDA i=ID DOT e=Expr { Fun (i, e) }
 | AppExpr { $1 }
 
 AppExpr:
 | e1=AppExpr e2=AExpr { App (e1, e2) }
 | AExpr { $1 }
 
 AExpr:
 | i=ID { Var i }
 | LPAREN e=Expr RPAREN { e }

Slide 34

Slide 34 text

࣮૷ͷྲྀΕ τʔΫϯྻ -".#%"*%%05 ߏจ໦ 'VO Y  %F#SVJKOJOEFY 'VO ЕYЕZЕ[Y[ Z[ ЕYЕZY ЕYЕZY ЕYY ࣈ۟ղੳ ߏจղੳ %F#SVJKOJOEFY΁ม׵ Ќ؆໿    

Slide 35

Slide 35 text

ࣈ۟ղੳ w ͦ΋ͦ΋ЕYYͷΑ͏ͳจࣈྻͷ··ͩͱѻ͍ͮΒ͍ w ۭനจࣈΛແࢹ͢Δͱ͔ w ίϝϯτ΋͜͜ͰऔΓআ͔ΕΔ w -".#%"*% Y %05*% Y ͙Β͍ʹ໌֬ͳྻͩͱΑ͍

Slide 36

Slide 36 text

ࣈ۟ղੳثΛ࣮૷͠Α͏ w PDBNMMFYΛ࢖͏Α w MFYͷ0$BNM൛ w ϧʔϧΛਖ਼نදݱͰهड़

Slide 37

Slide 37 text

ࣈ۟ղੳϧʔϧΛఆٛ͢Δ {
 open Parser
 }
 
 rule main = parse
 [' ' '\t']+ { main lexbuf }
 | ['\n'] { EOL }
 | ['a'-'z'] { ID (Lexing.lexeme lexbuf) }
 | '\\' { LAMBDA }
 | '.' { DOT }
 | '(' { LPAREN }
 | ')' { RPAREN }
 | eof { exit 0 }

Slide 38

Slide 38 text

࣮૷ͷྲྀΕ τʔΫϯྻ -".#%"*%%05 ߏจ໦ 'VO Y  %F#SVJKOJOEFY 'VO ЕYЕZЕ[Y[ Z[ ЕYЕZY ЕYЕZY ЕYY ࣈ۟ղੳ ߏจղੳ %F#SVJKOJOEFY΁ม׵ Ќ؆໿    

Slide 39

Slide 39 text

%F#SVJKOJOEFYʹม׵͠Α͏ w ʜʜͬͯͳʹʁ

Slide 40

Slide 40 text

Ћม׵ ࢥ͍ग़͢ w ʮଋറม਺ͷ໊લ͸ຊ࣭Ͱ͸ͳ͍ʯ w ͍ͬΆ͏ߏจ໦ʹ͸ଋറม਺ͷ໊લ͕͋Δ w ద੾ʹม਺ͷ໊લͷ͜ͱΛߟ͑ͳ͍ͱ
 ؆໿݁Ռ͕ΊͪΌͪ͘ΌʹͳΔ w ଋറม਺ͷ໊લʹଋറ͞Εͨ͘ͳ͍ʂʂʂʂ

Slide 41

Slide 41 text

Ќ؆໿ ·͕͍ͪ ЕYЕZЕ[Y[ Z[  ЕYЕ[Y  ЕYЕZY   ЕZЕ[ ЕYЕ[Y [ Z[  ЕYЕZY  Е[ ЕYЕ[Y [ ЕYЕZY [  Е[ Е[[ ЕYЕZY [  Е[ Е[[ ЕZ[  Е[ЕZ[

Slide 42

Slide 42 text

%F#SVJKOJOEFYʹม׵͠Α͏ w ؔ਺ந৅ʹΑΔଋറ͔Βͷωετͷਂ͞Ͱม਺͕Ұҙʹ ఆ·Δ w ͜͜Ͱ͸JOEFYͱ͢Δ w ЕYЕZYЕЕ w ЕYЕZЕ[Y[ Z[ ЕЕЕ   w ͨͩࣗ͠༝ม਺͸์͓ͬͯ͘

Slide 43

Slide 43 text

%F#SVJKOJOEFYͷڧΈ w ม਺ͷ໊લΛߏจ໦͔ΒऔΓআ͘͜ͱ͕Ͱ͖Δ w ؆໿ͷաఔͰͷЋม׵Λߟ͑ͳͯ͘Α͍

Slide 44

Slide 44 text

%F#SVJKOJOEFY΁ͷม׵ w % ϵ / Y /ϵ Y  ϵ Y ͕ఆٛ͞Ε͍ͯΔ  w % ϵ / Y Y ϵ Y ͕ఆٛ͞Εͳ͍ɼࣗ༝ม਺Ͱ͋Δ  w % ϵ / ЕY. Е % ϵ\Y/ ^ /  .  w % ϵ / 12  % ϵ / 1 % ϵ / 2  w %NBJO . % \^  .

Slide 45

Slide 45 text

%F#SVJKOJOEFY΁ͷม׵ w ྫ w %NBJO ЕYЕZY  w % \^  ЕYЕZY  w Е % \Y^  ЕZY  w ЕЕ % \Y Z^  Y  w ЕЕ  ЕЕ

Slide 46

Slide 46 text

࣮૷ͷྲྀΕ τʔΫϯྻ -".#%"*%%05 ߏจ໦ 'VO Y  %F#SVJKOJOEFY 'VO ЕYЕZЕ[Y[ Z[ ЕYЕZY ЕYЕZY ЕYY ࣈ۟ղੳ ߏจղੳ %F#SVJKOJOEFY΁ม׵ Ќ؆໿    

Slide 47

Slide 47 text

%F#SVJKOJOEFYͷЌ؆໿ w ػցతͳJOEFYͷૢ࡞ͱஔ׵͚ͩͰЌ؆໿͕࣮ߦ͞ΕΔ w ͳΜ͔͍ࣜ͢͝  w ࢿྉ<>Λࢀর

Slide 48

Slide 48 text

࣮૷ͷྲྀΕ τʔΫϯྻ -".#%"*%%05 ߏจ໦ 'VO Y  %F#SVJKOJOEFY 'VO ЕYЕZЕ[Y[ Z[ ЕYЕZY ЕYЕZY ЕYY ࣈ۟ղੳ ߏจղੳ %F#SVJKOJOEFY΁ม׵ Ќ؆໿    

Slide 49

Slide 49 text

࣮૷ͨ͠΋ͷ w IUUQTHJUIVCDPNVUHXLLMBNCEBDIBNB

Slide 50

Slide 50 text

σϞ w aYaZa[Y[ Z[ aYaZY aYaZY  w aYaZa[Y[ Z[ aYa[Y aYaZY  ม਺໊Λม͚͑ͨͩ  w aG aYG YY aYG YY  ఀࢭ͠ͳ͍

Slide 51

Slide 51 text

ࠓޙͷ՝୊ w ܕΛ෇͚Δ w ࣮૷͸͕ͨ͠ߨ࠲Ͱ͸লུ w ࣗ༝ม਺ͷѻ͍Λ͏·͘΍Γ͍ͨ

Slide 52

Slide 52 text

·ͱΊ w Еܭࢉʹ͍ͭͯͳΜͱͳ͘෼͔͖ͬͯͨ w ЕܭࢉͷΠϯλϓϦλΛ࣮૷ͨ͠