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

電卓アプリで再帰降下法を使った話

nakawai
May 27, 2018
99

 電卓アプリで再帰降下法を使った話

nakawai

May 27, 2018
Tweet

Transcript

  1. 電卓アプリで

    再帰下降構文解析を
    使った話

    かものはし

    2018/5/27

    @kawai


    View full-size slide

  2. どんな電卓?


    View full-size slide

  3. 1. 式の計算

    2. 式の編集

    3. 式の参照

    要件


    View full-size slide

  4. 行計算できる

    電卓


    View full-size slide

  5. 「式」の計算


    View full-size slide


  6. “3+4”

    ↓

    3 + 4

    ↓

    7


    View full-size slide


  7. “√4+(3-15)”

    ↓

    √4+(3-15)

    ↓

    2+-12


    View full-size slide


  8. “100+8%”

    ↓

    100+(100×0.08)

    ↓

    100+8


    View full-size slide


  9. “100×÷8”

    ↓

    無効な式


    View full-size slide

  10. 構文解析が必要


    View full-size slide

  11. 式の文字列から結果を導くには

    1. トークンに分解

    2. 処理用にパース

    3. パース結果を処理


    View full-size slide

  12. ↑をトークンに分解

    √4+(3-15)

    View full-size slide

  13. √4+(3-15)
    4
    √ + -
    3 15 )
    (

    View full-size slide

  14. 処理用にパース


    View full-size slide

  15. アルゴリズム


    View full-size slide

  16. ・操車場アルゴリズム(Shunting Yard Algorithm
    )

    中置 → 後置(逆ポーランド記法)


    ・再帰降下法

    中置 → 構文木 → 評価


    View full-size slide


  17. 3 5

    3 5

    3 5



    再帰降下法

    View full-size slide


  18. 3 15
    4
    √ + -
    3 15 )
    (



    View full-size slide

  19. 実装など


    View full-size slide

  20. Evaluater
    Parser
    Tokenizer
    ParserTest
    EvaluaterTest
    Unit Test
    TokenizerTest
    Core Logic

    View full-size slide

  21. 電卓アプリで

    再帰降下法を使った話

    以上


    View full-size slide