JavaScriptとPHPを使用して分散計算機を開発しています。電卓は括弧を認識し、括弧に従って計算の順序を変更する必要があります。すべての基本的な数学演算(*
、、、、 )/
の優先度は同じ+
です-
(共通の優先度とは異なります)。次の正規表現を使用して、ユーザー入力を取得し、配列に配置します。この正規表現は、正の数に対して適切に機能します。
/\d*\.\d+|\d+|[()/*+-]/g
ただし、負の数になると、括弧(および内容)の各ペアをそれらの括弧内の操作の結果で置き換える再帰置換関数を使用するため、クラッシュします。これは分散計算機であり、サーバー側で各アトミック操作を実行してから結果を返し、操作の履歴に表示する必要があるためです。
私が欲しいのは、負の数を検出することです(それらを配列内の1つの要素としてのみ保存するため)。このように機能するはずです。2つの連続する演算子(間に空白文字が0個以上ある)があり、2番目の演算子がマイナス記号(-
)の場合、マイナス記号は次の数値に連結する必要があります(番号の記号)。さらに、最初の数字の前にマイナス記号が付いている場合は、その数字に記号を連結する必要があります。