2012-05-11 143 views
1

我最近接觸到了一種顏色編碼編譯器功能,它可以讓您在運行前瞭解您的代碼是否可行。我見過類似的其他編譯器採用的糾錯方法編譯器瞭解

是否有一種編譯器可以學習編程的方式,甚至可以從自己的編程錯誤中學習?

+2

這是基於啓發式的?所以這不是編譯錯誤,而是「可能的錯誤」?你有參考嗎?謝謝。 –

+0

我希望不是。一個學習編譯器很快就會知道我一直在犯愚蠢的錯誤,最終會停止編譯,以阻止我犯錯誤。 「贏得的唯一方法就是不玩。」 :) – aquinas

+0

Linux Shell中的VIM具有顏色編碼。但是我也看到了Actionscript 3.0中的錯誤糾正,在那裏你有一個關於你真正意圖做什麼的選擇列表。我意識到,解決問題幾乎總有不止一種方法。這就是爲什麼我想要一個編譯器能夠學習我的特定編碼風格併爲我提供適當的選項,並提前看到我可能犯的一個錯誤。這會讓事情更加流暢和有趣! –

回答

0

我不知道自己學習的編譯器,但我已經看到他們的開發人員學習幷包含對典型錯誤模式及其可能更正的檢測。

例如鐺有:

  • 錯誤恢復通過推斷你的意思(如果可能),它提示你,繼續解析爲,如果這是你做了什麼
  • 一些可能的錯誤警告for ();後面跟着一個縮進的語句,例如

此外,它包括一種善意的錯字校正,這真的很神奇。例如,該文件typo-correction.cpp在測試套件顯示:

struct BaseType { }; 

struct Derived : public BaseType { // expected-note\ 
            {{base class 'BaseType' specified here}} 

    static int base_type; // expected-note {{'base_type' declared here}} 

    Derived() : basetype() {} // expected-error\ 
          {{initializer 'basetype' does not name a non-static\ 
           data member or base class; did you mean the base \ 
           class 'BaseType'?}} 
}; 

即使base_type更接近(距離上)它不是一個基類,也沒有一個屬性,因此不考慮。

問題是,你最有可能犯同樣的錯誤,因此整個社區都能夠了解自己並磨礪自己的工具。不管怎樣,不是一個編譯器自己學習的情況,但你有時會懷疑它是否有感知力!