/calculator

再帰降下構文解析を用いた電卓

Primary LanguageDart

calculator

開発経緯

研究室の課題として行いました.電卓のGUIを作るということでいろいろ候補はありましたが,他のB3と被らないようにした結果flutterを用いることになりました.計算する部分は一旦Javascriptで書いてます. ただ,flutterが思いのほかうまくいかなかったので普通にHTMLを書いてブラウザで動くGUIを作成しました.

ファイルの構成

cal-js

javascriptで書いた電卓です.ローカルで動きます

calapp

flutterを使用した電卓GUIアプリを作成するためのフォルダです.

calapp-html

HTMLを用いて書いた電卓GUIです.ブラウザで動きます.

仕様

+ - * / ( ) を用いた四則演算を行う

制約

  • これらの演算子と数字,スペース以外の文字列は入力されないものとする
  • 演算子の優先順位は実際の四則演算と同様に,掛け算と割り算が優先され,()内の計算が最優先される.
  • 入力数は整数のみ(負の数を含む)とする.
  • 12(3+4) のような,(横に*が省略された記法には対応していない.
  • +-のような演算子が連続して入力された場合は直前に入力された演算子のみ有効とする.
  • また,)の数が(の数を上回る場合,)の入力を許さない.
  • 答えが小数になる計算では可能な限り表示する.
  • =が押されて結果を表示後は任意の入力を行うと計算結果が消去される.

入力 出力
-2+6/3*(6-4) 4

内部仕様

再帰下降構文解析を用いる.

拡張BNF

expression = ["+"|"-"], term, { ("+"|"-"), term } ;
term       = factor, { ("*"|"/"), factor } ;
factor     = number | "(", expression, ")" ;

参考文献

再帰下降構文解析

flutter

javascript