編解碼器生成裝置及方法【專利摘要】本發(fā)明實(shí)施例提供一種編解碼器生成裝置及方法。該方法包括:將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹;遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口?!緦@f明】編解碼器生成裝置及方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明實(shí)施例涉及通信技術(shù),尤其涉及一種編解碼器生成裝置及方法?!?br>背景技術(shù):
】[0002]抽象語(yǔ)法標(biāo)記(AbstractSyntaxNotationOne,簡(jiǎn)稱ASN.1)是一種國(guó)際標(biāo)準(zhǔn),描述了一種對(duì)數(shù)據(jù)進(jìn)行表示、編碼、傳輸和解碼的數(shù)據(jù)格式。在任何需要以數(shù)字方式發(fā)送信息的地方,都可以基于ASN.1發(fā)送各種形式的信息(聲頻、視頻、數(shù)據(jù)等等)。[0003]現(xiàn)有技術(shù)中,ASN.1編解碼器主要以插件的形式實(shí)現(xiàn)。具體地,先編寫ASN.1文件,再用對(duì)應(yīng)的代碼自動(dòng)生成工具將該ASN.1文件轉(zhuǎn)化為C或C++或java源文件,最后將源文件編譯成動(dòng)態(tài)鏈接庫(kù)或jar包,該動(dòng)態(tài)鏈接庫(kù)或jar包以插件的形式存在,并供應(yīng)用程序調(diào)用。[0004]然而,在制作插件的過程中,需要將ASN.1文件轉(zhuǎn)化為C或C++或java源文件,再進(jìn)行編譯,這種以插件形式存在的編解碼器的制作過程比較復(fù)雜和繁瑣。【
發(fā)明內(nèi)容】[0005]本發(fā)明實(shí)施例提供一種編解碼器生成裝置及方法,以簡(jiǎn)化編解碼器的制作過程。[0006]第一方面,本發(fā)明實(shí)施例提供一種編解碼器生成裝置,包括:[0007]詞法分析模塊,用于將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);[0008]語(yǔ)法分析模塊,用于根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹;[0009]語(yǔ)法樹遍歷模塊,用于遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;[0010]其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口。[0011]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述語(yǔ)法分析模塊具體用于:[0012]根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹,并確定所述語(yǔ)法樹各節(jié)點(diǎn)的屬性信息以及所述語(yǔ)法樹的嵌套結(jié)構(gòu);[0013]所述語(yǔ)法樹遍歷模塊具體用于:[0014]遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),根據(jù)各節(jié)點(diǎn)的屬性信息,創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器,并根據(jù)所述語(yǔ)法樹的嵌套結(jié)構(gòu),將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹,并將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中。[0015]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述裝置還包括:[0016]編解碼庫(kù),用于向各所述子編解碼器單元提供無(wú)狀態(tài)編解碼工具函數(shù),以使各所述子編解碼器單元對(duì)所述無(wú)狀態(tài)編解碼工具函數(shù)進(jìn)行調(diào)用。[0017]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括:[0018]保存模塊,用于在語(yǔ)法樹遍歷模塊將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹之后,將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中,并建立所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中,以使應(yīng)用程序根據(jù)所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)確定所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址。[0019]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述裝置還包括:[0020]文件遍歷模塊,用于在所述數(shù)據(jù)格式類描述文件為多個(gè)時(shí),遍歷各所述數(shù)據(jù)格式類描述文件,生成與所述數(shù)據(jù)格式類描述文件對(duì)應(yīng)的編解碼器對(duì)象樹,并將各所述編解碼器對(duì)象樹保存在內(nèi)存中,建立各所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與各所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中。[0021]結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)格式類描述文件為抽象語(yǔ)法標(biāo)記描述文件。[0022]第二方面,本發(fā)明實(shí)施例提供一種編解碼器生成方法,包括:[0023]將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);[0024]根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹;[0025]遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;[0026]其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口。[0027]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹,包括:[0028]根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹,并確定所述語(yǔ)法樹各節(jié)點(diǎn)的屬性信息以及所述語(yǔ)法樹的嵌套結(jié)構(gòu);[0029]所述遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹包括:[0030]遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),根據(jù)各節(jié)點(diǎn)的屬性信息,創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器,并根據(jù)所述語(yǔ)法樹的嵌套結(jié)構(gòu),將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹,并將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中。[0031]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述在語(yǔ)法樹遍歷模塊將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹之后,還包括:[0032]將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中,并建立所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中,以使應(yīng)用程序根據(jù)所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)確定所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址。[0033]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,在所述數(shù)據(jù)格式類描述文件為多個(gè)時(shí),所述方法還包括:[0034]遍歷各所述數(shù)據(jù)格式類描述文件,生成與所述數(shù)據(jù)格式類描述文件對(duì)應(yīng)的編解碼器對(duì)象樹,并將各所述編解碼器對(duì)象樹保存在內(nèi)存中,建立各所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與各所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中。[0035]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)格式類描述文件為抽象語(yǔ)法標(biāo)記描述文件。[0036]本發(fā)明實(shí)施例提供的編解碼器生成裝置及方法,該裝置包括詞法分析模塊,用于將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);語(yǔ)法分析模塊,用于根據(jù)語(yǔ)法規(guī)貝U,將所述多個(gè)單詞符號(hào)串成語(yǔ)法樹;語(yǔ)法樹遍歷模塊,用于遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口,不需要將數(shù)據(jù)格式類描述文件轉(zhuǎn)化為C或C++或java源文件,然后編譯生成插件,本實(shí)施例直接根據(jù)語(yǔ)法樹獲取編解碼器,簡(jiǎn)化了編解碼器的生成過程,并且使得應(yīng)用程序在啟動(dòng)的初始化階段可以調(diào)用編解碼器對(duì)象樹?!緦@綀D】【附圖說明】[0037]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0038]圖1為本發(fā)明編解碼器生成裝置實(shí)施例一的結(jié)構(gòu)示意圖;[0039]圖2為本發(fā)明編解碼器生成方法實(shí)施例一的流程示意圖。【具體實(shí)施方式】[0040]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。[0041]圖1為本發(fā)明編解碼器生成裝置實(shí)施例一的結(jié)構(gòu)示意圖。本發(fā)明提供的編解碼器生成裝置可以由任意的軟件和/或硬件實(shí)現(xiàn)。如圖1所示,本發(fā)明提供的編解碼器生成裝置10包括詞法分析模塊101、語(yǔ)法分析模塊102和語(yǔ)法樹遍歷模塊103。[0042]詞法分析模塊101,用于將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);[0043]語(yǔ)法分析模塊102,用于根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹;[0044]語(yǔ)法樹遍歷模塊103,用于遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;[0045]其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口。[0046]在具體實(shí)現(xiàn)過程中,數(shù)據(jù)格式類描述文件具體可以為描述數(shù)據(jù)格式以及數(shù)據(jù)格式相關(guān)內(nèi)容的描述文件。例如“ASN.1”描述文件,描述了一種對(duì)數(shù)據(jù)進(jìn)行表示、編碼、傳輸和解碼的數(shù)據(jù)格式,JSON(JavaScriptObjectNotation)描述文件描述了一種數(shù)據(jù)交換格式。本實(shí)施例中的數(shù)據(jù)格式類描述文件還可以為ASN.1的各種自定義的擴(kuò)展,或者JSON的各種自定義的擴(kuò)展,或者其它類似ASN.1或JSON的數(shù)據(jù)格式類描述文件,并且具有和ASN.1的編碼規(guī)則類似的編解碼規(guī)則。[0047]在具體實(shí)現(xiàn)過程中,在應(yīng)用程序的初始化階段,根據(jù)數(shù)據(jù)格式類描述文件,在內(nèi)存中創(chuàng)建與該數(shù)據(jù)格式類描述文件對(duì)應(yīng)的編解碼器,然后進(jìn)行編解碼過程。[0048]下面采用具體的實(shí)施例,對(duì)如何創(chuàng)建編解碼器進(jìn)行詳細(xì)說明。[0049]首先,詞法分析模塊101將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào),在具體實(shí)現(xiàn)過程中,詞法分析模塊101可以從左至右逐個(gè)字符地對(duì)數(shù)據(jù)格式類描述文件的字符序列進(jìn)行掃描,產(chǎn)生一個(gè)個(gè)的單詞符號(hào),其中,單詞符號(hào)是一個(gè)程序語(yǔ)言的基本,包括關(guān)鍵字、標(biāo)識(shí)符、常數(shù)運(yùn)算符號(hào)、界符等。[0050]進(jìn)一步地,可通過如下方式獲取詞法分析模塊:編寫與抽象語(yǔ)法標(biāo)記的語(yǔ)法特征對(duì)應(yīng)的詞法規(guī)則文件(.1后綴文件),將所述詞法規(guī)則文件作為Flex工具的輸入,F(xiàn)lex工具生成詞法分析模塊的C++或java代碼。對(duì)于如何獲取詞法分析模塊,本實(shí)施例此處不做特另IJ限制。[0051]接著,語(yǔ)法分析模塊102根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹。具體地,語(yǔ)法規(guī)則規(guī)定了如何從單詞符號(hào)形成更大的結(jié)構(gòu)。語(yǔ)法分析模塊102可以根據(jù)語(yǔ)法規(guī)則,通過自頂向下分析法或自頂向上分析法生成語(yǔ)法樹,本領(lǐng)域技術(shù)人員可以理解,該語(yǔ)法樹存儲(chǔ)在內(nèi)存中,語(yǔ)法樹的各個(gè)節(jié)點(diǎn)存儲(chǔ)各種屬性信息,語(yǔ)法樹能夠描述復(fù)雜數(shù)據(jù)結(jié)構(gòu)各個(gè)成員之間的相互關(guān)系。進(jìn)一步地,語(yǔ)法分析模塊102在對(duì)多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹的同時(shí),還確定語(yǔ)法樹各節(jié)點(diǎn)的屬性信息,根據(jù)各節(jié)點(diǎn)的屬性信息確定語(yǔ)法樹的嵌套結(jié)構(gòu)。[0052]進(jìn)一步地,可通過如下方式獲取語(yǔ)法分析模塊:編寫與抽象語(yǔ)法標(biāo)記的語(yǔ)法特征對(duì)應(yīng)的上下文無(wú)關(guān)文法描述文件(.y后綴文件),將所述上下文無(wú)關(guān)文法描述文件作為Bison軟件的輸入,Bison軟件生成語(yǔ)法分析模塊的C++或java代碼。對(duì)于如何獲取語(yǔ)法分析模塊,本實(shí)施例此處不做特別限制。[0053]由上可知,詞法分析模塊和語(yǔ)法分析模塊是由第三方工具生成。當(dāng)抽象語(yǔ)法標(biāo)記的語(yǔ)法擴(kuò)充或者變時(shí),才需要修改.1和.y文件,然后再用上面的兩個(gè)工具生成詞法分析模塊和語(yǔ)法分析模塊的源代碼。[0054]然后,語(yǔ)法樹遍歷模塊103遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹。[0055]具體地,語(yǔ)法樹遍歷模塊103可以通過深度優(yōu)先的先序遍歷算法來(lái)遍歷語(yǔ)法樹的各節(jié)點(diǎn),根據(jù)各節(jié)點(diǎn)的屬性信息,創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器。得到多個(gè)子編解碼器之后,根據(jù)語(yǔ)法樹的嵌套結(jié)構(gòu),將各子編解碼器單元串成與語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹,其中,編解碼器對(duì)象樹中各子編解碼器的嵌套結(jié)構(gòu)與語(yǔ)法樹中各節(jié)點(diǎn)的嵌套結(jié)構(gòu)具有對(duì)應(yīng)關(guān)系。[0056]當(dāng)數(shù)據(jù)格式類描述文件為“ASN.1”描述文件時(shí),ASN.1規(guī)范規(guī)定了變量名命名規(guī)貝U、基本數(shù)據(jù)類型、基本構(gòu)造類型。特別地,基于“ASN.1”的描述文件可以有許多編解碼規(guī)貝丨J,如基本編碼規(guī)則(BasicEncodingRules,簡(jiǎn)稱BER),壓縮編碼規(guī)則(packedEncodingRules,簡(jiǎn)稱PER)等,該些編解碼規(guī)則可應(yīng)用于各類通信接口。[0057]其中,基本數(shù)據(jù)類型包括:B00LEAN,INTEGER,BITSTRING,OCTETSTRING,REAL,ENUMERATED,ANY,OBJECTIDENTIFIER等。其中,字符串類型,都是OCTETSTRING的子類型包括:NumericString,PrintableString,TeletexString,VideotexString,,IA5String,GraphicString,VisibleString,GeneralString0[0058]基本構(gòu)造類型:SEQUENCE指一個(gè)或多個(gè)組成元素的有序列表,其元素可以是各種類型,也可以是SEQUENCE;SEQUENCEOF則是SEQUENCE的特例,它的組成元素必須是同一個(gè)ASN.1類型,類似數(shù)組;[0059]SET類似于SEQUENCE,區(qū)別在于它的組成元素是無(wú)序排列的;SETOF和SET的區(qū)別類似于SEQUENCE和SEQUENCEOF的區(qū)別;[0060]CHOICE包含一個(gè)可供選擇類型的列表。[0061]由此,根據(jù)ASN.1描述文件創(chuàng)建的語(yǔ)法樹,以及根據(jù)該語(yǔ)法樹創(chuàng)建的與該語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹,在編解碼器對(duì)象樹,各子編解碼器單元將與ASN.1描述文件的基本數(shù)據(jù)類型和基本構(gòu)造類型對(duì)應(yīng)。其中,與基本數(shù)據(jù)類型對(duì)應(yīng)的子編解碼器單元為簡(jiǎn)單類型的編解碼器單元,與基本構(gòu)造類型對(duì)應(yīng)的子編解碼器單元為組合類型的編解碼器單元。特別地,組合類型的編解碼器單元里存放著簡(jiǎn)單類型編解碼器器單元或者其它組合類型編解碼器單元的指針以及相關(guān)的控制信息(例如:CH0ICE的選擇信息,ARRAY的長(zhǎng)度等)。[0062]當(dāng)數(shù)據(jù)格式類描述文件為JSON描述文件時(shí),JSON建構(gòu)有兩種結(jié)構(gòu),包括對(duì)象和數(shù)組,通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)。[0063]其中,對(duì)象:對(duì)象的數(shù)據(jù)結(jié)構(gòu)為{key:value,key:value,...}的鍵值對(duì)的結(jié)構(gòu),在面向?qū)ο蟮恼Z(yǔ)言中,key為對(duì)象的屬性,value為對(duì)應(yīng)的屬性值,屬性值的類型可以是數(shù)字、字符串、數(shù)組、對(duì)象幾種。數(shù)組的數(shù)據(jù)結(jié)構(gòu)為["java","javascript","vb",...],取值方式和所有語(yǔ)言中一樣,使用索引獲取,字段值的類型可以是數(shù)字、字符串、數(shù)組、對(duì)象幾種。經(jīng)過對(duì)象、數(shù)組2種結(jié)構(gòu)就可以組合成復(fù)雜的數(shù)據(jù)結(jié)構(gòu)了。[0064]由此,根據(jù)JSON描述文件創(chuàng)建的語(yǔ)法樹,以及根據(jù)該語(yǔ)法樹創(chuàng)建的與該語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹,在編解碼器對(duì)象樹中,各子編解碼器單元將與JSON描述文件的對(duì)象和數(shù)組對(duì)應(yīng)。其中,與對(duì)象對(duì)應(yīng)的子編解碼器單元為簡(jiǎn)單類型的編解碼器單元,與數(shù)組對(duì)應(yīng)的子編解碼器單元為組合類型的編解碼器單元。[0065]對(duì)于基于其它數(shù)據(jù)格式類描述文件構(gòu)建語(yǔ)法樹,創(chuàng)建編解碼器的過程,本實(shí)施例此處不再贅述。[0066]由上可知,各子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口。[0067]在編解碼器創(chuàng)建結(jié)束后,在具體的編解碼過程中,編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為數(shù)據(jù)流或編碼流的入口,在數(shù)據(jù)流或編碼流進(jìn)入根節(jié)點(diǎn)的編解碼接口之后,按照深度優(yōu)先的先序遍歷方式,遍歷編解碼器對(duì)象樹,從而對(duì)數(shù)據(jù)流進(jìn)行編碼,對(duì)編碼流進(jìn)行解碼。[0068]上述實(shí)施例中,對(duì)構(gòu)建編解碼器對(duì)象樹進(jìn)行了詳細(xì)說明。在具體實(shí)現(xiàn)過程中,編碼器對(duì)象樹或解碼器對(duì)象樹的構(gòu)建過程,與構(gòu)建編解碼器對(duì)象樹的過程類似,所不同的是子編解碼器單元的內(nèi)部實(shí)現(xiàn)不同,對(duì)于編碼器對(duì)象樹或解碼器對(duì)象樹的構(gòu)建過程,本實(shí)施例此處不再贅述。[0069]本發(fā)明實(shí)施例提供的編解碼器生成裝置,包括詞法分析模塊,用于將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);語(yǔ)法分析模塊,用于根據(jù)語(yǔ)法規(guī)則,將所述多個(gè)單詞符號(hào)串成語(yǔ)法樹;語(yǔ)法樹遍歷模塊,用于遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口,不需要將“數(shù)據(jù)格式類”描述文件轉(zhuǎn)化為C或C++或java源文件,然后編譯生成插件,本實(shí)施例直接根據(jù)語(yǔ)法樹獲取編解碼器,簡(jiǎn)化了編解碼器的生成過程,并且使得應(yīng)用程序在啟動(dòng)的初始化階段可以調(diào)用編解碼器對(duì)象樹。[0070]可選地,該編解碼器生成裝置還包括編解碼庫(kù),用于向各所述子編解碼器單元提供無(wú)狀態(tài)編解碼工具函數(shù),以使各所述子編解碼器單元對(duì)所述無(wú)狀態(tài)編解碼工具函數(shù)進(jìn)行調(diào)用。[0071]在具體實(shí)現(xiàn)過程中,子編解碼器在進(jìn)行編解碼的過程中,可以調(diào)用編解碼庫(kù)中的無(wú)狀態(tài)編解碼工具函數(shù),實(shí)現(xiàn)編解碼過程。[0072]可選地,該編解碼器生成裝置還包括保存模塊,用于在語(yǔ)法樹遍歷模塊將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹之后,將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中,并建立所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中,以使應(yīng)用程序根據(jù)所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)確定所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址。[0073]以“ASN.1”描述文件為例,在具體實(shí)現(xiàn)過程中,當(dāng)編解碼器對(duì)象樹建立后,將編解碼器對(duì)象樹保存在內(nèi)存中,使得應(yīng)用程序在使用編解碼器對(duì)象樹時(shí),可以直接從內(nèi)存中調(diào)用編解碼器對(duì)象樹。具體地,為了使應(yīng)用程序能夠快速的調(diào)用編解碼器對(duì)象樹,保存模塊還建立編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與“ASN.1”描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系。[0074]其中,“ASN.1”描述文件的標(biāo)識(shí)具體可以為“ASN.1”描述文件的版本名或類型名等,對(duì)于“ASN.1”描述文件的標(biāo)識(shí)的具體實(shí)現(xiàn)方式,本實(shí)施例此處不再贅述。[0075]由于編解碼器對(duì)象樹的編解碼接口位于編解碼器對(duì)象樹的根節(jié)點(diǎn),因此,建立編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與“ASN.1”描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,使得應(yīng)用程序可以根據(jù)關(guān)聯(lián)關(guān)系,查找到“ASN.1”描述文件的標(biāo)識(shí)對(duì)應(yīng)的編解碼器對(duì)象樹的根節(jié)點(diǎn)。[0076]進(jìn)一步地,關(guān)聯(lián)關(guān)系的建立可以通過以下可能的實(shí)現(xiàn)方式實(shí)現(xiàn)。一種可能的實(shí)現(xiàn)方式為:對(duì)編解碼器對(duì)象樹根節(jié)點(diǎn)的內(nèi)存地址進(jìn)行引用,生成編解碼器對(duì)象樹指針,建立編解碼器對(duì)象樹指針與“ASN.1”描述文件的標(biāo)識(shí)的對(duì)應(yīng)關(guān)系,并以名值對(duì)的形式保存在編解碼器池中。另一種可能的實(shí)現(xiàn)方式,建立編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與“ASN.1”描述文件的標(biāo)識(shí)的映射關(guān)系。又一種可能的實(shí)現(xiàn)方式,可以通過表格的形式建立編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與“ASN.1”描述文件的標(biāo)識(shí)的對(duì)應(yīng)關(guān)系。對(duì)于關(guān)聯(lián)關(guān)系的建立的具體實(shí)現(xiàn)過程,本實(shí)施例不做特別限制。[0077]可選地,本實(shí)施例提供的裝置還包括文件遍歷模塊,用于在所述數(shù)據(jù)格式類描述文件為多個(gè)時(shí),遍歷各所述數(shù)據(jù)格式類描述文件,生成與所述數(shù)據(jù)格式類描述文件對(duì)應(yīng)的編解碼器對(duì)象樹,并將各所述編解碼器對(duì)象樹保存在內(nèi)存中,建立各所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與各所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中。[0078]在上述的實(shí)施例中,介紹了針對(duì)一個(gè)數(shù)據(jù)格式類描述文件生成編解碼器對(duì)象樹的過程,下面說明當(dāng)有多個(gè)數(shù)據(jù)格式類描述文件時(shí),如果生成編解碼器。具體地,以“ASN.1”描述文件為例,當(dāng)有多個(gè)“ASN.1”描述文件時(shí),遍歷各“ASN.1”描述文件,對(duì)多個(gè)“ASN.1”描述文件進(jìn)行循環(huán)編譯時(shí),獲取針對(duì)每一個(gè)ASN文件生成的編解碼器對(duì)象樹,并將各所述編解碼器對(duì)象樹保存在內(nèi)存中,建立各所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與各所述“ASN.1”描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中。其中,針對(duì)每一個(gè)“ASN.1”描述文件生成編解碼器對(duì)象樹的過程都與上述過程類似。本實(shí)施例此處不再贅述。[0079]在具體應(yīng)用過程中,應(yīng)用程序直接根據(jù)“ASN.1”描述文件的版本名或類型名獲取對(duì)應(yīng)的編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址,從而實(shí)現(xiàn)了跨版本跨類型的自適應(yīng)編解碼,使得數(shù)據(jù)結(jié)構(gòu)發(fā)生變化,實(shí)現(xiàn)編解碼的代碼不用修改重編解也能正常工作。[0080]由于編解碼器池的存在,彌補(bǔ)了插件式編解碼的不足,現(xiàn)有技術(shù)中,當(dāng)ASN.1文件發(fā)生變更時(shí),需要重新將該ASN.1文件轉(zhuǎn)化為C或C++或java源文件,編譯出新的插件,導(dǎo)致整個(gè)過程花費(fèi)時(shí)間多,使得對(duì)插件的維護(hù)需要耗費(fèi)大量精力。而本實(shí)施例中,ASN描述文件發(fā)生變更,代碼不用變更,直接從編解碼器池中選取相應(yīng)的ASN描述文件即可。由于ASN.1是國(guó)際標(biāo)準(zhǔn)的語(yǔ)法,能夠描述任意復(fù)雜的數(shù)據(jù)結(jié)構(gòu),因此使用此方案的編解碼器自然就能夠處理任意復(fù)雜的數(shù)據(jù)結(jié)構(gòu),通用性強(qiáng),同時(shí)還能減少在編解碼方面的重復(fù)投入,節(jié)約成本。[0081]進(jìn)一步地,本實(shí)施例中的編解碼器對(duì)象樹不是獨(dú)立于目標(biāo)程序的,不是與目標(biāo)程序分開的,其被執(zhí)行調(diào)用可以發(fā)生在目標(biāo)程序的啟動(dòng)初始化階段,每次啟動(dòng)都根據(jù)ASN描述文件編譯生成編解碼器對(duì)象樹,該解碼器對(duì)象樹在整個(gè)程序運(yùn)行期間一直有效??梢栽趩?dòng)初始化階段將所有需要的多個(gè)版本或者多個(gè)類型的ASN描述文件一次循環(huán)編譯,實(shí)現(xiàn)跨版本,跨類型的自適應(yīng)編碼,解碼,或編解碼,以及不同版本或類型之間的快速切換。[0082]編解碼器的實(shí)現(xiàn)只跟ASN語(yǔ)法相關(guān),與具體的ASN描述的數(shù)據(jù)結(jié)構(gòu)無(wú)關(guān),因此,針對(duì)相同的ASN描述文件,本實(shí)施例實(shí)現(xiàn)的編碼器輸出的碼流能被其它方案實(shí)現(xiàn)的解碼器解碼,同樣,用其它方案實(shí)現(xiàn)的編碼器生成的碼流,也是能夠被本實(shí)施例實(shí)現(xiàn)的解碼器解碼。[0083]圖2為本發(fā)明編解碼器生成方法實(shí)施例一的流程示意圖。如圖2所示,本實(shí)施例提供的編解碼器生成方法包括:[0084]步驟201、將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);[0085]步驟202、根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹;[0086]步驟203、遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;[0087]其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口。[0088]本實(shí)施例的編解碼器生成方法,可由圖1實(shí)施例提供的編解碼器生成裝置執(zhí)行,其實(shí)現(xiàn)原理和技術(shù)效果與圖1實(shí)施例的編解碼器生成裝置類似,本實(shí)施例此處不再贅述。[0089]可選地,所述根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹,包括:[0090]根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹,并確定所述語(yǔ)法樹各節(jié)點(diǎn)的屬性信息以及所述語(yǔ)法樹的嵌套結(jié)構(gòu);[0091]可選地,所述遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹包括:[0092]遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),根據(jù)各節(jié)點(diǎn)的屬性信息,創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器,并根據(jù)所述語(yǔ)法樹的嵌套結(jié)構(gòu),將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹,并將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中。[0093]可選地,所述在語(yǔ)法樹遍歷模塊將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹之后,還包括:[0094]將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中,并建立所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中,以使應(yīng)用程序根據(jù)所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)確定所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址。[0095]可選地,在所述數(shù)據(jù)格式類描述文件為多個(gè)時(shí),所述方法還包括:[0096]遍歷各所述數(shù)據(jù)格式類描述文件,生成與所述數(shù)據(jù)格式類描述文件對(duì)應(yīng)的編解碼器對(duì)象樹,并將各所述編解碼器對(duì)象樹保存在內(nèi)存中,建立各所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與各所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中。[0097]可選地,所述數(shù)據(jù)格式類描述文件為抽象語(yǔ)法標(biāo)記描述文件。[0098]本實(shí)施例的編解碼器生成方法,可由上述實(shí)施例提供的編解碼器生成裝置執(zhí)行,其實(shí)現(xiàn)原理和技術(shù)效果與上述實(shí)施例的編解碼器生成裝置類似,本實(shí)施例此處不再贅述。[0099]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。[0100]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍?!緳?quán)利要求】1.一種編解碼器生成裝置,其特征在于,包括:詞法分析模塊,用于將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);語(yǔ)法分析模塊,用于根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹;語(yǔ)法樹遍歷模塊,用于遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口。2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述語(yǔ)法分析模塊具體用于:根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹,并確定所述語(yǔ)法樹各節(jié)點(diǎn)的屬性信息以及所述語(yǔ)法樹的嵌套結(jié)構(gòu);所述語(yǔ)法樹遍歷模塊具體用于:遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),根據(jù)各節(jié)點(diǎn)的屬性信息,創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器,并根據(jù)所述語(yǔ)法樹的嵌套結(jié)構(gòu),將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹,并將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中。3.根據(jù)權(quán)利要求1或2所述的裝置,其特征在于,還包括:編解碼庫(kù),用于向各所述`子編解碼器單元提供無(wú)狀態(tài)編解碼工具函數(shù),以使各所述子編解碼器單元對(duì)所述無(wú)狀態(tài)編解碼工具函數(shù)進(jìn)行調(diào)用。4.根據(jù)權(quán)利要求3所述的裝置,其特征在于,還包括:保存模塊,用于在語(yǔ)法樹遍歷模塊將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹之后,將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中,并建立所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中,以使應(yīng)用程序根據(jù)所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)確定所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址。5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,還包括:文件遍歷模塊,用于在所述數(shù)據(jù)格式類描述文件為多個(gè)時(shí),遍歷各所述數(shù)據(jù)格式類描述文件,生成與所述數(shù)據(jù)格式類描述文件對(duì)應(yīng)的編解碼器對(duì)象樹,并將各所述編解碼器對(duì)象樹保存在內(nèi)存中,建立各所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與各所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中。6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述數(shù)據(jù)格式類描述文件為抽象語(yǔ)法標(biāo)記描述文件。7.一種編解碼器生成方法,其特征在于,包括:將數(shù)據(jù)格式類描述文件的字符序列解析為多個(gè)單詞符號(hào);根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹;遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹;其中,各所述子編解碼器單元包括組合類型的編解碼器單元或簡(jiǎn)單類型的編解碼器單元,所述組合類型的編解碼器單元位于所述編解碼器對(duì)象樹的分支節(jié)點(diǎn)或根節(jié)點(diǎn),所述簡(jiǎn)單類型的編解碼器單元位于所述編解碼器對(duì)象樹的葉子節(jié)點(diǎn),所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的編解碼接口為所述編解碼器的編解碼入口。8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹,包括:根據(jù)語(yǔ)法規(guī)則對(duì)所述多個(gè)單詞符號(hào)進(jìn)行語(yǔ)法分析,生成語(yǔ)法樹,并確定所述語(yǔ)法樹各節(jié)點(diǎn)的屬性信息以及所述語(yǔ)法樹的嵌套結(jié)構(gòu);所述遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器單元,將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹包括:遍歷所述語(yǔ)法樹的各節(jié)點(diǎn),根據(jù)各節(jié)點(diǎn)的屬性信息,創(chuàng)建與所述各節(jié)點(diǎn)對(duì)應(yīng)的子編解碼器,并根據(jù)所述語(yǔ)法樹的嵌套結(jié)構(gòu),將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹,并將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中。9.根據(jù)權(quán)利要求7或8所述的方法,其特征在于,還包括:所述在語(yǔ)法樹遍歷模塊將各所述子編解碼器單元串成與所述語(yǔ)法樹對(duì)應(yīng)的編解碼器對(duì)象樹之后,還包括:將所述編解碼器對(duì)象樹存儲(chǔ)在內(nèi)存中,并建立所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中,以使應(yīng)用程序根據(jù)所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)確定所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址。10.根據(jù)權(quán)利要求9所述的方法,其特征在于,在所述數(shù)據(jù)格式類描述文件為多個(gè)時(shí),所述方法還包括:遍歷各所述數(shù)據(jù)格式類描述文件,生成與所述數(shù)據(jù)格式類描述文件對(duì)應(yīng)的編解碼器對(duì)象樹,并將各所述編解碼器對(duì)象樹保存在內(nèi)存中,建立各所述編解碼器對(duì)象樹的根節(jié)點(diǎn)的內(nèi)存地址與各所述數(shù)據(jù)格式類描述文件的標(biāo)識(shí)的關(guān)聯(lián)關(guān)系,并將所述關(guān)聯(lián)關(guān)系保存在編解碼器池中。11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述數(shù)據(jù)格式類描述文件為抽象語(yǔ)法標(biāo)記描述文件?!疚臋n編號(hào)】G06F9/45GK103677952SQ201310698083【公開日】2014年3月26日申請(qǐng)日期:2013年12月18日優(yōu)先權(quán)日:2013年12月18日【發(fā)明者】李同軍申請(qǐng)人:華為技術(shù)有限公司