• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-341  評論-2670  文章-0  trackbacks-0
            Vczh Free Script
            Vczh Free Script的開發(fā)歷程
            今天在硬盤上發(fā)現(xiàn)了去年寫的一個小型IDE      摘要: 當(dāng)Vczh Free Script還處于1.0版本的時候,我用C#寫了一個IDE出來。因?yàn)槟_本本身是不能產(chǎn)生exe的,所以這個IDE只有執(zhí)行而沒有編譯的功能。不過有兩個個困難的地方。

            RichTextBox里面的修改會讓顏色變化。我找不到C#中的有效做法,所以只好把自己的正則表達(dá)式引擎包一層插入C#,每次修改的時候都重新生成整個RTF文檔插入RichTextBox。后來測試的時候,發(fā)現(xiàn)只要腳本在1000行左右的時候速度仍然是可以接受的。沒有進(jìn)行更多的測試。

            腳本自己也是可以調(diào)用編譯器的。腳本代碼可以用字符串產(chǎn)生一段新的代碼然后執(zhí)行。因此IDE也要動態(tài)的【發(fā)現(xiàn)】并【調(diào)試】這些動態(tài)產(chǎn)生的代碼。下面貼了4幅圖。  閱讀全文
            posted @ 2008-06-14 00:20 陳梓瀚(vczh) 閱讀(4219) | 評論 (14)  編輯
            Vczh Free Script 2.0類插件完成
            posted @ 2008-05-28 22:50 陳梓瀚(vczh) 閱讀(1637) | 評論 (0)  編輯
            Vczh Free Script 2.0的Syngram庫完成      摘要: 今天在測試封裝在FreeScript內(nèi)的正則表達(dá)式接口的時候發(fā)現(xiàn)了一個垃圾收集器的Bug,不過很容易就看出來了,于是立刻fix掉。出錯的原因在于垃圾收集的時候只標(biāo)記了運(yùn)算堆棧的內(nèi)容,忘了標(biāo)記調(diào)用堆棧的內(nèi)容。

            這個新的Syngram包含了三個工具,分別是正則表達(dá)式、詞法分析器和語法分析器。

            正則表達(dá)式分純、安全和貪婪三種。純正則表達(dá)式僅僅用于匹配,速度非常快(以前的測試表明一秒鐘可以匹配44萬次),但是沒有預(yù)查和捕獲等功能。安全和貪婪兩種正則表達(dá)式則是通過不同的搜索方法來匹配字符串的內(nèi)容,雖然慢了一點(diǎn),不過有了預(yù)查和捕獲等功能。之前的文章有提到過關(guān)于一個少回溯多捕獲的測試用例下的速度。安全分析法回溯將會占用很多時間,而貪婪分析法則回溯基本是沒什么消耗的。

            詞法分析器則可以輸入不同的正則表達(dá)式,然后將字符串切割成匹配和不匹配的段落,并告訴你匹配的部分實(shí)際上是匹配了哪一條正則表達(dá)式。這個功能在分析很多字符串的時候都是相當(dāng)好用的。

            至于語法分析器,則是實(shí)現(xiàn)了一個上下文無關(guān)文法庫。語法  閱讀全文
            posted @ 2008-05-19 00:56 陳梓瀚(vczh) 閱讀(1643) | 評論 (4)  編輯
            Vczh Free Script 2.0中namespace和大部分操作符重載完成!      摘要: 今天上完課回來繼續(xù)把昨天晚上剩下的using字句完成。使用Syngram寫編譯器真是舒服啊,直接在代碼里面加兩條推導(dǎo)式就完成了。昨天發(fā)現(xiàn)了InsertEnv指令的bug以后,改過來了。不過InsertEnv不能用在using身上,只好另外寫了一個UsingEnv指令,把環(huán)境以及上游的鏈表而不是多個環(huán)境插進(jìn)當(dāng)前的環(huán)境中。這里展示了class和namespace是如何通過閉包(函數(shù))來實(shí)現(xiàn)的,以及他們的構(gòu)造過程。

            class以及namespace都是通過在return的跳轉(zhuǎn)目標(biāo)后添加指令而保證return結(jié)束但是不修改class和namespace表達(dá)式的返回值。

            class函數(shù)的參數(shù)是父類的構(gòu)造子,class函數(shù)在所有代碼之前首先構(gòu)造好一個父類的鏈表,然后通過InsertEnv將這個表引用到自己身上,從而實(shí)現(xiàn)了正確的scope。然后讓constructor為空函數(shù)。ClassName.new()的時候首先運(yùn)行class函數(shù)(使用callctor而不是invoke來自動找到父類并添加到參數(shù)中),然后復(fù)制堆棧,獲取construct  閱讀全文
            posted @ 2008-05-11 21:37 陳梓瀚(vczh) 閱讀(1540) | 評論 (4)  編輯
            今天發(fā)現(xiàn)了Vczh Free Script 2.0的一個bug      摘要: 今天抓到了一個隱藏了3個月的bug。這個bug以前一直沒有被找到,因?yàn)橐郧皩懙挠糜跍y試腳本的代碼都沒有出現(xiàn)類成員函數(shù)使用非全局的外部對象的情況。Vampire.Kiss用我的Vczh Free Script代替PHP開發(fā)了一個網(wǎng)站,過程中也向我提了不少要求。其中有一套就是想在腳本中加入namespace。其實(shí)這是相當(dāng)合理的,只是我沒想到腳本第一次應(yīng)用就會被用來開發(fā)庫。因此今晚就加上了namespace。

            實(shí)際上在目前的結(jié)構(gòu)中添加namespace并不復(fù)雜,因?yàn)閚amespace也可以用閉包來模擬。其實(shí)閉包不僅僅是函數(shù),而是一段帶了上下文的指令表。因?yàn)閚amespace本身也是用于控制符號在上下文中解釋方法工具,因此使用閉包來做也就是十分合適的了。想到以前是用閉包模擬class的時候,曾經(jīng)實(shí)現(xiàn)了一個把一堆環(huán)境鏈接到上下文中的指令。類的繼承實(shí)際上也是控制符號在類成員函數(shù)的符號在上下文解釋方法的工具,因此我使用了如下方法來讓閉包可以順利地模擬class的繼承:  閱讀全文
            posted @ 2008-05-11 10:07 陳梓瀚(vczh) 閱讀(1854) | 評論 (5)  編輯

            国産精品久久久久久久| 久久99精品国产麻豆婷婷| 国产成人久久精品麻豆一区| 日韩精品久久久久久久电影| 国产精品va久久久久久久| 99久久国产主播综合精品| 好属妞这里只有精品久久| 久久电影网2021| 亚洲国产一成久久精品国产成人综合| 人妻无码αv中文字幕久久琪琪布| 要久久爱在线免费观看| 伊人久久大香线蕉AV一区二区| 伊人 久久 精品| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲人成电影网站久久| 中文字幕久久久久人妻| 99久久精品费精品国产一区二区| 99久久精品免费| 婷婷伊人久久大香线蕉AV| 麻豆精品久久精品色综合| 亚洲精品NV久久久久久久久久| 久久亚洲精品无码AV红樱桃| 麻豆亚洲AV永久无码精品久久| 久久狠狠色狠狠色综合| 久久久久99精品成人片牛牛影视| 97精品伊人久久大香线蕉| 久久91精品国产91久久麻豆| 久久香蕉国产线看观看乱码| 日本精品久久久久中文字幕8| 无夜精品久久久久久| 久久久国产精品网站| 777午夜精品久久av蜜臀| 国产综合免费精品久久久| 久久亚洲中文字幕精品有坂深雪 | 青青草原综合久久| 99久久中文字幕| 国产精品久久久久久久久鸭 | 亚洲狠狠婷婷综合久久蜜芽| 国产精品久久国产精品99盘 | 99久久无色码中文字幕人妻| 久久精品国产亚洲av麻豆色欲|