Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ValiantParsing

 ValiantParsing

D1c239babc57d9bbb8314f72c09844c1?s=128

Kazuhiro Ichikawa

August 02, 2019
Tweet

More Decks by Kazuhiro Ichikawa

Other Decks in Programming

Transcript

  1. Valiant Parsing ཧ࿦্࠷଎ͷจ຺ࣗ༝ݴޠͷߏจղੳख๏

  2. ߏจղੳ ೖྗจࣈྻ ݴޠ จࣈྻͷू߹  ग़ྗจࣈྻ͕ݴޠʹଐ͔͢Ͳ͏͔

  3. จ຺ࣗ༝ݴޠ ͋Δจࣈྻ͕ͦͷݴޠʹଐ͔͢Ͳ͏ ͔͸ɺपΓͷจ຺ʹґଘ͠ͳ͍ ม਺ଋറͱ͔͸දݱෆՄೳ

  4. จ຺ࣗ༝จ๏ จ຺ࣗ༝ݴޠͱ͍͏ू߹ͷੜ੒نଇ όοΧεɾφ΢Ξه๏Ͱهड़

  5. νϣϜεΩʔඪ४ܗ "#$ " # $ඇऴ୺ه߸  "Ћ Ћऴ୺ه߸  4Џ

    4։࢝ه߸ Џۭ
  6. ߏจղੳͷҰൠతղ๏ ऴ୺ه߸Λඇऴ୺ه߸ʹม͑Δ ྡΓ߹͏ඇऴ୺ه߸ಉ࢜Λ߹੒͢Δ ։࢝ه߸ʹḷΓ͚ͭ͹BDDFQU

  7. S → E E → E + E E →

    T T → T * T T → Num จ๏
  8. S → E E1 E → E E1 S →

    T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → * S → E E → E + E E → T T → T * T T → Num จ๏ ඪ४ܗ
  9. 1 + 2 * 3 * 4 S → E

    E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  10. 1 + 2 * 3 * 4 T,E,S N1 T,E,S

    N2 T,E,S N2 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  11. 1 + 2 * 3 * 4 T,E,S - N1

    T,E,S N2 T,E,S N2 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  12. 1 + 2 * 3 * 4 T,E,S - N1

    E1 T,E,S N2 T,E,S N2 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  13. 1 + 2 * 3 * 4 T,E,S - N1

    E1 T,E,S - N2 T,E,S N2 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  14. 1 + 2 * 3 * 4 T,E,S - N1

    E1 T,E,S - N2 T1 T,E,S N2 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  15. 1 + 2 * 3 * 4 T,E,S - N1

    E1 T,E,S - N2 T1 T,E,S - N2 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  16. 1 + 2 * 3 * 4 T,E,S - N1

    E1 T,E,S - N2 T1 T,E,S - N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  17. 1 + 2 * 3 * 4 T,E,S - E,S

    N1 E1 T,E,S - N2 T1 T,E,S - N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  18. 1 + 2 * 3 * 4 T,E,S - E,S

    N1 E1 - T,E,S - N2 T1 T,E,S - N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  19. 1 + 2 * 3 * 4 T,E,S - E,S

    N1 E1 - T,E,S - T,E,S N2 T1 T,E,S - N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  20. 1 + 2 * 3 * 4 T,E,S - E,S

    N1 E1 - T,E,S - T,E,S N2 T1 - T,E,S - N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  21. 1 + 2 * 3 * 4 T,E,S - E,S

    N1 E1 - T,E,S - T,E,S N2 T1 - T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  22. 1 + 2 * 3 * 4 T,E,S - E,S

    - N1 E1 - T,E,S - T,E,S N2 T1 - T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  23. 1 + 2 * 3 * 4 T,E,S - E,S

    - N1 E1 - E1 T,E,S - T,E,S N2 T1 - T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  24. 1 + 2 * 3 * 4 T,E,S - E,S

    - N1 E1 - E1 T,E,S - T,E,S - N2 T1 - T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  25. 1 + 2 * 3 * 4 T,E,S - E,S

    - N1 E1 - E1 T,E,S - T,E,S - N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  26. 1 + 2 * 3 * 4 T,E,S - E,S

    - E,S N1 E1 - E1 T,E,S - T,E,S - N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  27. 1 + 2 * 3 * 4 T,E,S - E,S

    - E,S N1 E1 - E1 - T,E,S - T,E,S - N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  28. 1 + 2 * 3 * 4 T,E,S - E,S

    - E,S N1 E1 - E1 - T,E,S - T,E,S - T,E,S N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  29. 1 + 2 * 3 * 4 T,E,S - E,S

    - E,S - N1 E1 - E1 - T,E,S - T,E,S - T,E,S N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  30. 1 + 2 * 3 * 4 T,E,S - E,S

    - E,S - N1 E1 - E1 - E1 T,E,S - T,E,S - T,E,S N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S S → E E1 E → E E1 S → T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → *
  31. S → E E1 E → E E1 S →

    T T1 E → T T1 T → T T1 E1 → N1 E T1 → N2 T S → Num E → Num T → Num N1 → + N2 → * 1 + 2 * 3 * 4 T,E,S - E,S - E,S - E,S N1 E1 - E1 - E1 T,E,S - T,E,S - T,E,S N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S
  32. $:,QBSTJOH ܭࢉྔ0 O

  33. ݟ֮͑ͷ͋Δࣶ໛༷ T,E,S - E,S - E,S - N1 E1 -

    E1 - T,E,S - T,E,S - T,E,S N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S
  34. ݟ֮͑ͷ͋Δࣶ໛༷ T,E,S - E,S - E,S N1 E1 - E1

    - T,E,S - T,E,S - T,E,S N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S T,E,S - E,S - E,S N1 E1 - E1 - T,E,S - T,E,S - T,E,S N2 T1 - T1 T,E,S - T,E,S N2 T1 T,E,S
  35. ݟ֮͑ͷ͋Δࣶ໛༷ - T,E,S - E,S - E,S - - -

    - N1 E1 - E1 - - - - - T,E,S - T,E,S - T,E,S - - - - N2 T1 - T1 - - - - - T,E,S - T,E,S - - - - - - N2 T1 - - - - - - - T,E,S - - - - - - - - - T,E,S - E,S - E,S - - - - N1 E1 - E1 - - - - - T,E,S - T,E,S - T,E,S - - - - N2 T1 - T1 - - - - - T,E,S - T,E,S - - - - - - N2 T1 - - - - - - - T,E,S - - - - - - - -
  36. ߦྻੵ ඇऴ୺ه߸ͷू߹Λཁૉͱ͢Δߦྻ ཁૉಉ࢜ͷܭࢉ͸Ͳ͏ఆٛ͞ΕΔʁ

  37. ୅਺ܥ ֻ͚ࢉ<" #ඇऴ୺ه߸ͷू߹ (จ๏>
 " #\YcB㱨" C㱨#  YBC 㱨(^

    ଍͠ࢉ
 " #"㱮#
  38. ୅਺ܥ ೚ҙͷඇऴ୺ه߸"ʹରͯ͠
 ""І㱨(ͱߟ͑Ε͹ɺ
 ͜ͷΑ͏ͳ୅਺ܥ͸൒؀Λͳ͢
 І͸ІЏΛදݱ͢Δඇऴ୺ه߸ 
 <ূ໌͸ಡऀͷԋश໰୊ͱ͢Δ>

  39. ෆಈ఺໰୊ ҎԼͷਤ͕ܭࢉͷεςοϓΛදݱ ࠷ޙ·Ͱܭࢉ͢Δͱ஋͸มԽ͠ͳ͘ͳΔ

  40. ෆಈ఺໰୊ ҎԼͷਤ͕ܭࢉͷεςοϓΛදݱ ࠷ޙ·Ͱܭࢉ͢Δͱ஋͸มԽ͠ͳ͘ͳΔ

  41. ޮ཰Α͘ղ͘ʹ͸ ෼ׂ౷࣏Λߦ͏ ߦྻͷେ͖͞͸ͷ΂͖৐ΛԾఆ

  42. None
  43. ࠶ؼ ࠶ؼ

  44. શମͷܭࢉྔΛ1 O ͱ͠
 ӈ্෦෼ͷܭࢉྔΛ2 O D ON N ͱ͢Δͱ
 1

    O 1 O  2 O 
 OLͱͯ͠࠶ؼతʹల։͢Δͱ
 1 O L1   LD  OL N ʜ D ON
 O1   2 O   N L ʜ  
 NͳͷͰL㱣ͱ͢Δͱ
 N L ʜ ͸ N ʹऩଋ
 ͭ·Γશମͷܭࢉྔ͸2 O Ͱ཈͑ΒΕΔ
  45. ཁ͢Δʹ ҎԼͷෆಈ఺໰୊͕ղ͚Ε͹ྑ͍ ෆಈ఺ ෆಈ఺ ෆಈ఺ ఆ਺ ܭࢉࡁ ܭࢉࡁ

  46. Ͳ͏͢Δ͔ ΋͏Ұ౓෼ׂ౷࣏

  47. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕ 
  48. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ࠨԼ੒෼ "✖9 9✖# $9
  49. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ࠨԼ੒෼ "✖9 9✖# $9 ࠶ؼ
  50. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ࠨ্੒෼ "✖9 "✖9 9✖# $9
  51. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ࠨ্੒෼ "✖9 "✖9 9✖# $9 ܭࢉࡁ
  52. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ࠨ্੒෼ "✖9 "✖9 9✖# $9 ܭࢉࡁ "✖9 9✖# $`9 $`"✖9 $ ࠶ؼ ߦྻੵ
  53. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ӈԼ੒෼ "✖9 9✖# 9✖# $9
  54. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ӈԼ੒෼ "✖9 9✖# 9✖# $9 ܭࢉࡁ
  55. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ӈԼ੒෼ "✖9 9✖# 9✖# $9 ܭࢉࡁ "✖9 9✖# $`9 $`9✖# $ ࠶ؼ ߦྻੵ
  56. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ӈ্੒෼ "✖9 "✖9 9✖# 9✖# $9
  57. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ӈ্੒෼ "✖9 "✖9 9✖# 9✖# $9 ܭࢉࡁ ܭࢉࡁ
  58. " " " 9 9 9 9 9 9 9

    9 # # # 9 9 9 9 $ $ $ $ ✖ ➕ ✖ ➕  ӈ্੒෼ "✖9 "✖9 9✖# 9✖# $9 ܭࢉࡁ ܭࢉࡁ "✖9 9✖# $`9 $`"✖9 9✖# $ ࠶ؼ ߦྻੵ ߦྻੵ
  59. ͜ͷ໰୊ͷܭࢉྔΛ2 O ͱ͠
 ߦྻੵͷܭࢉྔΛ3 O ͱ͢Δͱɺ
 2 O 2 O

     3 O  લͷઆ໌ͱಉ༷ͷํ๏Ͱɺ
 ܭࢉྔ͕3 O Ͱ཈͑ΒΕΔ͜ͱΛࣔͤΔ
 <ূ໌͸ಡऀͷԋश໰୊ͱ͢Δ>
  60. 7BMJBOU1BSTJOH ݩͷෆಈ఺໰୊ͷܭࢉྔ͸
 ߦྻੵͷܭࢉྔͰ཈͑ΒΕΔ ߦྻੵͷܭࢉྔ͸0 ON  N  ݱࡏ͜ΕҎ֎ʹ͸0 O

    ΛԼճΔ
 ख๏͸஌ΒΕ͍ͯͳ͍