青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
 
     摘要: 今天上完課回來繼續把昨天晚上剩下的using字句完成。使用Syngram寫編譯器真是舒服啊,直接在代碼里面加兩條推導式就完成了。昨天發現了InsertEnv指令的bug以后,改過來了。不過InsertEnv不能用在using身上,只好另外寫了一個UsingEnv指令,把環境以及上游的鏈表而不是多個環境插進當前的環境中。這里展示了class和namespace是如何通過閉包(函數)來實現的,以及他們的構造過程。

class以及namespace都是通過在return的跳轉目標后添加指令而保證return結束但是不修改class和namespace表達式的返回值。

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

實際上在目前的結構中添加namespace并不復雜,因為namespace也可以用閉包來模擬。其實閉包不僅僅是函數,而是一段帶了上下文的指令表。因為namespace本身也是用于控制符號在上下文中解釋方法工具,因此使用閉包來做也就是十分合適的了。想到以前是用閉包模擬class的時候,曾經實現了一個把一堆環境鏈接到上下文中的指令。類的繼承實際上也是控制符號在類成員函數的符號在上下文解釋方法的工具,因此我使用了如下方法來讓閉包可以順利地模擬class的繼承:  閱讀全文
posted @ 2008-05-11 10:07 陳梓瀚(vczh) 閱讀(1870) | 評論 (5)編輯 收藏
     摘要: 有個同學近來一直在做一個魔獸世界戰況分析(名字好像叫DeusCraft),說是很火。只是用C#覺得不是很爽,想移植到C++上面來。但是那個東西在分析的時候用了好多正則表達式,于是只好找了些正則表達式引擎來測。

測試的文件一共有27萬多行,首先通過一個檢查時間的正則表達式。如果成功,則在接下來的20幾條正則表達式中驗證字符串命中哪一條,然后開始做剩余的工作。原先在C#上花了12秒分析,后來換了boost的正則表達式花費40秒,然后從MSR上找了一個號稱比boost快4倍的正則表達式引擎,結果還是40秒(都是微軟的,咋差距這么大……)。于是同學用他自己做的正則表達式引擎花了23秒(此數據不太記得),我用我以前那個東西花費108秒(-_-|||)。

于是我們這幾天就在優化正則表達式引擎,到了今天同學那個花費13秒,我那個12秒。Visual Studio 2008 Team System上有一個Performance Wizard,用于在程序執行的過程中統計各個函數所占用的時間,可以方便定位,看出效率瓶頸,非常好用。
閱讀全文
posted @ 2008-05-07 05:21 陳梓瀚(vczh) 閱讀(15516) | 評論 (21)編輯 收藏
     摘要: 華南理工大學軟件學院本科05級3班,陳梓瀚(vczh)

游戲規則:
1:地圖上可以建立三種炮塔塔,游戲有上、左兩個敵人的起始點,兩個起始點的敵人分別到下、右兩個終止點。
2:每一盤有1000個等級分別從1-200的敵人從起始點出發自動尋路前往終止點。如果有10個敵人到達了終止點的話則游戲結束,玩家輸。如果所有的敵人都被消滅或到達終止點之后,到達終止點的敵人沒有10個的話則游戲結束,玩家贏。
3:建立炮塔的方格敵人不能通過。在建立一個炮塔的時候,如果程序發現這個炮塔的建立會導致敵人找不到任何路徑前往各自的終止點的話,則建立被禁止。
4:炮塔可以是用金錢建立或升級,可以賣出貨的金錢。消滅敵人能夠獲得金錢。
5:三種炮塔分別是
·升級后數量變多,射程變長,攻擊力變強
·升級后速度變快,射程變長,攻擊力變強
·升級后一次爆炸傷害的范圍變大,射程變長,攻擊力變強
·升級一次后減速范圍變大,減速因子變大
6:炮彈在  閱讀全文
posted @ 2008-05-02 21:46 陳梓瀚(vczh) 閱讀(9644) | 評論 (27)編輯 收藏
     摘要: 第一次用C#寫游戲。在C#上寫算法果然是一個挑戰,時間復雜度太大的話造成的后果比C++明顯好多,于是總是盡量把東西做成O(n)或者O(nlogn)。這次就在上面實現了一個尋路算法。

