請原諒我,如果這已被問到,我看,我無法在任何地方找到類似的問題。我需要解析一個包含條件語句的文件,有時嵌套在另一個文件中。解析嵌套的條件語句
我有一個存儲配置數據的文件,但配置數據稍有不同,具體取決於用戶定義的選項。我可以處理條件語句,它們都是沒有操作的布爾值,但我不知道如何遞歸地評估嵌套條件。例如,一塊的文件可能看起來像:
...
#if CELSIUS
#if FROM_KELVIN ; this is a comment about converting kelvin to celsius.
temp_conversion = 1, 273
#else
temp_conversion = 0.556, -32
#endif
#else
#if FROM_KELVIN
temp_conversion = 1.8, -255.3
#else
temp_conversion = 1.8, 17.778
#endif
#endif
...
...此外,一些條件語句不具有#else
聲明,只是#if CONDITION statement(s) #endif
。
我意識到,如果文件只是用XML或其他具有良好解析器的文件寫入,這可能很容易,但這是我必須使用的,所以我想知道是否有任何相對簡單的方法解析這個文件。它與括號匹配類似,所以我想有一些模塊可以使用,但是我沒有找到任何東西。
任何幫助,將不勝感激。提前致謝!
PS。我在Python中工作,但如果在另一種語言中更容易解決此問題,我可以切換此功能。
這種格式是否有名稱或標準?以及像FROM_KELVIN定義的常量在哪裏/哪裏?最後,爲什麼每個賦值都有兩個值 - 它是否應該將一個元組賦值給'temp_conversion'? –
不知道這是否是一個好主意,但是您可以使用一些正則表達式替換(這需要四次替換)將此代碼轉換爲Python代碼,然後在沙盒環境中對其進行評估。 – Blender
@DavidRobinson該格式沒有我知道的標準,我正在嘗試製作一個小的開源程序,該程序將與現有專有應用程序使用的傳統格式兼容,並且這是他們使用的格式。處理條件和語句不是問題,我只是保留條件的布爾字典,並且我已經有了一個用於temp_conversion的正則表達式解析器。 – jmp