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

LintオタクによるLint解説 / Introduction to Lints

Kuniwak
November 18, 2022

LintオタクによるLint解説 / Introduction to Lints

Kuniwak

November 18, 2022
Tweet

More Decks by Kuniwak

Other Decks in Programming

Transcript

  1. -JOUΦλΫʹ ΑΔ-JOUղઆ -JOU/JHIU,VOJXBL

  2. ,VOJXBL 7JNTDSJQUͷ-JOUͰ͋Δ7JOUͷ࡞ऀɻ -JOU͕޷͖͗ͯ͢Φʔϓϯιʔεͷ -JOUͷίʔυΛಡΈړ͍ͬͯΔɻ Ͱ-JOUͷ։ൃ΋͍ͯ͠Δɻ 2

  3. ͜ͷൃදͰ఻͍͑ͨ͜ͱ 3

  4. 4 -JOUͷڭཆ -JOUͱ͸ -JOUͷݕग़͢Δ໰୊ -JOUͷߏ଄ -JOUͷޮՌతͳ࢖͍ํ

  5. 5 -JOUͷڭཆ -JOUͱ͸ -JOUͷݕग़͢Δ໰୊ -JOUͷߏ଄ -JOUͷޮՌతͳ࢖͍ํ

  6. ίʔυͱઃఆΛೖྗͱͯ͠ϓϩάϥϜͷ໰୊Λ੩తʹ ݕग़͢Δπʔϧͷ͜ͱ ࣗવݴޠͰॻ͔ΕͨจॻͱઃఆΛೖྗͱͯ͠ จॻͷ໰୊Λݕग़͢Δπʔϧͷ͜ͱ 6 -JOUͱ͸ʢ߹ҙ͞Εͨఆٛ͸ͳ͍ͷͰ஫ҙʣ 1 2

  7. ίʔυͱઃఆΛೖྗͱͯ͠ϓϩάϥϜͷ໰୊Λ੩తʹ ݕग़͢Δπʔϧͷ͜ͱ ࣗવݴޠͰॻ͔ΕͨจॻͱઃఆΛೖྗͱͯ͠ จॻͷ໰୊Λݕग़͢Δπʔϧͷ͜ͱ 7 -JOUͱ͸ʢ߹ҙ͞Εͨఆٛ͸ͳ͍ͷͰ஫ҙʣ 2 ੩తʹݕग़͢Δͱ͸ɺϓϩάϥϜΛ ࣮ࡍʹ࣮ߦ͢Δ͜ͱͳ͘໰୊Λ ݕग़͢Δͱ͍͏ҙຯ

    1
  8. :BDDͰ༗໊ͳ4$+PIOTPO͕೥ʹ։ൃͨ͠$ݴޠͷ ੩తݕࠪثͷ໊લ͕-JOUͩͬͨ͜ͱʹ༝དྷ͢Δɻ ࠓͰ͸͜ͷ-JOUʹࣅͨ੩తݕࠪثશൠ͕-JOUͱݺ͹Ε͍ͯΔɻ ΋ͱ΋ͱ-JOUͱ͸ࢳͣ͘ͷҙຯͰɺࢳͣ͘औΓΛΠϝʔδͯ͠ -JOUͱ໊෇͚ΒΕͨΒ͍͠ɻ UFYUMJOUͷొ৔͔Β-JOUͷࢦ͢੩తݕࠪث͸ࣗવݴޠͷจॻΛ ର৅ͱ͢Δ΋ͷʹ·Ͱ޿͕͍ͬͯΔɻ 8 -JOUͷ໊લͷ༝དྷ

  9. 9 -JOUͷڭཆ -JOUͱ͸ -JOUͷݕग़͢Δ໰୊ -JOUͷߏ଄ -JOUͷޮՌతͳ࢖͍ํ

  10. -JOU͕ ݕग़͢Δ ໰୊ ॲཧܥ͕੩తʹ ݕग़͢Δ໰୊ ୯७ͳઃఆΛ΋ͱʹ੩తʹݕग़Ͱ͖Δ ϓϩάϥϜͷ໰୊ͷ͏ͪɺॲཧܥ ʢίϯύΠϥ΍ΠϯλϓϦλʣ͕ ݕग़͠ͳ͍΋ͷɻ ࣗવݴޠͷ໰୊ʹ͍ͭͯ͸ಈ੩ͷ

    ֓೦͕ͳ͍ͷͰ͍͍ͩͨશ෦ɻ -JOUͷݕग़͢Δ໰୊ 10
  11. 11 -JOU͕ ݕग़͢Δ ໰୊ ॲཧܥ͕੩తʹ ݕग़͢Δ໰୊ ॲཧܥͱ-JOUͷݕग़ର৅͸ݴޠ͝ͱʹҟͳΔ -JOU͕ ݕग़͢Δ ໰୊

    ॲཧܥ͕੩తʹ ݕग़͢Δ໰୊ 5ZQF4DSJQU $ (P  1FSM 3VCZ +BWB4DSJQU 
  12. 12 -JOUͷݕग़͢Δ໰୊ͷྫ ఆٛʹ߹ҙͷऔΕͳ͍໰୊ ಈతʹ͔͠ݕग़͞Ε͍ͯͳ͍໰୊ 1 2

  13. 13 ໰୊ͷఆٛʹ߹ҙͷऔΕͳ͍΋ͷ  ݹདྷΑΓਓྨ͸ίʔσΟϯάελΠϧͰ૪͖ͬͯͨɻ ͍·΋૪͍ͷܾண͸͍͍ͭͯͳ͍ͨΊॲཧܥ͕ ίʔσΟϯάελΠϧΛݕࠪ͢Δ͜ͱ͸ ΄ͱΜͲͳ͘ɺ-JOUͷ໾ׂʹͳ͍ͬͯΔɻ ͨͩ͠Ұ෦ͷॲཧܥ͸ΠϯσϯτΛ ݕࠪ͢Δ͜ͱ͕͋ΔʢΦϑαΠυϧʔϧͱ͍͏ʣɻ 1

  14. 14 ໰୊ͷఆٛʹ߹ҙͷऔΕͳ͍΋ͷ  ͲͷϑϨʔϜϫʔΫΛ࢖͏͔ɺ͋Δ͍͸࢖Θͳ͍͔͸ ࣗ༝Ͱ͋ΔͷͰɺϑϨʔϜϫʔΫݻ༗ͷ࢖͍ํͷ ໰୊΋ॲཧܥ͕ݕग़͢Δ͜ͱ͸ͳ͍ɻ-JOUͷग़൪ɻ 1

  15. 15 ಈతʹ͔͠ݕग़͞Ε͍ͯͳ͍໰୊ ಈతʹݕग़͞ΕΔ໰୊Λ੩తʹݕग़͢Δͷ΋-JOUͷ ໾ׂͷ̍ͭɻ࠷ۙͰ͸͞·͟·ͳಈతܕݕ͖ࠪͭ ϓϩάϥϛϯάݴޠʹ੩తܕݕࠪΛ͢Δ-JOU͕ ొ৔͍ͯ͠ΔʢNZQZ 'MPX 4PSCFU 1)14UBO ʣɻ

    2
  16. 16 -JOUͷڭཆ -JOUͱ͸ -JOUͷݕग़͢Δ໰୊ -JOUͷߏ଄ -JOUͷޮՌతͳ࢖͍ํ

  17. ςετɾϨϏϡʔҎ߱Ͱݕग़͞Ε͍ͯͨ ໰୊Λ-JOUͰݕग़͢Δ 17 -JOUͷޮՌతͳ࢖͍ํ

  18. 18 ͳͥޮՌతͱओு͍ͯ͠Δͷ͔

  19. 19 ߏจղੳ -JOUίϯύΠϧ࣌ݕࠪ ୯ମɾ݁߹ςετϨϏϡʔ γεςϜςετ ຊ൪؀ڥͰͷΤϥʔऩू Ϣʔβʔ͔Βͷ͓໰͍߹Θͤ ໰ ୊ Λ

    ݕ ग़ ͢ Δ ͨ Ί ͷ ख ஈ
  20. 20 ߏจղੳ -JOUίϯύΠϧ࣌ݕࠪ ୯ମɾ݁߹ςετϨϏϡʔ γεςϜςετ ຊ൪؀ڥͰͷΤϥʔऩू Ϣʔβʔ͔Βͷ͓໰͍߹Θͤ ্͔Βॱʹݕࠪ͞ΕΔ ໰୊9 ໰

    ୊ Λ ݕ ग़ ͢ Δ ͨ Ί ͷ ख ஈ
  21. 21 ߏจղੳ -JOUίϯύΠϧ࣌ݕࠪ ୯ମɾ݁߹ςετϨϏϡʔ γεςϜςετ ຊ൪؀ڥͰͷΤϥʔऩू Ϣʔβʔ͔Βͷ͓໰͍߹Θͤ ໰୊Λݕग़͢Δͱࢭ·Δ ໰୊9 ໰

    ୊ Λ ݕ ग़ ͢ Δ ͨ Ί ͷ ख ஈ
  22. 22 ߏจղੳ -JOUίϯύΠϧ࣌ݕࠪ ୯ମɾ݁߹ςετϨϏϡʔ γεςϜςετ ຊ൪؀ڥͰͷΤϥʔऩू Ϣʔβʔ͔Βͷ͓໰͍߹Θͤ ໰୊9 ໰୊: ্ͷํͷखஈͰࢭ·Δͱ

    ௿ίετͰ໰୊Λݕग़Ͱ͖Δ ಛघͳ໰୊͸Լͷํͷ खஈͰ͔͠ݕग़Ͱ͖ͳ͍ ໰ ୊ Λ ݕ ग़ ͢ Δ ͨ Ί ͷ ख ஈ
  23. 23 ߏจղੳ -JOUίϯύΠϧ࣌ݕࠪ ୯ମɾ݁߹ςετϨϏϡʔ γεςϜςετ ຊ൪؀ڥͰͷΤϥʔऩू Ϣʔβʔ͔Βͷ͓໰͍߹Θͤ -JOU͸͜ͷҐஔ ໰ ୊

    Λ ݕ ग़ ͢ Δ ͨ Ί ͷ ख ஈ
  24. 24 ߏจղੳ -JOUίϯύΠϧ࣌ݕࠪ ୯ମɾ݁߹ςετϨϏϡʔ γεςϜςετ ຊ൪؀ڥͰͷΤϥʔऩू Ϣʔβʔ͔Βͷ͓໰͍߹Θͤ ΋͠-JOUΛ࢖͍ͬͯͳ͍ͱɺ -JOUͰݕग़Ͱ͖Δ໰୊ΛΑΓ ߴίετͳςετ΍ϨϏϡʔͰ

    ݕग़͠ͳ͍ͱ͍͚ͳ͘ͳΔ ܕΤϥʔ ػೳͷޡ༻ ໰ ୊ Λ ݕ ग़ ͢ Δ ͨ Ί ͷ ख ஈ
  25. 25 ߏจղੳ -JOUίϯύΠϧ࣌ݕࠪ ୯ମɾ݁߹ςετϨϏϡʔ γεςϜςετ ຊ൪؀ڥͰͷΤϥʔऩू Ϣʔβʔ͔Βͷ͓໰͍߹Θͤ -JOUΛ࢖͏͜ͱͰɺΑΓ ௿ίετͰ໰୊Λݕग़Ͱ͖Δ ܕΤϥʔ

    ػೳͷޡ༻ ໰ ୊ Λ ݕ ग़ ͢ Δ ͨ Ί ͷ ख ஈ
  26. 26 Ͳ͏΍࣮ͬͯݱ͢Δͷ͔

  27. 27 -JOUΛ࢖࣮ͬͨݱํ๏ͷྫ w ܕΤϥʔͷݕग़ ‎ ੩తܕݕࠪͷͰ͖Δ-JOUΛಋೖ͢Δ w ίʔσΟϯάελΠϧҧ൓ͷݕग़ ‎ -JOUͷઃఆΛڞ༗͢Δ͜ͱͰ࣮ݱͰ͖Δ

    w ϓϩδΣΫτ಺Ͱ࣮૷͞Εͨػೳͷޡ༻ͷݕग़ ‎ -JOUͷϧʔϧΛ࣮૷࣮ͯ͠ݱͰ͖Δ
  28. 28 -JOUΛ࢖࣮ͬͨݱํ๏ͷྫ w ܕΤϥʔͷݕग़ ‎ ੩తܕݕࠪͷͰ͖Δ-JOUΛಋೖ͢Δ w ίʔσΟϯάελΠϧҧ൓ͷݕग़ ‎ -JOUͷઃఆΛڞ༗͢Δ͜ͱͰ࣮ݱͰ͖Δ

    w ϓϩδΣΫτ಺Ͱ࣮૷͞Εͨػೳͷޡ༻ͷݕग़ ‎ -JOUͷϧʔϧΛ࣮૷࣮ͯ͠ݱͰ͖Δ ͜ͷͨΊʹ͸-JOUͷ ߏ଄Λ஌Δඞཁ͕͋Δ
  29. 29 -JOUͷڭཆ -JOUͱ͸ -JOUͷݕग़͢Δ໰୊ -JOUͷߏ଄ -JOUͷޮՌతͳ࢖͍ํ

  30. 30 -JOUͷߏ଄ w -JOUͷߏ଄͸ͲΕ΋ࣅ௨͍ͬͯΔͷͰɺͭΛ ಡΊΔΑ͏ʹͳΔͱଞͷ΋ಡΊΔΑ͏ʹͳΔ w ॲཧͷྲྀΕ΋தؒσʔλ͕ҟͳΔ͚ͩͰ΄ͱΜͲಉ͡ w ѻ͏ओͳதؒσʔλ͸ɿ w

    τʔΫϯྻ w ந৅ߏจ໦ w ੍ޚϑϩʔάϥϑʢࠓճ͸ׂѪʣ
  31. 31 -JOUͷ୅දతͳߏ଄ ݕࠪϧʔϧΛԣஅ͢Δॲཧ ʢ$-*ͷఏڙɺݕࠪ༰қͳσʔλ΁ͷม׵ɺݕࠪϧʔϧͷ࣮ߦʣ ݕࠪ ϧʔϧ ݕࠪ ϧʔϧ ݕࠪ ϧʔϧ

    ݕࠪ ϧʔϧ ݕࠪϧʔϧ͝ͱʹݸผͷ ίϯϙʔωϯτͱ࣮ͯ͠૷͠ɺ ԣஅॲཧΛݕࠪϧʔϧʹ ґଘͤ͞ͳ͍ߏ଄͕΄ͱΜͲɻ ͳ͓-JOUͷίʔυΛಡΉ ࡍʹ͸ɺίʔυྔͷগͳ͍ ݕࠪϧʔϧ͔Β͕͓͢͢Ίɻ ґ ଘ ݩ ґ ଘ ઌ
  32. 32 -JOU ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ -JOUͷॲཧͷྲྀΕ

  33. 33 -JOU ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ίʔσΟϯάελΠϧΛݕࠪ͢Δ-JOUͷྫ ࣈ۟

    ղੳ τʔΫϯྻ ʢޙड़ʣ ݕࠪ
  34. 34 ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ΑΓߴ౓ͳݕࠪΛ͢Δ-JOUͷྫ ߏจ ղੳ

    ݕࠪ ந৅ߏจ໦ ʢޙड़ʣ -JOU
  35. 35 ݕ͍ࠪͨ͠ ιʔείʔυ ݕग़ͨ͠ ໰୊ͷҰཡ ॲཧͷྲྀΕͷൺֱ ࣈ۟ ղੳ ݕࠪ τʔΫϯྻ

    ʢޙड़ʣ ݕ͍ࠪͨ͠ ιʔείʔυ ݕग़ͨ͠ ໰୊ͷҰཡ ݕࠪ ந৅ߏจ໦ ʢޙड़ʣ ߏจ ղੳ ͜ͷ෦෼͕ҟͳΔ͚ͩ
  36. 36 -JOU ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ίʔσΟϯάελΠϧΛݕࠪ͢Δ-JOUͷྫ ࣈ۟

    ղੳ τʔΫϯྻ ʢޙड़ʣ ݕࠪ
  37. 37 τʔΫϯྻ τʔΫϯྻ function helloWorld ( ) { console .

    log τʔΫϯͱ͸ɺιʔείʔυͷ จࣈྻʹग़ݱ͢ΔҙຯΛ࣋ͬͨ ࠷খ୯Ґͷ͜ͱ
  38. 38 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    τʔΫϯྻ τʔΫϯྻ function helloWorld ( ) { console . log ؆୯ͳ+BWB4DSJQUͷιʔείʔυ ͷτʔΫϯΛݟͯΈΑ͏ ͜ͷίʔυͷઌ಄͔ΒॱʹԿ͕ τʔΫϯʹͳΔͷ͔Λݟ͍ͯ͘
  39. 39 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    τʔΫϯྻ τʔΫϯྻ function helloWorld ( ) { console . log τʔΫϯ
  40. 40 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    τʔΫϯྻ τʔΫϯྻ function helloWorld ( ) { console . log τʔΫϯ
  41. 41 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    τʔΫϯྻ τʔΫϯྻ function helloWorld ( ) { console . log τʔΫϯ
  42. 42 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    τʔΫϯྻ τʔΫϯྻ function helloWorld ( ) { console . log τʔΫϯ
  43. 43 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    τʔΫϯྻ τʔΫϯྻ function helloWorld ( ) { console . log τʔΫϯ
  44. 44 τʔΫϯྻ τʔΫϯྻ τʔΫϯͱ͸ɺιʔείʔυͷ จࣈྻʹग़ݱ͢ΔҙຯΛ࣋ͬͨ ࠷খ୯Ґͷ͜ͱ function helloWorld ( )

    { console . log
  45. 45 τʔΫϯྻ τʔΫϯྻ τʔΫϯྻͱ͸ɺιʔείʔυͷ จࣈྻʹग़ݱ͢ΔॱʹτʔΫϯΛ ฒ΂ͨ΋ͷ function helloWorld ( )

    { console . log
  46. 46 -JOU ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ίʔσΟϯάελΠϧΛݕࠪ͢Δ-JOUͷྫ ࣈ۟

    ղੳ τʔΫϯྻ ʢޙड़ʣ ݕࠪ
  47. 47 -JOU ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ίʔσΟϯάελΠϧΛݕࠪ͢Δ-JOUͷྫ ࣈ۟

    ղੳ τʔΫϯྻ ʢޙड़ʣ ݕࠪ
  48. 48 τʔΫϯྻ τʔΫϯྻ with ( obj ) { console .

    log XJUIจͷར༻Λݕग़͢Δ-JOUͷ ॲཧͷྲྀΕΛΈͯΈΑ͏
  49. 49 τʔΫϯྻ τʔΫϯྻ with ( obj ) { console .

    log // ېࢭ͞Ε͍ͯΔ with จΛ࢖͍ͬͯΔ with (obj) { console.log(obj); }
  50. 50 τʔΫϯྻ τʔΫϯྻ with ( obj ) { console .

    log // ېࢭ͞Ε͍ͯΔ with จΛ࢖͍ͬͯΔ with (obj) { console.log(obj); }
  51. 51 τʔΫϯྻ τʔΫϯྻ with ( obj ) { console .

    log // ېࢭ͞Ε͍ͯΔ with จΛ࢖͍ͬͯΔ with (obj) { console.log(obj); } τʔΫϯྻͷઌ಄͔Βॱʹɺ τʔΫϯ͕XJUIΩʔϫʔυ͔ Ͳ͏͔ௐ΂Δ͜ͱͰɺXJUIจͷ ࢖༻Λݕग़Ͱ͖Δ
  52. 52 τʔΫϯྻ τʔΫϯྻ with ( obj ) { console .

    log // ېࢭ͞Ε͍ͯΔ with จΛ࢖͍ͬͯΔ with (obj) { console.log(obj); } XJUIΩʔϫʔυͷൃݟʹΑΓ XJUIจͷ࢖༻Λݕग़Ͱ͖ͨ
  53. 53 ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ΑΓߴ౓ͳݕࠪΛ͢Δ-JOUͷྫ ߏจ ղੳ

    ݕࠪ ந৅ߏจ໦ ʢޙड़ʣ -JOU
  54. 54 ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ΑΓߴ౓ͳݕࠪΛ͢Δ-JOUͷྫ ߏจ ղੳ

    ݕࠪ ந৅ߏจ໦ ʢޙड़ʣ -JOU
  55. 55 ந৅ߏจ໦ͱ͸ɺݴޠ͝ͱͷنଇʹ ͕ͨͬͯ͠ιʔείʔυΛ ໦ߏ଄Ͱ͋ΒΘͨ͠΋ͷͷ͜ͱ ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier

    CallExpr Identifier Identifier MemExpr Literal
  56. 56 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ؆୯ͳ+BWB4DSJQUͷιʔείʔυ ͷந৅ߏจ໦ΛݟͯΈΑ͏ ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier CallExpr Identifier Identifier MemExpr Literal ந৅ߏจ໦Λཧղ͢Δʹ͸ɺ༿͔Β ରԠ͢Δ෦෼ΛΈ͍ͯ͘ͱΑ͍
  57. 57 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier CallExpr Identifier MemExpr Literal Identifier
  58. 58 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier CallExpr MemExpr Identifier Literal Identifier
  59. 59 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier CallExpr Literal MemExpr Identifier Identifier
  60. 60 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier CallExpr Identifier MemExpr Identifier Literal
  61. 61 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier CallExpr Literal MemExpr Identifier Identifier
  62. 62 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier CallExpr Literal MemExpr Identifier Identifier
  63. 63 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ந৅ߏจ໦ Program FuncDecl BlockStmt Identifier CallExpr ExprStmt Literal MemExpr Identifier Identifier
  64. 64 /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); }

    ந৅ߏจ໦ Program FuncDecl BlockStmt Identifier CallExpr ExprStmt Literal MemExpr Identifier Identifier
  65. 65 ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ΑΓߴ౓ͳݕࠪΛ͢Δ-JOUͷྫ ߏจ ղੳ

    ݕࠪ ந৅ߏจ໦ ʢޙड़ʣ -JOU
  66. 66 ݕ͍ࠪͨ͠ ιʔείʔυ ݕࠪϧʔϧ ͝ͱͷઃఆ ݕग़ͨ͠ ໰୊ͷҰཡ ΑΓߴ౓ͳݕࠪΛ͢Δ-JOUͷྫ ߏจ ղੳ

    ݕࠪ ந৅ߏจ໦ ʢޙड़ʣ -JOU
  67. 67 DPOTPMFMPHݺͼग़͠Λݕग़͢Δ -JOUͷॲཧͷྲྀΕΛΈͯΈΑ͏ ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt Identifier CallExpr

    Identifier Identifier MemExpr Literal
  68. 68 ந৅ߏจ໦Λਂ͞༏ઌͰ୳ࡧ͠ɺ ஫໨͍ͨ͠෦෼໦ͷࠜΛݟ͚ͭΔ ࠓճ͸ؔ਺ݺͼग़͠ʹ஫໨͍ͨ͠ ͷͰɺ$BMM&YQSཁૉΛ୳͢ ந৅ߏจ໦ Program FuncDecl BlockStmt ExprStmt

    Identifier CallExpr Identifier Identifier MemExpr Literal
  69. 69 ந৅ߏจ໦ FuncDecl BlockStmt ExprStmt Identifier CallExpr Identifier Identifier MemExpr

    Literal Program $BMM&YQSͰͳ͍ͷͰແࢹ
  70. 70 ந৅ߏจ໦ BlockStmt ExprStmt Identifier CallExpr Identifier Identifier MemExpr Literal

    Program FuncDecl $BMM&YQSͰͳ͍ͷͰແࢹ
  71. 71 ந৅ߏจ໦ BlockStmt ExprStmt CallExpr Identifier Identifier MemExpr Literal Program

    FuncDecl Identifier $BMM&YQSͰͳ͍ͷͰແࢹ
  72. 72 ந৅ߏจ໦ ExprStmt CallExpr Identifier Identifier MemExpr Literal Program FuncDecl

    Identifier BlockStmt $BMM&YQSͰͳ͍ͷͰແࢹ
  73. 73 ந৅ߏจ໦ CallExpr Identifier Identifier MemExpr Literal Program FuncDecl Identifier

    BlockStmt ExprStmt $BMM&YQSͰͳ͍ͷͰແࢹ
  74. 74 ந৅ߏจ໦ Identifier Identifier MemExpr Literal Program FuncDecl Identifier BlockStmt

    ExprStmt CallExpr $BMM&YQSΛൃݟͨ͠
  75. 75 ந৅ߏจ໦ Identifier Identifier MemExpr Literal Program FuncDecl Identifier BlockStmt

    ExprStmt CallExpr $BMM&YQSΛൃݟͨ͠Βɺ͜ͷ ؔ਺ݺͼग़͕͠DPOTPMFMPHͷ ݺͼग़͠Ͱ͋Δ͜ͱΛ֬ೝ͢Δ ۩ମతʹ͸ɺݺͼग़͠ର৅͕ DPOTPMF͔ΒMPHϓϩύςΟΛ ࢀর͢Δ.FN&YQSͰ͋Δ͜ͱΛ ֬ೝ͢Ε͹ྑ͍
  76. 76 ந৅ߏจ໦ Literal Program FuncDecl Identifier BlockStmt ExprStmt CallExpr Identifier

    Identifier MemExpr /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); } ݺͼग़͠ର৅͕DPOTPMFMPHͰ͋Δ͜ͱΛ֬ೝ
  77. 77 ந৅ߏจ໦ Literal Program FuncDecl Identifier BlockStmt ExprStmt CallExpr Identifier

    Identifier MemExpr /** ϋϩʔϫʔϧυΛදࣔ͢Δ */ function helloWorld() { console.log("Hello, World!"); } DPOTPMFMPHͷؔ਺ݺͼग़͠Λݕग़Ͱ͖ͨ
  78. 78 -JOUͷߏ଄ͷ͓͞Β͍ w -JOUͷߏ଄͸ͲΕ΋ࣅ௨͍ͬͯΔͷͰɺͭΛ ಡΊΔΑ͏ʹͳΔͱଞͷ΋ಡΊΔΑ͏ʹͳΔ w ॲཧͷྲྀΕ΋தؒσʔλ͕ҟͳΔ͚ͩͰ΄ͱΜͲಉ͡ w ѻ͏ओͳதؒσʔλ͸ɿ w

    τʔΫϯྻ w ந৅ߏจ໦ w ੍ޚϑϩʔάϥϑʢࠓճ͸ׂѪʣ
  79. ·ͱΊ 79

  80. 80 -JOUͷڭཆ -JOUͱ͸ -JOUͷݕग़͢Δ໰୊ -JOUͷߏ଄ -JOUͷޮՌతͳ࢖͍ํ