0
我已經編寫了(並且大部分是調試的)一個處理由宏調用組成的用戶輸入文件的程序。我想現在在用戶輸入文件中添加全面的錯誤檢查。是否有一種通用的最佳實踐方法在這樣的文件上執行句法&語義錯誤檢查?我能想到的三種基本方法是1)編寫一個單獨的預處理程序來驗證文件,2)指定BNF並使用現成的編譯器編譯器作爲預處理器,或者3)將錯誤檢查集成到現有的方案。第三種方法似乎可能會更好,因爲它可以啓用更深層次的語義檢查?我想知道這些和其他方法的利弊&缺點。錯誤檢查用戶輸入文件
您的輸入是否可以作爲連續的Lisp表單讀取,還是需要解析器? – coredump
我不知道是否在頂層(非正常編譯)進行獨立解析會很有用,因爲輸入文件只是lisp表單(單個宏調用,由於依賴關係需要按順序處理)的列表。但是,某些宏調用中提供的用戶信息由簡短的類似於語言的邏輯「程序」組成,這些程序被基準程序用於嘗試解決用戶指定的問題。所以有一些解析涉及。但是用於處理各種邏輯程序單元的代碼已經是工作基準的一部分,以lisp編碼。 – davypough
我不知道這是否是堆棧溢出格式的「可回答」,但肯定會需要一個小例子 - 但是 - 我已經做了一些類似的事情,只是通過驗證來散佈宏觀開拓者。調用者所期望的越「複雜」,輸入驗證越豐富且冗長;通常很多'Assert'和'Check-Type'都有詳細的詳細錯誤信息。 – BRFennPocock