當Vczh Free Script還處于1.0版本的時候,我用C#寫了一個IDE出來。因為腳本本身是不能產生exe的,所以這個IDE只有執行而沒有編譯的功能。不過有兩個個困難的地方。
RichTextBox里面的修改會讓顏色變化。我找不到C#中的有效做法,所以只好把自己的正則表達式引擎包一層插入C#,每次修改的時候都重新生成整個RTF文檔插入RichTextBox。后來測試的時候,發現只要腳本在1000行左右的時候速度仍然是可以接受的。沒有進行更多的測試。
腳本自己也是可以調用編譯器的。腳本代碼可以用字符串產生一段新的代碼然后執行。因此IDE也要動態的【發現】并【調試】這些動態產生的代碼。下面貼了4幅圖。




上圖那個“不能執行加法操作”的原因是“+”只能用來做數值運算,字符串之間或者數組之間的連接用的操作符是“++”。
現在這個IDE已經沒用了,因為在Vczh Free Script升級到2.0的時候,腳本開放給.NET的接口跟1.0的完全不兼容。不過用來做自動變色的方法我覺得也相當的爛。就這么扔掉吧。C#控制RichTextBox是相當的吃力啊,不過如果可以寫一個調試的界面讓未來使用Vczh Free Script的程序可以直接調用的話那就爽了。以后再想辦法,不過估計會選擇C++來實現這個東西。現在還是做個圖形庫出來換換口味好。
等期末考結束后我就把Vczh Free Script 2.0發布出來,連同源代碼。源代碼里面包含的內容如下:
·自己用的C++模板庫以及一些基礎工具。個人不喜歡STL。
·這篇文章里面說的正則表達式引擎。
·自己做的YACC,區別是我這個東西不產生代碼,是運行時產生分析器的。名字叫Syngram。
·使用Syngram做的Vczh Free Script 2.0編譯器,以及虛擬機。
·C++和.NET兩個版本的DLL接口的源代碼,以及分別使用這兩個接口開發的字符界面虛擬機的源代碼。
·我為Vczh Free Script 2.0寫的庫,包含了容器、正則表達式、語法分析、反射等,使用腳本編寫。
非源代碼部分將有編譯好的Vczh Free Script 2.0(.NET版至少需要.NET 2.0 + SP1才能執行)和一些文檔和資料等。
在發布之前我估計要找SourceForge或者CodeProject放一放,然后加個協議上去。至于是哪種,這個慢慢考慮一下。嘿嘿。