原创 欣賞一下iPhone 4

  原視頻網址:http://www.apple.com.cn/iphone/features.html#design-video iPhone 4出來了,iPhone依舊是王者啊,Android要加油了。總的來說iPhone 4有如

原创 基於Predictive Parsing的ABNF語法分析器(六)——AbnfParser文法解析器之多個符號連接的情形(如rule和CRLF)

基於預測的文法分析器,一個明顯的特點就是將非終結符定義爲解析函數(方法),當非終結符號可以派生爲其他非終結符號時,在解析函數中遞歸調用即可。這種方法

原创 HTML5學習筆記--2010.01.20--001

  雖然傳說HTML5要2022年才能獲得W3C的推薦,不過提前學習總不會有壞處的,俗話說早起的鳥兒有蟲吃嘛。而且沒有看過HTML4的規範文檔,這次系統的學習一下HTML5,就當是補課吧。 原文網址http://www.w3.org/TR

原创 SIP協議開發隨筆-DFA希望的曙光

斷斷續續數個月的編碼,終於把SIP的ABNF語法轉換爲NFA了(未經任何優化,大約100萬個狀態),然後NFA到DFA正在轉換中,i7-2600K跑

原创 基於Predictive Parsing的ABNF語法分析器(十一)——AbnfParser文法解析器之重複文法(repetition)

今天寫的是關於重複文法的解析,ABNF和BNF相比,一個明顯的差異就是引入了重複語法,使得我們可以方便的讓一個文法元素重複若干次。 例如30"B"表示30個字母B,30*60表示最少30個,最多60個字母B,等等。 先來看看解析部分的代碼

原创 基於Predictive Parsing的ABNF語法分析器(三)——ABNF語法解析器的基本框架

前面說過,一個能夠識別ABNF文法並且自動構造ABNF文法解析器的生成器(parser generator),它首先要能夠識別ABNF文法,即把ABNF讀入內存並結構化之後,才能進行後續的生成解析器的步驟。我把這個讀入ABNF文法的模塊稱

原创 基於Predictive Parsing的ABNF語法分析器(四)——準備單元測試代碼

單元測試的重要性是不言而喻的,對於ABNF的例子來說,通過單元測試除了可以發現程序的BUG之外,還可以發現預測解析器能夠支持哪些情況下的文法,以及那些情況下解析器無能爲力(所謂FEATURE,嘿嘿)。 我在這個項目中使用JUnit來做單元

原创 基於Predictive Parsing的ABNF語法分析器(七)——AbnfParser文法解析器之多個選項的情形(如WSP、c-nl和element)

現在來看看對於產生式有多個選項的情形,例如WSP可以是空格SP或者跳格HTAB。對於這種情況,一般是向前看一個字符,根據這個字符來選擇產生式。當然,如果兩個產生式的起始字符都一樣,那麼只向前看一個字符就不夠了,這種情況下需要向前看2個或者

原创 基於Predictive Parsing的ABNF語法分析器(二)——ABNF語法元素的類定義

下面根據ABNF的語法定義,逐條來定義ANBF語法元素類: (一)首先來看rulelist: rulelist = 1*( rule / (*c-wsp c-nl) )rulelist(規則列表)是ABNF語法的最頂層的符號

原创 基於Predictive Parsing的ABNF語法分析器(一)——ABNF語法介紹

最近一直在做Session Initiation Protocol (SIP)協議方面的開發,SIP在電信VoIP領域應用非常廣泛,是一個基於文本語法的協議。SIP的語法規範是使用ABNF來定義的。對SIP語法有興趣的同學請移步其Augm

原创 基於Predictive Parsing的ABNF語法分析器(十)——AbnfParser文法解析器之數值類型(num-val)

ANBF語法中的數值類型有3種:二進制、十進制和十六進制,可以是一個以點號分隔的數列,也可以是一個數值的範圍。例如,%d11.22.33.44.55表示五個有次序的十進制數字“11、22、33、44、55”,而%x80-ff表示一個字節,

原创 基於Predictive Parsing的ABNF語法分析器(九)——AbnfParser文法解析器之帶星號的情形(c-wsp和comment)

直接上代碼吧,都寫到註釋裏面了。 /* This file is one of the component a Context-free Grammar Parser Generator, which accept a

原创 基於Predictive Parsing的ABNF語法分析器(八)——AbnfParser文法解析器之帶星號的情形(如char-val, prose-val)

帶星號*表示重複的次數,例如*A表示A可以重複0至任意多次,*3A表示A可以重複0次、1次、2次或3次,4*A表示A至少要重複4次。我們先來看最簡單的情形*A,ABNF的語法定義中char-val和prose-val都屬於這種。 /*

原创 基於Predictive Parsing的ABNF語法分析器(五)——AbnfParser文法解析器之單字符的情形(如HTAB、LF、CR、SP)

先來看看AbnfParser類如何對ABNF文法中最簡單的一些單字節符號如何進行解析,這些單字節符號包括跳格、換行、回車和空格:/* Thi

原创 eXosip2的初始化

根據eXosip文檔寫的,不過不知道爲什麼編譯不通過,暫時沒有時間去處理了,先把代碼保存在這裏。哪位同學看出問題的麻煩告知,謝謝啦。 #include <osip2/osip_mt.h> #include <eXosip2/eXosip.