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

PHP でガチの電卓を作る

Avatar for memory memory
February 03, 2023

PHP でガチの電卓を作る

- Title: How to make a serious calculator with PHP
- Lightning talk in our company

Avatar for memory

memory

February 03, 2023
Tweet

More Decks by memory

Other Decks in Programming

Transcript

  1.  ˽        NUM

    OP FN_R P_OP P_OP NUM FN_L OP NUM OP NUM P_CL OP OP NUM FN_L OP NUM OP NUM P_CL P_CL ͜ͷΑ͏ʹҙຯΛ΋ͬͨ࠷খ୯ҐʢτʔΫϯʣʹϥϕϧ(NUM, OP, FN_R ͳͲ)Λ෇͚ͨΓ͢Δͷ͕ Lexer ͷ໾ׂͰ͢ʢ౰ࣾͷݕࡧػೳͰ΋࣮૷͞Ε͍ͯ·͢ʣ ࠓճͷి୎࣮૷Ͱग़ͯ͘Δͷ͸ NUM, OP, FN_L, FN_R, P_OP, P_CL ͷ 6 छྨ͚ͩʂ ͪͳΈʹ PHP ͸ϚχϡΞϧ্ 147 छྨ͋Γ·͢ɻ
  2. τʔΫϯ ໾ׂ NUM ਺ࣈ OP Operatorɻ+, -, *, /, **

    ͳͲΛࢦ͢ FN_R Function Right. ӈଆͷ਺ࣈʹԿ͔͠Βؔ਺Λద༻͢Δ
 ʢฏํࠜɼࡾ֯ؔ਺ͳͲʣ FN_L Function Left. ࠨଆͷ਺ࣈʹԿ͔͠Βؔ਺Λద༻͢Δ ʢ֊৐ه߸ʣ P_OP Parentheses open. Χοί࢝·ΓΛࢦ͢ɻ P_CL ͱಉ͡ݸ਺ͳ͚Ε͹͍͚ͳ͍ɻ P_CL Parentheses close. Χοίด͡Λࢦ͢
 P_OP ͱಉ͡ݸ਺ͳ͚Ε͹͍͚ͳ͍ɻ
  3. OP NUM NUM OP NUM NUM OP FN_L or FN_R

    FN_L or FN_R ඞͣϊʔυͷ࢝·Γ͕ OP τʔΫϯʹͳΔ Φϖϥϯυ͸ඞͣରʹͳΔΑ͏ʹ͢Δ ʢ࣮ߦॱং͕ෆ໌ʹͳΔͨΊʣ ӈΦϖϥϯυ ࠨΦϖϥϯυ ӈΦϖϥϯυ ࠨΦϖϥϯυ ࠨΦϖϥϯυ ӈΦϖϥϯυ
  4. 4 - * sqrt (√) + + 5 factorial (!)

    ** 2 8 4 factorial (!) ** 2 8 ※ P_OP, P_CL ͸ϊʔυͷ༏ઌ౓Λܾఆ͚ͮΔͨΊ͚ͩͳͷͰɼAST Խ࣌ʹ͸ফ͑·͢
  5. NUM OP OP FN_R OP OP NUM FN_L OP NUM

    NUM NUM FN_L OP NUM NUM ※ P_OP, P_CL ͸ϊʔυͷ༏ઌ౓Λܾఆ͚ͮΔͨΊ͚ͩͳͷͰɼAST Խ࣌ʹ͸ফ͑·͢