emacs に乗り換えたきっかけで、Lisp を覚えようと Perl で Lisp Interpreter を書いた話です。
p5-Lisp::Tiny: https://github.com/Code-Hex/p5-Lisp-Tiny Parser の書き方: https://speakerdeck.com/codehex/perl-dezuo-ru-tiny-shell
1FSMͰॻ͘ -JTQ*OUFSQSFUFS:"1$5PLZPલࡇ
View Slide
8)0".*+645461&326*$,
!DPEFIFY
ͱͯפ͍Ͱ͢Ͷ
ͱ͜ΖͰ
ΤσΟλԿ͕͖Ͱ͔͢ʁ
λʔϛφϧͱΤσΟλը໘ ߦ͖དྷ͢ΔͷʹർΕ͖ͯͨ
͜Ε
ΤσΟλΛม͑Δͧ
.BDͱಉ͡γϣʔτΧοτ͕͑Δ
ͦ͏ɺFNBDTͰ͢ʂ
ͱɺݴ͍ͭͭ
WTDPEF FNBDTLFZCJOEJOHT
͜Ε͡Ό͋ͩΊͩʂʂ
FNBDTΛ͍͜ͳͨ͢Ίʹ
-JTQΛ͍֮͑ͨʂʂ
-JTQJOUFSQSFUFSΛ ࡞֮ͬͯ͑Α͏ʂʂ
ܰ͘࡞ͬͨʂ
Q-JTQ5JOZIUUQTHJUIVCDPN$PEF)FYQ-JTQ5JOZ
-JTQ1BSTFS$PNNPO-JTQͷύʔαʔΛॻ͘
-JTQͬͯͲΜͳه๏ʁ
MFU B C BC ׅހ͕͍ͬͺ͍ʂʂ
/'ه๏IUUQDVJVOJHFDIJTJCOG-*41#/'JOEFYIUNM
w T@FYQSFTTJPOBUPNJD@TZNCPMc T@FYQSFTTJPOT@FYQSFTTJPOcMJTUw MJTU T@FYQSFTTJPO\T@FYQSFTTJPO^w BUPNJD@TZNCPM TQBDFcJEFOUJpFScTUSJOHcOVNFSJD
-JTQ5JOZ1BSTFSIUUQTHJUIVCDPN$PEF)FYQ-JTQ5JOZCMPCNBTUFSMJC-JTQ5JOZ1BSTFSQN
ύʔαʔͷॻ͖ํˣ
ύʔεޙ
7.ͷ࡞-JTQͷ࣮ߦ෦Λ࡞
͜ͷ-JTQͰͰ͖Δ͜ͱ
w άϩʔόϧมఆٛw ϩʔΧϧมఆٛw ࢛ଇԋࢉw ग़ྗ
-JTQ5JOZ7.IUUQTHJUIVCDPN$PEF)FYQ-JTQ5JOZCMPCNBTUFSMJC-JTQ5JOZ7.QN
ม͔ΒऔΓग़͠
ϩʔΧϧม֨ೲ
ஞ࣍ॲཧΛߦͬͯΛฦ͢
άϩʔόϧม֨ೲ
CVJMUJOϧʔνϯͷݺͼग़͠
3FQMͷ࡞3FQMΛ࡞Δ
rDPEFIFY5FSN3FBE-JOFΛ͍͍͑ײ͡Ͱͨ͠
σϞ
͜ΕͰ-JTQΛ֮͑ΒΕͨʁ
͋ΔఔཧղͰ͖ͨɻ
QSJOU'JO