下面開始貼圖了哈。




















整整兩天不容易啊,期間修掉了很多bug,因為這次整個parser都在面對一些殘缺不全的代碼。下一篇文章我會重點描述關于IDE里面處理兩顆有些時候不夠同步得樹的算法。
在這里遇到的問題一般都是如何確定一個語法樹節點覆蓋的源代碼的位置。當然這個主要是語法分析器干的事情,不過實在是太復雜了,主要是我不想寫語法分析器,轉而寫了一個生成器,因此就不得不開發一個通用的算法出來。第二步就是,通過光標的位置來判斷用戶接下來需要輸入的東西是什么,這一步也比較囧,因為涉及到很多情況。用戶輸入的代碼可能是殘缺不全的,因此語法樹的任何一個屬性(包括語法書自己)都有可能是null,稍微一不小心就會犯錯誤了……