這個尋路算法是這樣的:在16×16的方格上有一些終點,東西在格子上只能上下左右行動。每一個格子需要記錄到其中一個終點的最近的路的第一個方向(就像三層循環的尋路算法一樣,最后給出矩陣的那個)。  閱讀全文
posted @ 2008-04-30 05:29 陳梓瀚(vczh) 閱讀(4491) | 評論 (5)編輯 收藏
     摘要: Lazy Compile使用Syngram動態創建語法分析器的代碼實在是太慢了,debug竟然需要8秒鐘來處理91條比較長的文法。于是我打開了Visual Studio 2008的Performance Wizard查看運行時消耗的資源,結果發現竟然都消耗在自己那個array類的operator[]里面了。那一段代碼是用來檢查文法的左遞歸引用關系是否出現環的。結果就把用到的四個array全部換成bool*了,當時只是為了創建二維數組方便使用了array類。

過后,debug的時間立刻降為2秒鐘不到,于是我又打開Performance Wizard看了一次,這次消耗的瓶頸終于轉移到一個合理的地方了。

結果:array竟然比指針慢了無窮多倍,得找個時候重新寫一次。不過這段代碼好象是去年寫的,也沒經過什么性能測試,也難怪發現不了問題。在此帖上代碼,等Lazy Script寫完了重新審查一下自己的那套模板庫(NTL,Non-standard Template Library,娃哈哈)。   閱讀全文
posted @ 2008-04-27 19:53 陳梓瀚(vczh) 閱讀(2645) | 評論 (6)編輯 收藏
     摘要: 這幾天一直在忙學校的比賽,到了今天終于有空了。

Lazy Script的語法實在是很復雜,因此不得不在進行第一步的名字檢查之后把原本的語言轉換為內部使用的一種元語言。這種元語言設計的原則是盡量簡單。譬如列表構造和do-end語句就需要被轉換掉。進行了轉換以后,就需要對元語言進行一個類型方程組的建立。這一步暫時還沒有建模好,而且實際工作需不需要真的構造出一組方程組還不知道。目前還比較沒有頭緒的就是如何對模板函數的類型方程建模。

舉個例子,譬如我們對上一篇文章中提到的代碼進行類型方程組的構造:  閱讀全文
posted @ 2008-04-27 10:16 陳梓瀚(vczh) 閱讀(2157) | 評論 (0)編輯 收藏
     摘要: 花了兩天的時間終于完成了Vczh Lazy Script的語法分析工作。語法分析是編譯的第一步,旨在把輸入的字符串(代碼)分析稱跟代碼結構一致的語法樹,以便后續工作。

藉著去年開發的Syngram工具包,這兩天過得還算輕松,僅僅對語言做了一份配置,不過這份配置也花掉了1200多行代碼。語法分析其余的部分是數據結構。目前的數據結構僅僅用于再現語言的結構,而沒有附加任何的數據。接下來的工作是檢查所有的identifier,看看有沒有哪些identifier是使用錯誤的。一般來說都是在左值使用函數、類構造標簽參數不全、轉移運算符指向的函數并沒有聲明成函數等等比較基本的東西。但是后續的工作就相當地麻煩了。

作為一門lazy+pure的函數范式程序語言,我模仿了Haskell的大部分語法,加上自己的一點點修改(因為Haskell的語法實在是太詭異了),但是主要功能是沒有變化的。等上面所說的identifier完成以后,我就要開始寫Lazy的類型推導程序了。類型推導程序用于計算出代碼中省略的類型聲明,相當于把整份代碼轉換成類型方程然后求解  閱讀全文
posted @ 2008-04-22 04:03 陳梓瀚(vczh) 閱讀(2579) | 評論 (4)編輯 收藏
     摘要: 已經忘了是去年還是前年聽到微軟說要在C# 3.0里為C#添加lambda表達式,與此同時Java的團隊也一直在說想為Java添加lambda表達式。到了今天,C#似乎已經把這個特性加進去了,Java還沒有。Java說這個特性還在計劃列表之中,不過暫時可以使用匿名類來代替。想必是因為在Java中表示函數指針的方法比較奇怪罷……

