freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

嵌入式瀏覽器開發(fā)畢業(yè)設計畢業(yè)論文-文庫吧

2025-06-13 13:06 本頁面


【正文】 負責。 第二章 HTML詞法分析器的設計及其應用HTML詞法分析是瀏覽器設計的基礎環(huán)節(jié)之一,也是整個設計過程中重要的前端工作,其數(shù)據結構的擬定與接下來的語法分析和布局算法密切相關,詞法分析的效率與準確性、容錯性也關系到整個瀏覽器設計的質量。下面將介紹一個HTML詞法分析器——Bit Token的設計思路。Bit Token是Netbit Browser的HTML詞法分析器,使用標準C編程,Netbit Browser是基于Linux/Gtk的瀏覽器,開放源碼項目,網址是。 Bit Token的組成及其功能Bit Token作為Netbit Browser的詞法分析部份,負責對接收的HTML代碼進行詞法分析,主要的目的是提取網頁中元素的名稱及其屬性,并以恰當?shù)男问剑窗匆欢ǖ臄?shù)據結構)加以保存,也就是完成了將數(shù)據流離散化、結構化的過程。主要由以下幾個部分組成: 初始化:完成對數(shù)據結構的初始化,主要是分配內存,變量賦初值。 主體的數(shù)據流分析:逐字符的進行判斷,確定數(shù)據的歸屬類型。 元素的分析:提取元素的名稱、屬性和值域。 釋放:主要是對內存的釋放。 數(shù)據結構typedef struct BitTokenContext{char * strBuffer。 //當前正在處理的HTML代碼int bufferLength。int curPosition。char * global_strBuffer。 //全局HTML代碼int global_bufferLength。int global_curPosition。BitTokenList *tokenList。 //元素節(jié)點鏈表BitTokenList *tokenList_tail。BitPTagList pTagList。 //元素名稱表,指向靜態(tài)數(shù)據}BitTokenContext,*BitPTokenContext。BitTokenContext是用于存儲當前待分析網頁全局屬性的數(shù)據結構,其中TokenList是核心的元素節(jié)點鏈表。詞法分析的目的就是生成這樣一個鏈表。下面給出該鏈表的數(shù)據結構,是很簡單的雙向鏈表。typedef struct TokenList{ BitToken *token。 //元素節(jié)點 struct TokenList *priou。 struct TokenList *next。}BitTokenList,*BitPTokenList。以下是元素節(jié)點的數(shù)據結構:typedef struct BitToken{int type。 //節(jié)點類型,如定義的HTML_BODY,HTML_TXT等。char *pData。 //如果是HTML_TXT型元素,則為其內容,否則為空BOOL end。 //是否是結束元素,如/bodyBitTokenAttrList *attrList。 //元素屬性鏈表,因為可能有多個屬性,所以使用鏈表存儲BitTokenAttrList *attrList_tail。}BitToken,*BitPToken。請注意,以上出現(xiàn)tail標記的指針變量,如BitTokenList * tokenList_tail等,其作用是用于保存鏈表結尾節(jié)點指針,便于在釋放內存時,直接找到鏈尾,提高了算法的效率。 算法 基本算法:首先介紹基本的算法:(1) 從存儲網頁的字符串中,順序讀入一個字符(2) 如果遇到 ,認為遇到TAG(元素),處理該元素,使用函數(shù)Token_ConsumTag(),處理完畢后,指針移到該元素尾。 (3) 如果遇到回車、空格,則跳過。(4) 如果遇到 ,則跳過(不應該出現(xiàn)此情況,為了容錯)。 (5) 如果非以上情況,則認為遇到文字,處理這段文字,使用函數(shù)Token_Consum_PlainText()。處理完畢,指針指向下一個元素首。(6) 循環(huán)以上操作,直到該網頁分析完畢。 由此看來,主算法十分簡單而清晰,主要是Token_ConsumTag()和Token_Consum_PlainText()這兩個函數(shù)起關鍵作用,由于其中涉及到許多細節(jié)問題,此處不予詳述。 算法效率與改進:采用以上的基本算法,是可用的,但當網頁比較大的時候,比如600K,該算法的效率成倍下降,這主要是由于要處理的字符串太大,在內存中完成查找、替換、復制、移動等操作,響應時間明顯下降。對此的改進辦法就是分段進行詞法分析,不僅極大的提高了效率(在某些情況下約提高30倍),也有利于瀏覽器整體設計,因為當網頁較大時,若等待全部內容傳輸完畢,再一次性完成詞法分析和布局,用戶會感到等待時間過長,一般現(xiàn)在成熟的瀏覽器都采用邊傳輸,邊分析,邊顯示。分段進行詞法分析的算法復雜度明顯增加,比如,當每段定為1024字節(jié),在第1024字節(jié)處,可能正好將一個完整元素截斷,按常規(guī)分析方法會造成錯誤。解決的辦法是,采用回溯,確認要分析的部份至少包含1個完整元素。具體做法是:判斷1024字節(jié)處是否為元素結束字符 ‘’,如果不是,則判斷前一個字節(jié),直到找到元素結束字符為止,這樣可保證至少包含一個元素。采用分段進行詞法分析,實際每次分析的代碼會不足1024字節(jié),余下的部份匯入到下一段的分析過程即可,直到所有內容被分析完畢。下面是一段很簡單的HTML代碼。htmlimg src=“” width=200 height=100a HREF=首都在線/a/html分析后,數(shù)據存儲結構如下:img首都在線100heightdatahrefatext200widthsrc/a可以看到,詞法分析的結果是一個元素節(jié)點鏈表,每個節(jié)點的屬性也形成了一個鏈表,元素節(jié)點是有先后順序的,元素屬性的先后順序是無所謂的。詞法分析將網頁的文本數(shù)據流以清晰的結構表現(xiàn)出來,這樣,在后面的應用中就可以很容易的遍歷各節(jié)點,并輕松地獲得各元素節(jié)點的屬性。 HTML詞法分析的應用 應用舉例:HTML詞法分析程序通常應用于瀏覽器設計、網頁制作軟件設計等領域,本人以一個使用VC開發(fā)的軟件“HTML智能分析”來舉例說明,下載網址:?!癏TML智能分析”同樣使用Bit Token詞法分析器,“HTML智能分析”是一個網頁信息提取、處理軟件。具有以下主要功能:智能提取網頁中的文字信息,智能排版,并可在進行編輯后保存。統(tǒng)計網頁的有關信息。根據用戶設置的版式,將分析和編輯的結果,自動生成新的網頁。用戶可使用該軟件來將HTML轉為TXT格式,其對HTML中文字內容的提取準確、快速、不含冗余信息,版式工整清晰,保持本來面貌。其主要設計思路是,在Bit Token詞法分析器的基礎上,結合瀏覽器布局的基本算法,對影響到TXT版面效果的元素進行處理。比如PRE標記,代表所包含的內容瀏覽器應不予分析,按TXT格式輸出,而如表格TR等元素則意味著需要換行。而在HTML中,在無PRE這種特殊情況時,回車都是忽略不記的。這就造成了矛盾。使用常規(guī)的簡單算法進行HTML到TXT的轉換無法解決這些問題。造成轉換后的版式“失真“。而“HTML智能分析”卻能很好的解決。由于“HTML智能分析”使用了底層的詞法分析技術,還可以很容易的過濾掉SCRIPT與STYLE(樣式表)。并可以對網頁中的元素進行統(tǒng)計和語法校驗。以下是該程序的片斷: pTtokenList=global_cxtokenList。 //取首節(jié)點 while(pTtokenList!=NULL) //循環(huán)直至處理完所有節(jié)點 { switch(pTtokenListtokentype) {//根據節(jié)點類型,做不同的處理 case HTML_TITLE: …… case HTML_TEXT: …… default: …… } //switch pTtokenList=pTtokenListnext。 //取下一個節(jié)點 } //while這段程序實際上就是一個簡單的語法分析和布局的過程。 Bit Token在應用中存在的問題及修改意見由于HTML的標記多是成對出現(xiàn)的,并且存在SCRIPT這樣的特殊元素,其內容為Javascript程序,函數(shù)的字符串參數(shù)等可能包含其它的元素標記。例如語句:Alert(“font is a tag”)。因此,在詞法分析時要對SCRIPT標記進行特殊處理,遇到SCRIPT就應逐字符讀入后面的內容,直到遇到下一個/SCRIPT標記。目前的Bit Token由于開發(fā)時間所限,未對其加以特殊處理,存在一些問題,但由于瀏覽器對Javascript的支持是較復雜的工作,目前的Netbit Browser尚不予實現(xiàn),因而沒有導致明顯問題,而“HTML智能分析”這個軟件只是需要對Javascript進行刪除操作,也不會造成影響。盡管如此,對SCRIPT的特殊處理還是有待完善,盡管這同時也會帶來一些問題,需要進行大量的測試,來保證新加入代碼的穩(wěn)定性。正如前面所述,HTML詞法分析是瀏覽器設計的基礎環(huán)節(jié)之一,但并非最重要和最具難度的環(huán)節(jié),若想開發(fā)出效果較好的瀏覽器產品,還要在布局和GUI設計上多下功夫。 第三章 瀏覽器JavaScript支持的實現(xiàn)本部份主要針對Mozilla和Netscape瀏覽器源代碼的JavaScript部份進行了分析,闡述了瀏覽器Javascript實現(xiàn)的機制。 開發(fā)環(huán)境JavaScript Reference與JavaScript API:JavaScript Reference是Mozilla所使用JavaScript開發(fā)環(huán)境,是使用ANSI C的獨立的開發(fā)包,據Mozilla文檔介紹,該開發(fā)包涉及到超過160家公司的版權。而且被廣泛使用,實際已成為了進行JavaScript應用開發(fā)的標準平臺。JavaScript Reference可以用于建立包含JavaScript runtime的Library或 DLL。既可以編譯成小的 shell 程序(像早期的BASIC),又連接Library后生成交互式的JavaScript解釋器, 文件。由于使用了ANSI C編程,可以用VC、GCC等編譯器在不同平臺下編譯。生成的shell 程序,對比瀏覽器對JavaScript的支持,相同之處是使用相同的包含JavaScript runtime的Library 或 DLL,我們把這部份相同的Library或 DLL稱為JavaScript API,我們實際開發(fā)JavaScript應用,也是在JavaScript API基礎上工作,而不用過多考慮其內部的實現(xiàn)。關于JavaScript API,參見JavaScript API詳解。JavaScript API實際就是Javscript解釋器的對外接口函數(shù)庫。 JavaScript EngineJavaScript Engine是瀏覽器開發(fā)者為了利用JavaScript API來實現(xiàn)實際應用而設立的中間層,用于初始化JavaScript環(huán)境,提供對JavaScript解釋、執(zhí)行的接口。瀏覽器主體程序的設計者可以通過JavaScript Engine,方便的實現(xiàn)各種應用,畢竟JavaScript API太基礎了,直接使用不太方便。下面介紹JavaScript Engine的主要功能和實現(xiàn)方法。這也包含了利用JavaScript API進行應用的基本思路。(1) 初始化:內存分配:rt=JS_Init(10000L)。初始化cx:cx = JS_NewContext(rt, STACK_CHUNK_SIZE)。初始化globalObj:globalObj = JS_NewObject(cx, amp。globalClass, 0, 0)。定義標準類:JS_InitStandardClasses(cx, globalObj)。定義系統(tǒng)函數(shù):JS_DefineFunctions(cx, globalObj, g_functions)。定義報錯函數(shù):JS_SetErrorReporter(cx,JS_ErrorReporter)。注冊其它類:RegisterClassPoint (cx,globalObj)。RegisterClassSize (cx,globalObj)。RegisterClassRect (cx,globalObj)。RegisterClassPolygon (cx,globalObj)。RegisterClassColorKey (cx,globalObj)。RegisterClassTDTimer (cx,globalObj)。初始化定時器:TDTimerListInit()。(2) 提供對JavaScript解釋、執(zhí)行的接口函數(shù):TD_EvaluateScript(JSContext *cx,JSObject *obj, const char *bytes, uintN length,const char *filename, uintN lineno,jsval *rval) JavaScript與瀏覽器接合基本概念:JavaScript操作HTML元素的常見方式例:htmlheadscript!function ChangeImage(index){=a+index+.gif。}/script/heada onmouseover=ChangeImage(0)。軍人/abr
點擊復制文檔內容
語文相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1