0

以下を評価するにはどうすればよいですか:

a=b=c=d=e=0  # initially

ユーザーが入力した場合:

"a=b=4" as a string, it should modify the existing value.

ユーザーが次のように入力すると、結果は a=4, b=4 のようになります。

"a=(c=4)*2", it should evaluate as expression and update the values.

したがって、結果は a=8, c=4 のようなものになります

ブラケットはさらにネストできます。

どんな助けでも本当に感謝しています。私はパイソンを使用しています。

4

2 に答える 2

3

これが、セキュリティがまったく問題にならない単純なコンソール スクリプトである場合は、exec()数学ステートメントを実行するために使用できます。ただし、python は などのコードをサポートしていないためa=(c=4)*2、ネイティブで行うことはできません。

ただしexec()これが Web サーバーなどで実行されている場合、大きなセキュリティ ホールになります。これが、信頼されていない潜在的に悪意のあるユーザーがコマンドを送信できるものであると予想される場合は、サニタイズして自分で解析するか、サンドボックスを実装することを検討する必要があります。

TL;DRサポートされていないカスタム コマンドに取り組んでいるため、信頼できないコードの実行を心配することなく、これらを処理および実行する独自のパーサーを作成する必要があります。

于 2013-04-03T19:47:40.110 に答える
1

おそらく最良の方法は、この特定の文法のパーサーを作成することです (最悪の場合は、eval/exec が関係するものです。これらの関数にユーザー提供のコンテンツを送信することは、ワームのセキュリティ缶です)。

次の例を見てください。

于 2013-04-03T19:49:09.443 に答える