$30 off During Our Annual Pro Sale. View Details »

ZendEngineを真面目にいじって正規表現リテラルを追加した話

久保田光則
March 03, 2013
3.7k

 ZendEngineを真面目にいじって正規表現リテラルを追加した話

久保田光則

March 03, 2013
Tweet

More Decks by 久保田光則

Transcript

  1. ;FOE&OHJOFΛਅ໘໨ʹ͍ͬͯ͡
    ਖ਼نදݱϦςϥϧΛ௥Ճͨ͠࿩
    ೥݄೔ҋ1)1ษڧձ!BOBUPP
    13೥3݄4೔݄༵೔

    View Slide

  2. ΞδΣϯμ
    wࣗݾ঺հ
    wਖ਼نදݱϦςϥϧ࣮૷ͨ͠
    wͲΜͳײ͡Ͱ࡞ۀͨ͠ͷ͔
    13೥3݄4೔݄༵೔

    View Slide

  3. ࣗݾ঺հ
    ͍͍ͻͱɻ
    !BOBUPP
    13೥3݄4೔݄༵೔

    View Slide

  4. ࣗݾ঺հ
    wJEBOBUPPͰϒϩάॻ͍ͯΔ
    wຊ৬ͷݞॻ͖͸ʮ6*69σβΠφʔ݉
    ιϑτ΢ΣΞΤϯδχΞʯ
    w࢓ࣄͩͱ͜͜൒೥Ҏ্σβΠϯ͹͔ͬ
    Γ΍ͬͯ·͢
    13೥3݄4೔݄༵೔

    View Slide

  5. ࠓճͷ͓࿩
    w1)1ʹਖ਼نදݱϦςϥϧ࣮૷ͯ͠Έͨ
    Αʕͱ͍͏࿩
    13೥3݄4೔݄༵೔

    View Slide

  6. ਖ਼نදݱϦςϥϧͬͯԿ
    w1)1ʹ͸ͳ͍
    wଞͷݴޠʹ͸Α͋͘Δ
    w1FSM 1ZUIPO +BWB4DSJQU 3VCZ FUD
    13೥3݄4೔݄༵೔

    View Slide

  7. ͦ΋ͦ΋ͷಈػ
    wଞͷݴޠ࢖͍ʹͨ·ʹઞΒΕΔ
    ʮ1)1ͬͯਖ਼نදݱϦςϥϧ
    ΋ແ͍ͷϓΪϟʔ ""ུʯ
    13೥3݄4೔݄༵೔

    View Slide

  8. ͍ͭΧοͱͳͬͯ
    wਖ਼نදݱϦςϥϧΛ࣮૷ͯ͠Έͨ
    13೥3݄4೔݄༵೔

    View Slide

  9. 1)1ʹ࣮૷ͨ͠
    ਖ਼نදݱϦςϥϧ
    wී௨
    w3FHFYΦϒδΣΫτΛੜ੒
    QIQ
    SFHFYIPHF
    NBUDIFTSFHFYNBUDI bGVHBIPHF`

    13೥3݄4೔݄༵೔

    View Slide


  10. QIQ
    ௚઀ϝιουݺͼग़͠΋͍͚Δ
    IPHF
    NBUDI bGVHBIPHF`

    GVHB
    SFQMBDF bGVHBGVHB` bIPHF`

    wී௨
    13೥3݄4೔݄༵೔

    View Slide

  11. σϞ
    13೥3݄4೔݄༵೔

    View Slide

  12. ΍ͬͯΈͯࢥͬͨ͜ͱ
    wύον͕ࠓͷॴߦ͙Β͍
    w·Μ΂Μͳ͘खΛ͍ΕΔࣄʹͳͬͨ
    wIUUQTHJTUHJUIVCDPNBOBUPP

    13೥3݄4೔݄༵೔

    View Slide

  13. ۩ମతʹ͍ͬͨ͡ͱ͜Ζ
    wࣈ۟ղੳ
    wߏจղੳ
    wίϯύΠϧ
    w7.Ͱͷ࣮ߦ
    w૊ΈࠐΈΫϥεͷ௥Ճ
    ࠓ͔Β΍ͬͨ͜ͱΛͩΒͩΒઆ໌͠·͢
    13೥3݄4೔݄༵೔

    View Slide

  14. ·ͣ͸લ४උ
    13೥3݄4೔݄༵೔

    View Slide

  15. ιʔείʔυͷऔಘ
    wHJUIVCʹϛϥʔ͕ஔ͍ͯ͋Δ
    HJUDMPOFIUUQHJUIVCDPNQIQQIQTSDHJU
    DEQIQTSD
    13೥3݄4೔݄༵೔

    View Slide

  16. Ϗϧυ
    wσόοάγϯϘϧ෇͖ͰϏϧυ
    CVJMEDPOG
    DPOpHVSFFOBCMFEFCVHEJTBCMFBMM
    NBLF
    CVJMEDPOGGPSDF
    w࠶౓CVJMEDPOG͢Δͱ͖͸GPSDFΛ͚ͭΔ
    13೥3݄4೔݄༵೔

    View Slide

  17. CVJMEDPOGͬͯԿ
    wDPOpHVSFϑΝΠϧΛੜ੒
    wQIQͷϏϧυγεςϜͰ͸ɺDPOpHVSF
    εΫϦϓτͷੜ੒ʹBVUPDPOGΛ࢖ͬͯ
    Δ
    13೥3݄4೔݄༵೔

    View Slide

  18. ςετΛಈ͔͢
    NBLFUFTU
    FYQPSU5&454;FOEUFTUTQIQU
    NBLFUFTU
    wશςετέʔε࣮ߦ ͔͔࣌ؒΔ

    wಛఆͷςετέʔεͷΈ࣮ߦ
    13೥3݄4೔݄༵೔

    View Slide

  19. (%#σόοΨͰಈ͔͢
    wࣗ෼͸HEC͡Όͳͯ͘DHEC࢖ͬͯ·͢
    HECTBQJDMJQIQ
    13೥3݄4೔݄༵೔

    View Slide

  20. σϞ
    13೥3݄4೔݄༵೔

    View Slide

  21. σΟϨΫτϦߏ଄
    MT'cHSFQ
    543.
    ;FOEݴޠॲཧܥͷίΞɻ
    CVJME
    FYU
    NBJO
    OFUXBSF
    QFBS
    TBQJ
    TDSJQUT
    UFTUT
    XJO
    13೥3݄4೔݄༵೔

    View Slide

  22. (/6HMPCBMͷಋೖ
    wιʔείʔυಡΉͷʹඞਢͷπʔϧ
    HUBHTWλάϑΝΠϧੜ੒
    IUBHTWT
    13೥3݄4೔݄༵೔

    View Slide

  23. σϞ
    13೥3݄4೔݄༵೔

    View Slide

  24. લ४උऴྃ
    13೥3݄4೔݄༵೔

    View Slide

  25. ࣮ࡍͷ͍͡Γํ
    ίʔυΛ͍͡Δ
    NBLF͢Δ
    ςετέʔε૸ΒͤΔ
    όά͕͋ͬͨΒ
    HEC΍QSJOUGσόοάͰݪҼಛఆ
    ͜Εͷ܁Γฦ͠
    13೥3݄4೔݄༵೔

    View Slide

  26. ࣮ࡍʹ͍͍ͬͯ͘͡
    wࣈ۟ղੳ
    wߏจղੳ
    wίϯύΠϥ
    w7.
    13೥3݄4೔݄༵೔

    View Slide

  27. ࣈ۟ղੳثΛ͍͡Δ
    13೥3݄4೔݄༵೔

    View Slide

  28. SFD஌ͬͯΔਓ
    w1)1ͷࣈ۟ղੳث͸SFDΛ࢖ͬͯੜ੒
    w;FOE[FOE@MBOHVBHF@TDBOOFSM
    13೥3݄4೔݄༵೔

    View Slide

  29. ద౰ʹ͍ͬͯ͡ΈΔ
    w࣮ࡍͷίʔυΛݟͳ͕Βɻ
    wྫ5@)&--0803-%τʔΫϯΛ௥Ճ
    13೥3݄4೔݄༵೔

    View Slide

  30. ߏจղੳثΛ͍͡Δ
    13೥3݄4೔݄༵೔

    View Slide

  31. CJTPO஌ͬͯΔਓ
    w1)1ͷࣈ۟ղੳث͸CJTPOΛ࢖ͬͯهड़
    w;FOE[FOE@MBOHVBHF@QBSTFSZ
    wద౰ͳύλʔϯΛ௥Ճͯ͠ΈΔ
    13೥3݄4೔݄༵೔

    View Slide

  32. ίϯύΠϥΛ͍͡Δ
    wCJTPOͷΞΫγϣϯ಺ͰύʔαͷΞΫ
    γϣϯͳ͍Ͱ7.༻ͷίʔυΛੜ੒
    w;&/%@/&8@3&(&9ͱ͍͏໋ྩΛ
    13೥3݄4೔݄༵೔

    View Slide

  33. 7.Λ͍͡Δ
    wਖ਼نදݱϦςϥϧ͔Β3FHFYΦϒδΣ
    ΫτΛ࡞੒͢Δ
    wͦͷͨΊʹ;&/%@/&8@3&(&9ͱ͍
    ͏৽໋͍͠ྩΛ࡞Δ
    13೥3݄4೔݄༵೔

    View Slide

  34. ໋ྩͷ௥Ճ
    w;FOE[FOE@7.@EFGIΛ͍͡Δ
    wσϞ
    13೥3݄4೔݄༵೔

    View Slide

  35. ໋ྩͷ௥Ճ
    QIQ;FOE[FOE@WN@HFOQIQ
    ͓΋ΉΖʹҎԼͷίϚϯυΛୟ͘
    1)1ͷ7.ͷίʔυ͕ੜ੒͞ΕΔ
    ;FOE[FOE@WN@FYFDVUFI
    13೥3݄4೔݄༵೔

    View Slide

  36. ࠓ໌͔͞ΕΔিܸͷࣄ࣮
    w1)1ͷ7.ͷίʔυੜ੒ʹ͸1)1͕࢖ΘΕͯ
    ͍Δ
    w1)1͕ແ͍ͱ1)1ͷ7.͕ίϯύΠϧͰ͖ͳ
    ͍ʂ॥؀͍ͯ͠Δ
    13೥3݄4೔݄༵೔

    View Slide

  37. wͳΜͰΘ͟Θ͟1)1Ͱ7.ͷίʔυੜ੒
    ͯ͠Δͷ͔
    ݴޠॲཧܥͷ಺෦7.ͷ໋ྩͷσΟεύονʹ͸
    ͍͔ͭ͘ͷ΍Γํ͕ଘࡏ͢Δɻ
    ͦΕΒΛ؆୯ʹ੾Γସ͑ΔͨΊɻ
    ৄ͘͠͸ʮ:"37.BOJBDTʲୈճʳ໋ྩσΟε
    ύονͷߴ଎ԽʯͰάάΔ
    13೥3݄4೔݄༵೔

    View Slide

  38. ผͷ໋ྩσΟεύον
    QIQ;FOE[FOE@WN@HFOQIQXJUIWN
    LJOE48*5$)
    wXJUIWNLJOEΦϓγϣϯΛ͚࣮ͭͯߦ
    w$"-- 48*5$) (050ͷ̏ͭɻ
    wIFMQ͚࣮ͭͯߦͰ࢖͑ΔΦϓγϣϯ͕Θ͔Δ
    13೥3݄4೔݄༵೔

    View Slide

  39. 3FHFYΫϥεͷ௥Ճ
    wਖ਼نදݱΦϒδΣΫτͷͨΊͷ૊Έࠐ
    ΈͷΫϥεΛ௥Ճ
    wී௨ͷ֦ுϥΠϒϥϦͷ΍ͬͯΔ͜ͱ
    ͱҰॹ
    13೥3݄4೔݄༵೔

    View Slide

  40. ·ͱΊ
    w1)1ʹ৽͍͠จ๏Λਅ໘໨ʹಋೖ͢Δ
    ͷ͚ͬ͜͏ΊΜͲ͍͘͞
    13೥3݄4೔݄༵೔

    View Slide

  41. ͜Ε͔Βͷల։
    1)18JLJʹ3'$ॻ͘
    QVMMSFRVFTUૹΔ
    1)1*OUFSOBMTͰఏҊ͢Δ
    ࣮૷͕͏·͍ͬͨ͘Β
    ޤ͏͝ظ଴
    13೥3݄4೔݄༵೔

    View Slide

  42. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    13೥3݄4೔݄༵೔

    View Slide

  43. "OZRVFTUJPO
    13೥3݄4೔݄༵೔

    View Slide