本發(fā)明屬于汽車語(yǔ)法解析技術(shù),具體涉及一種A2L語(yǔ)法解析器及方法。
背景技術(shù):
目前沒(méi)有專門用于對(duì)A2L語(yǔ)法進(jìn)行解析的解析器,無(wú)法對(duì)A2L文件進(jìn)行解讀,只能不使用標(biāo)準(zhǔn)的A2L文件,而是通過(guò)定義一套類似的規(guī)則來(lái)存儲(chǔ)A2L信息,由于這種文件不滿足標(biāo)準(zhǔn)的規(guī)范,故無(wú)法同其它商業(yè)軟件進(jìn)行對(duì)接。而A2L文件的主要作用就是用于不同軟件之間的對(duì)接,例如A2L編輯器生成A2L文件,而A2L文件又被商業(yè)標(biāo)定軟件讀取。這些商業(yè)軟件雖可讀取A2L文件,但不能提供A2L解析的功能,所以有必要開發(fā)一種A2L語(yǔ)法解析器及方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種A2L語(yǔ)法解析器及方法,能對(duì)ASAM MCD-2MC規(guī)范中定義的數(shù)據(jù)存儲(chǔ)格式進(jìn)行解析,并生成相關(guān)鏈表,以供其它程序訪問(wèn)。
本發(fā)明所述的A2L語(yǔ)法解析器,包括:
AML語(yǔ)法定義文件模塊,采用AML語(yǔ)法描述ASAM標(biāo)準(zhǔn)語(yǔ)法;
AML語(yǔ)法解析模塊,用于逐行讀取和解析AML語(yǔ)法定義文件,并生成AML語(yǔ)法信息關(guān)鍵詞鏈表;
A2L文件解析模塊,用于逐行讀取A2L文件,并與AML語(yǔ)法信息關(guān)鍵詞鏈表作對(duì)照,生成A2L數(shù)據(jù)結(jié)構(gòu)鏈表。
本發(fā)明所述的一種A2L語(yǔ)法解析方法,采用如本發(fā)明所述的A2L語(yǔ)法解析器,其解析方法包括以下步驟:
步驟1、采用AML語(yǔ)法描述ASAM標(biāo)準(zhǔn)語(yǔ)法;
步驟2、逐行讀取和解析AML語(yǔ)法定義文件,并生成AML語(yǔ)法信息關(guān)鍵詞鏈表;
步驟3、逐行讀取A2L文件,并與AML語(yǔ)法信息關(guān)鍵詞鏈表作對(duì)照,生成A2L數(shù)據(jù)結(jié)構(gòu)鏈表。
所述步驟2具體為:
對(duì)AML語(yǔ)法定義文件進(jìn)行逐行讀取,識(shí)別出其中的關(guān)鍵詞,并對(duì)關(guān)鍵詞的屬性做記錄,同時(shí)遞歸訪問(wèn)其成員,最終生成AML語(yǔ)法信息關(guān)鍵詞鏈表。
所述步驟3中逐行讀取A2L文件,并與AML語(yǔ)法信息關(guān)鍵詞鏈表作對(duì)照,具體為:
對(duì)A2L文件進(jìn)行逐行讀取,遍歷步驟2中所生成的AML語(yǔ)法信息關(guān)鍵詞鏈表,找到對(duì)應(yīng)的關(guān)鍵詞,并找到其對(duì)應(yīng)的屬性。
所述A2L數(shù)據(jù)結(jié)構(gòu)鏈表為雙向鏈表形式,其結(jié)構(gòu)為L(zhǎng)ist類型,能夠被C/C++程序直接訪問(wèn)。
所述A2L數(shù)據(jù)結(jié)構(gòu)鏈表由MEASUREMENT、CHARACTERISTIC、Curve、MAP、AXIS、計(jì)算公式、Group類型組成,其中:MEASUREMENT表示測(cè)量類變量,CHARACTERISTIC為標(biāo)定類變量,Curve為一維表格類標(biāo)定變量,MAP為二維表格類標(biāo)定變量,AXIS為坐標(biāo)軸類變量,計(jì)算公式為轉(zhuǎn)換用公式類變量,Group為記錄分組信息的鏈表。
本發(fā)明具有以下優(yōu)點(diǎn):
(1)能夠解析ASAM MCD-2MC協(xié)議V1.6以上版本定義的A2L語(yǔ)法文件。
(2)提供DLL(動(dòng)態(tài)鏈接庫(kù))文件形式的調(diào)用,其它能夠調(diào)用DLL的編程語(yǔ)言均可使用。
(3)采用AML語(yǔ)法描述ASAM(自動(dòng)化及測(cè)量系統(tǒng)標(biāo)準(zhǔn)協(xié)會(huì))語(yǔ)法,語(yǔ)法定義與軟件算法脫離。
(4)AML語(yǔ)法文件獨(dú)立于程序,通過(guò)修改AML語(yǔ)法文件來(lái)實(shí)現(xiàn)對(duì)IF_DATA接口的定制。
(5)通過(guò)讀取以A2L格式保存的文本文件,對(duì)其中的字符進(jìn)行解析,從而生成對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
(6)支持對(duì)MEASUREMENT(測(cè)量類變量)、CHARACTERISTIC(標(biāo)定類變量)、Curve(一維表格類標(biāo)定變量)、MAP(二維表格類標(biāo)定變量)、AXIS(坐標(biāo)軸類變量)、計(jì)算公式、Group、array (數(shù)組)的讀取和識(shí)別。
附圖說(shuō)明
圖1為本發(fā)明的結(jié)構(gòu)示意圖;
圖2為本發(fā)明的流程圖;
圖3為本發(fā)明中AML文件讀取流程圖;
圖4為本發(fā)明中A2L文件讀取流程圖;
圖5為本發(fā)明中A2L數(shù)據(jù)結(jié)構(gòu)鏈表的示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
如圖1所示的A2L語(yǔ)法解析器,包括AML語(yǔ)法定義文件模塊1、AML語(yǔ)法解析模塊2和A2L文件解析模塊3。其中:AML語(yǔ)法定義文件模塊1采用AML語(yǔ)法描述ASAM標(biāo)準(zhǔn)語(yǔ)法。AML語(yǔ)法解析模塊2用于逐行讀取和解析AML語(yǔ)法定義文件,并生成AML語(yǔ)法信息關(guān)鍵詞鏈表。A2L文件解析模塊3用于逐行讀取A2L文件,并與AML語(yǔ)法信息關(guān)鍵詞鏈表作對(duì)照,生成A2L數(shù)據(jù)結(jié)構(gòu)鏈表。
本發(fā)明所述的A2L語(yǔ)法解析器具有以下功能:
(1)能夠解析ASAM MCD-2MC協(xié)議V1.6以上版本定義的A2L語(yǔ)法文件。ASAM協(xié)議分為若干個(gè)層次,A2L語(yǔ)法解析協(xié)議位于第二層,定義了數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)方式。
(2)提供DLL文件形式的調(diào)用,其它能夠調(diào)用DLL的編程語(yǔ)言均可使用。
(3)采用AML語(yǔ)法描述ASAM語(yǔ)法,語(yǔ)法定義與軟件算法脫離。
(4)AML語(yǔ)法文件獨(dú)立于程序,通過(guò)修改AML語(yǔ)法文件來(lái)實(shí)現(xiàn)對(duì)IF_DATA接口的定制。
(5)通過(guò)讀取以A2L格式保存的文本文件,對(duì)其中的字符進(jìn)行解析,從而生成對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
(6)支持對(duì)MEASUREMENT、CHARACTERISTIC、Curve、MAP、AXIS、計(jì)算公式、Group、數(shù)組(array)的讀取和識(shí)別。
本發(fā)明所述的一種A2L語(yǔ)法解析方法,采用如本發(fā)明所述的A2L語(yǔ)法解析器,其解析方法包括以下步驟:
步驟1、采用AML語(yǔ)法描述ASAM標(biāo)準(zhǔn)語(yǔ)法。
步驟2、對(duì)AML語(yǔ)法定義文件進(jìn)行逐行讀取,識(shí)別出其中的關(guān)鍵詞,并對(duì)關(guān)鍵詞的屬性做記錄,同時(shí)遞歸訪問(wèn)其成員,最終生成AML語(yǔ)法信息關(guān)鍵詞鏈表。
如圖3所示,對(duì)AML語(yǔ)法定義文件進(jìn)行逐行讀取,識(shí)別出其中的關(guān)鍵詞,并對(duì)關(guān)鍵詞的屬性做記錄,同時(shí)遞歸訪問(wèn)其成員,具體為:
2a、讀取AML語(yǔ)法定義文件中的第一行字符;
2b、對(duì)該行字符進(jìn)行關(guān)鍵詞識(shí)別,識(shí)別出其中的關(guān)鍵詞;
2c、判斷是否為結(jié)束符,若是,結(jié)束,若否,則進(jìn)入步驟2d;
2d、讀取該關(guān)鍵詞的屬性字段;
2e、判斷是否有成員,若是,讀取該成員的信息,并進(jìn)入步驟2d;若否,則進(jìn)入下一行,并進(jìn)入步驟2b。
步驟3、對(duì)A2L文件進(jìn)行逐行讀取,遍歷步驟2中所生成的AML語(yǔ)法信息關(guān)鍵詞鏈表,找到對(duì)應(yīng)的關(guān)鍵詞,并找到其對(duì)應(yīng)的屬性,生成A2L數(shù)據(jù)結(jié)構(gòu)鏈表,參見圖5。通過(guò)訪問(wèn)A2L數(shù)據(jù)結(jié)構(gòu)鏈表,獲取到A2L文件中所存儲(chǔ)的A2L變量和參數(shù)信息。
如圖4所示,對(duì)A2L文件進(jìn)行逐行讀取,遍歷步驟2中所生成的AML語(yǔ)法信息關(guān)鍵詞鏈表,找到對(duì)應(yīng)的關(guān)鍵詞,并找到其對(duì)應(yīng)的屬性,具體為:
3a、讀取A2L文件中的第一行字符;
3b、與AML語(yǔ)法信息關(guān)鍵詞鏈表對(duì)比;
3c、判斷是否有關(guān)鍵詞,若否,則讀取A2L文件中的下一行字符,并進(jìn)入步驟3b,若是,則進(jìn)入步驟3d;
3d、讀取該關(guān)鍵詞的信息,并找到其對(duì)應(yīng)的屬性;
3e、判斷是否有成員,若是,則將成員與AML語(yǔ)法信息關(guān)鍵詞鏈表對(duì)比,并進(jìn)入步驟3d,若否,則讀取A2L文件中的下一行字符,并進(jìn)入步驟3b。
所述A2L數(shù)據(jù)結(jié)構(gòu)鏈表為雙向鏈表形式,其結(jié)構(gòu)為L(zhǎng)ist類型,能夠被C/C++程序直接訪問(wèn),其余程序通過(guò)一定的處理接口也可以訪問(wèn)。
所述A2L數(shù)據(jù)結(jié)構(gòu)鏈表由MEASUREMENT、CHARACTERISTIC、Curve、MAP、AXIS、計(jì)算公式、Group類型組成,其中:MEASUREMENT表示測(cè)量類變量,CHARACTERISTIC為標(biāo)定類變量,Curve為一維表格類標(biāo)定變量,MAP為二維表格類標(biāo)定變量,AXIS為坐標(biāo)軸類變量,計(jì)算公式為轉(zhuǎn)換用公式類變量,Group為記錄分組信息的鏈表。