其實無論是lambda表達式(事實上應該叫匿名函數)或是匿名類,都能歸屬到一種叫閉包的東西上面。閉包原來是代數中的用語,只是那些研究理論的老大們覺得這玩意兒也能拉到“閉包”里面去,于是就叫閉包了。匿名函數原本是丘奇發明的一個lambda-calculus的其中一部分,后來計算機的老大們突然發現lambda-calculus非常適合用來充當程序設計語言的模型,于是就對它進行了非常多的擴充,還弄了個什么類型理論出來。好像扯遠了。

想象一下如下使用閉包的代碼:

MyClosure=func(Number1)
{
return func(Numbe  閱讀全文
posted @ 2008-04-20 21:55 陳梓瀚(vczh) 閱讀(7734) | 評論 (5)編輯 收藏
     摘要: ExpCmList -> Expression ["," ExpList]
ArrCmList -> [LeftValue "<-"] Expression ["," ArrList]
CaseList -> LeftValue ":" Expression ";" [CaseList]
DoList -> ([LeftValue "="]Expression | LeftValue "::" TypeDes ) ";" [DoList]
WhereList -> (FuncHead | FuncBody) ";" [WhereList]

Exp0 ->
Exp0 -> FuncName
Exp0 -> "(" [ExpCmList] ")"
Exp0 -> "[" [ExpCmList] "]"
Exp0 -> "[" Expression "|" ArrCmList "]"
Exp0   閱讀全文
posted @ 2008-04-20 20:50 陳梓瀚(vczh) 閱讀(1886) | 評論 (3)編輯 收藏
僅列出標題
共35頁: First 27 28 29 30 31 32 33 34 35 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲女同精品视频| 亚洲午夜在线视频| 噜噜噜91成人网| 欧美一级电影久久| 国产综合视频| 久久中文精品| 欧美国产日韩视频| 一本到12不卡视频在线dvd| 亚洲肉体裸体xxxx137| 欧美另类亚洲| 欧美在线播放| 久久婷婷国产麻豆91天堂| 亚洲人成啪啪网站| 一本久道综合久久精品| 国产噜噜噜噜噜久久久久久久久 | 国产丝袜一区二区三区| 久久国产免费看| 久久综合九色综合欧美就去吻| 亚洲日本一区二区三区| 99精品国产高清一区二区| 国产精品资源在线观看| 欧美国产成人精品| 国产精品区免费视频| 久久久久久久网站| 欧美国产日本高清在线| 亚洲一区视频在线观看视频| 欧美在线播放| 一区二区三区四区精品| 欧美一站二站| 亚洲一级黄色| 免费看的黄色欧美网站| 亚洲欧美激情在线视频| 麻豆91精品| 久久成人免费电影| 欧美日韩免费看| 久久亚洲精品一区| 国产精品免费在线| 亚洲国产经典视频| 国产欧美日本在线| 一本综合久久| 亚洲美女在线国产| 久久久久久久久久久久久久一区| 亚洲综合丁香| 欧美日韩国产免费观看| 免费h精品视频在线播放| 国产精品人成在线观看免费 | 亚洲一区二区在线看| 久久精品夜色噜噜亚洲a∨| 亚洲深夜福利视频| 欧美成人精品一区二区| 久久综合中文| 国产欧美日韩三区| 亚洲一区美女视频在线观看免费| 日韩亚洲在线观看| 免费欧美视频| 欧美xxx在线观看| 国产综合一区二区| 午夜伦理片一区| 午夜精品久久久久久久久| 欧美日韩的一区二区| 欧美激情精品久久久六区热门| 国产午夜亚洲精品羞羞网站| 一区二区精品| 午夜激情久久久| 国产精品亚洲成人| 亚洲综合日韩在线| 欧美一级在线视频| 国产精品乱人伦一区二区| 亚洲一区二区高清视频| 午夜伦理片一区| 国产精品视频网址| 午夜精品久久久久久久白皮肤| 亚洲深夜影院| 国产精品欧美一区二区三区奶水| 亚洲视频一区| 久久久久久网| 亚洲高清视频的网址| 免费不卡在线观看| 亚洲精品中文字幕有码专区| 亚洲专区欧美专区| 国产亚洲精品bv在线观看| 久久国产精品亚洲va麻豆| 噜噜噜躁狠狠躁狠狠精品视频| 影音欧美亚洲| 欧美剧在线免费观看网站| 在线亚洲欧美视频| 久久精品日产第一区二区三区| 黄网站免费久久| 母乳一区在线观看| 一本久久精品一区二区| 久久国产精品一区二区三区| 亚洲高清视频一区| 欧美日韩黄视频| 欧美一区二区三区另类 | 亚洲一区免费视频| 国产亚洲精品久久久久久| 久久综合久久综合久久综合| 99精品视频网| 久久伊人免费视频| 一区二区三区www| 国产免费成人在线视频| 久久嫩草精品久久久精品一| 亚洲精品小视频在线观看| 欧美一区二区三区播放老司机 | 欧美日韩中文在线观看| 午夜天堂精品久久久久| 亚洲国产精品一区二区第一页 | 亚洲精品一区二区在线| 国产精品久久久久久超碰| 久久精品一区| 亚洲午夜黄色| 亚洲国产精品一区二区www在线| 亚洲男人的天堂在线aⅴ视频| 在线观看国产精品网站| 国产精品久久二区二区| 欧美fxxxxxx另类| 午夜激情久久久| 99re66热这里只有精品3直播| 久久久久久夜精品精品免费| 中文精品在线| 99精品免费网| 亚洲人成7777| 在线看不卡av| 精品51国产黑色丝袜高跟鞋| 国产精品美女xx| 欧美日韩视频一区二区三区| 麻豆av一区二区三区| 欧美在线视频在线播放完整版免费观看 | 亚洲成色www8888| 久久亚裔精品欧美| 欧美一级视频免费在线观看| 国产精品99久久久久久久久久久久| 亚洲国产精品va| 狠狠爱综合网| 黄色一区三区| 狠狠操狠狠色综合网| 国产亚洲欧美一区| 国产精品国产三级国产aⅴ浪潮| 欧美日韩另类在线| 欧美日韩国产成人| 欧美日韩一区二区三区在线 | 欧美午夜剧场| 欧美精品成人一区二区在线观看 | 香蕉久久夜色| 亚洲免费在线看| 一本色道久久综合狠狠躁篇的优点 | 久久亚洲精品网站| 久久综合久久美利坚合众国| 久久精品最新地址| 巨胸喷奶水www久久久免费动漫| 久久精品一区二区三区不卡| 久久高清免费观看| 免费久久99精品国产自在现线| 久久综合99re88久久爱| 久久一区中文字幕| 欧美激情在线狂野欧美精品| 亚洲激情偷拍| 亚洲天天影视| 欧美一区二区性| 玖玖玖国产精品| 欧美日韩国产一区精品一区| 欧美日韩午夜激情| 国产精品综合久久久| 国产小视频国产精品| 一区二区三区我不卡| 亚洲欧洲一区二区在线播放| 一区二区三区欧美在线| 亚洲欧美日韩视频二区| 久久先锋影音av| 亚洲欧洲在线播放| 亚洲自拍三区| 免费人成精品欧美精品| 欧美视频一区二区| 国产一区二区在线免费观看| 亚洲国产精品视频一区| 亚洲一级黄色| 免费在线成人| 亚洲少妇中出一区| 久久全国免费视频| 欧美日韩伦理在线免费| 国产在线精品二区| 日韩亚洲不卡在线| 久久久综合香蕉尹人综合网| 亚洲国产综合在线| 久久爱www久久做| 欧美精品videossex性护士| 国产精品日韩在线观看| 亚洲欧洲一区二区天堂久久| 亚洲欧美综合v| 亚洲国产婷婷综合在线精品| 欧美亚洲综合久久| 欧美日韩免费在线| 亚洲黄色尤物视频| 欧美亚洲日本国产| 亚洲区一区二区三区| 久久久噜噜噜久久中文字免| 国产精品无码专区在线观看| 亚洲精品一区二区三区四区高清| 久久久久成人网| 亚洲影视综合|