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

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

nakawai
May 27, 2018
66

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

nakawai

May 27, 2018
Tweet

Transcript

  1. 電卓アプリで

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

    かものはし

    2018/5/27

    @kawai


    View Slide

  2. どんな電卓?


    View Slide

  3. デモ


    View Slide

  4. 1. 式の計算

    2. 式の編集

    3. 式の参照

    要件


    View Slide

  5. 行計算できる

    電卓


    View Slide

  6. 「式」の計算


    View Slide


  7. “3+4”

    ↓

    3 + 4

    ↓

    7


    View Slide


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

    ↓

    √4+(3-15)

    ↓

    2+-12


    View Slide


  9. “100+8%”

    ↓

    100+(100×0.08)

    ↓

    100+8


    View Slide


  10. “100×÷8”

    ↓

    無効な式


    View Slide

  11. 構文解析が必要


    View Slide

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

    1. トークンに分解

    2. 処理用にパース

    3. パース結果を処理


    View Slide

  13. ↑をトークンに分解

    √4+(3-15)

    View Slide

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

    View Slide

  15. 処理用にパース


    View Slide

  16. アルゴリズム


    View Slide

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

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


    ・再帰降下法

    中置 → 構文木 → 評価


    View Slide


  18. 3 5

    3 5

    3 5



    再帰降下法

    View Slide


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



    View Slide

  20. 実装など


    View Slide

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

    View Slide

  22. 電卓アプリで

    再帰降下法を使った話

    以上


    View Slide