2009-02-25 29 views
0

我試圖找出我怎麼能寫的Lua的自動填充算法,但由於與許多腳本語言它缺乏一個靜態類型系統我想我需要後臺編譯,但在後臺編譯它很容易打到停機問題所以我想知道以前有沒有人解決過這種問題,解決編譯和停止的標準策略是什麼?基於靜態文本分析停止問題和後臺編譯?

+0

你是什麼意思,「遇到暫停問題」?我懷疑你的意思是比「停機問題」一般是指在計算其他的東西... – chaos 2009-02-25 14:45:39

回答

1

自動完成聽起來不是試圖在後臺編譯更合理。大多數提供自動完成功能的文本編輯器都使用此方法,但它不夠準確。

要做到這一點,你可以解析文檔尋找名字和記錄它們所屬的範圍。當點在文檔中移動時,您的自動完成記錄了它當前所在的範圍,並提供了當時應該可用的名稱。

由於LUA默認情況下全球範圍內,你可以用一個相當受污染的命名空間,如果你的程序員不使用「本地」關鍵字來縮小範圍告終。

1

可以

  • 實際執行的代碼,看看有什麼樣的對象由特定的變量表示,並削減執行在中間,如果時間過長
  • 猜測什麼類型將實際變量有,如果Lua有類型。這意味着你必須創建一個類型系統,這是一項非常重要的任務(你必須有足夠的限制來允許推理對象模型,並且足夠容許足夠的Lua程序實際符合你的模型)。然而,所有閃亮的新JavaScript引擎都試圖做到這一點,AFAIK,所以你可以在那裏尋找指針。
  • 只是從語法中猜測。例如,只查找相同前綴的emacs完成,在其他IDE通常出現故障的情況下(如C++模板)就像魅力一樣工作(C++模板)