所以我試圖製作一個Python應用程序,就像一個集合論計算器(即兩個集合,交集,補集等的聯合)。我希望有一個文本字段,在執行時,它將像Python表達式一樣進行評估,並將大括號全部轉換爲集合。計算新組時,結果將顯示在屏幕上。但是,我想確保用戶不會輸入任何可能會影響整個應用程序(或更糟;系統)的Python命令,無論是否有意或無意。他應該只能輸入以下內容;如何限制表達式eval()或exec()可以運行?
- Set操作(集,差,基數等;我公司將提供按鈕的數學符號,並使用正則表達式,使其正確的引擎蓋下)
- 集(這反過來,也只能容納以下元素;其他集合,元組,整數,實數,字母字符和字符串)。
爲了給你一個想法,這是輸入和輸出應該是什麼樣子(這個程序將是一個GUI,我只是使用終端樣式方便):
>>> {1, 2, a} - {a}
{1, 2}
任何提示嗎?或者我應該只是實現一種迷你語言,然後將其轉化爲Python命令?
讓用戶輸入任意代碼是嚴重危險的... HTTP://www.codinghorror.com/blog/2008/10/programming- is-hard-lets-go-shopping.html – jozefg
如果你*「信任」*用戶(例如,它在他們的機器上運行,*他們的憑據*下)..然後讓他們按照自己的意願去做。買家要當心和所有。但是,如果您希望僅編寫/使用/僅允許特定的DSL,那麼請務必僅處理特定的DSL語法解析和所有(但使用工具來幫助:)。 – 2012-09-25 03:47:51
在這種情況下什麼是DSL? – JesseTG