我想知道編程語言開發人員如何驗證並證明他們的語法是正確的。假設我爲一個新的語言創建了一個新的語法。我可以通過提供不同類型的測試程序來使用單元測試工具來測試我的語法。但是,我絕不會100%確保我的語法是正確的。語言開發人員如何確保他們的語法在現實世界中是正確的?如何證明給定語法的正確性?
比方說,我用鉛筆和紙創建了一種新語言的語法。但是,我犯了一個錯誤,我的語法接受以+ + 2 + 2 +結尾的表達式。如果我沒有發現它的錯誤,我會用這個不正確的語法來實現我的語言。在執行和單元測試之後,我可以找到錯誤。在開始實施之前是否有可能找到它?
當然,我可以嘗試使用鉛筆和紙(派生等)的一些示例輸入我的語法,但我可能會錯過一些角落案例。有沒有更好的方法,或者真正的語言開發人員如何測試他們的語法?
語法是「正確的」是什麼意思?還是你的意思是要問如何檢查一個解析器正確識別預期的語法? – rici
從理論上講,你會產生一個正確性證明。我不知道這是否在現實世界中完成,但我懷疑它。但是,如果沒有正確的證據,你就不知道語法是正確的。所以也許人們不知道他們的語法是否正確 - 或者說,語法被定義爲正確的,沒有人真正知道他們描述的語言! – Patrick87
我更新了我的問題。我如何做一個語法的正確性證明?任何鏈接或解釋? –