版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6.4.2HCS配置語(yǔ)法通過(guò)本節(jié)學(xué)習(xí),您可以:了解HCS配置語(yǔ)法HCS配置語(yǔ)法1.關(guān)鍵字HCS配置語(yǔ)法的部分關(guān)鍵字,如表所示。關(guān)鍵字用途說(shuō)明root配置根節(jié)點(diǎn)-include引用其他HCS配置文件-delete刪除節(jié)點(diǎn)或?qū)傩灾荒苡糜诓僮鱥nclude導(dǎo)入的配置樹(shù)template定義模板節(jié)點(diǎn)-match_attr用于標(biāo)記節(jié)點(diǎn)的匹配查找屬性解析配置時(shí)可以使用該屬性的值查找到對(duì)應(yīng)節(jié)點(diǎn)HCS配置語(yǔ)法2.基本組成結(jié)構(gòu)HCS配置文件主要由屬性(Attribute)和節(jié)點(diǎn)(Node)兩部分組成。(1)屬性屬性是最小的配置單元,是一個(gè)獨(dú)立的配置項(xiàng)。語(yǔ)法如下:attribute_name=value;attribute_name是字母、數(shù)字、下劃線(xiàn)的組合且必須以字母或下劃線(xiàn)開(kāi)頭,字母區(qū)分大小寫(xiě)。value的可用格式如下:數(shù)字常量,支持二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù)。字符串,內(nèi)容使用雙引號(hào)(“”)引用。節(jié)點(diǎn)引用。attribute必須以分號(hào)(;)結(jié)束且必須屬于一個(gè)node。HCS配置語(yǔ)法(2)節(jié)點(diǎn)節(jié)點(diǎn)是一組屬性的集合,語(yǔ)法如下:
node_name{
module="test";
...}node_name是字母、數(shù)字、下劃線(xiàn)的組合且必須以字母或下劃線(xiàn)開(kāi)頭,字母區(qū)分大小寫(xiě)。大括號(hào)后無(wú)需添加結(jié)束符分號(hào)“;”。root為保留關(guān)鍵字,用于聲明配置表的根節(jié)點(diǎn)。每個(gè)配置表必須以root節(jié)點(diǎn)開(kāi)始。root節(jié)點(diǎn)中必須包含module屬性,其值應(yīng)該為一個(gè)字符串,用于表征該配置所屬模塊。節(jié)點(diǎn)中可以增加match_attr屬性,其值為一個(gè)全局唯一的字符串。當(dāng)驅(qū)動(dòng)程序在解析配置時(shí)可以以該屬性的值為參數(shù)調(diào)用查找接口查找到包含該屬性的節(jié)點(diǎn)。HCS配置語(yǔ)法3.數(shù)據(jù)類(lèi)型在屬性定義中使用自動(dòng)數(shù)據(jù)類(lèi)型,不顯式指定類(lèi)型,屬性支持的數(shù)據(jù)類(lèi)型有整型、字符串、數(shù)組、布爾類(lèi)型。整型:整型長(zhǎng)度自動(dòng)推斷,根據(jù)實(shí)際數(shù)據(jù)長(zhǎng)度給與最小空間占用的類(lèi)型。二進(jìn)制,0b前綴,示例:0b1010。八進(jìn)制,0前綴,示例:0664。十進(jìn)制,無(wú)前綴,且支持有符號(hào)與無(wú)符號(hào),示例:1024,+1024均合法。驅(qū)動(dòng)程序在讀取負(fù)值時(shí)注意使用有符號(hào)數(shù)讀取接口。十六進(jìn)制,0x前綴,示例:0xff00、0xFF。HCS配置語(yǔ)法字符串:字符串使用雙引號(hào)(“”)表示。布爾類(lèi)型:布爾類(lèi)型中true表示真,false表示假。數(shù)組:數(shù)組元素支持整型、字符串,不支持混合類(lèi)型。整型數(shù)組中uint32_t、uint64_t混用會(huì)向上轉(zhuǎn)型為uint64_t數(shù)組。整型數(shù)組與字符串?dāng)?shù)組示例如下:
attr_foo=[0x01,0x02,0x03,0x04];
attr_bar=["hello","world"];4.預(yù)處理include用于導(dǎo)入其他HCS文件。語(yǔ)法示例如下:其中,文件名必須使用雙引號(hào)(“”),不在同一目錄下需要使用相對(duì)路徑引用。被include文件也必須是合法的HCS文件。若是多個(gè)include,如果存在相同的節(jié)點(diǎn),后者覆蓋前者,其余的節(jié)點(diǎn)依次展開(kāi)。#include"foo.hcs"
#include"../bar.hcs"HCS配置語(yǔ)法5.注釋注釋支持兩種風(fēng)格:?jiǎn)涡凶⑨尯投嘈凶⑨尅?/p>
//comment單行注釋
/*
comment多行注釋
*/6.引用修改引用修改可以實(shí)現(xiàn)修改另外任意一個(gè)節(jié)點(diǎn)的內(nèi)容,語(yǔ)法為:node:&source_nodeHCS配置語(yǔ)法上述語(yǔ)句表示node中的內(nèi)容是對(duì)source_node節(jié)點(diǎn)內(nèi)容的修改。示例如下:
root{
module="test";
foo{
foo_:&root.bar{
attr="foo";
}
foo1:&foo2{
attr=0x2;
}
foo2{
attr=0x1;
}
}
bar{
attr="bar";
}}
root{
module="test";
foo{
foo2{
attr=0x2;
}
}
bar{
attr="foo";
}}最終生成配置樹(shù)為:可以看到foo.foo_節(jié)點(diǎn)通過(guò)引用將bar.attr屬性的值修改為了"foo",foo.foo1節(jié)點(diǎn)通過(guò)引用將foo.foo2.attr屬性的值修改為了0x2。foo.foo_以及foo.foo1節(jié)點(diǎn)表示對(duì)目標(biāo)節(jié)點(diǎn)內(nèi)容的修改,其自身并不會(huì)存在最終生成的配置樹(shù)中。HCS配置語(yǔ)法7.節(jié)點(diǎn)復(fù)制節(jié)點(diǎn)復(fù)制可以實(shí)現(xiàn)在節(jié)點(diǎn)定義時(shí)從另一個(gè)節(jié)點(diǎn)先復(fù)制內(nèi)容,用于定義內(nèi)容相似的節(jié)點(diǎn)。語(yǔ)法為:在上述示例中,編譯后bar節(jié)點(diǎn)即包含attr_0屬性也包含attr_1屬性,在bar中對(duì)attr_0的修改不會(huì)影響到foo。在foo和bar在同級(jí)node中可不指定foo的路徑,否則需要使用絕對(duì)路徑引用。上述代碼的最終生成配置樹(shù)為:上述語(yǔ)句表示在定義"node"節(jié)點(diǎn)時(shí)將另一個(gè)節(jié)點(diǎn)"source_node"的屬性復(fù)制過(guò)來(lái)。示例如下:node:source_node
root{
module="test";
foo{
attr_0=0x0;
}
bar:foo{
attr_1=0x1;
}}
root{
module="test";
foo{
attr_0=0x0;
}
bar{
attr_1=0x1;
attr_0=0x0;
}}HCS配置語(yǔ)法8.刪除要對(duì)include導(dǎo)入的base配置樹(shù)中不需要的節(jié)點(diǎn)或?qū)傩赃M(jìn)行刪除,可以使用delete關(guān)鍵字。下面的示例中test1.hcs通過(guò)include導(dǎo)入了test2.hcs中的配置內(nèi)容,并使用delete刪除了test2.hcs中的attribute2屬性和foo_2節(jié)點(diǎn),示例如下:上述代碼在生成過(guò)程中將會(huì)刪除root.foo_2節(jié)點(diǎn)與attr_2,最終生成配置樹(shù)為:
//test2.hcs
root{
attr_1=0x1;
attr_2=0x2;
foo_2{
t=0x1;
}
}
//test1.hcs
#include"test2.hcs"
root{
attr_2=delete;
foo_2:delete{
}}
root{
attr_1=0x1;}HCS配置語(yǔ)法9.屬性引用為了在解析配置時(shí)快速定位到關(guān)聯(lián)的節(jié)點(diǎn),可以把節(jié)點(diǎn)作為屬性的右值,通過(guò)讀取屬性查找到對(duì)應(yīng)節(jié)點(diǎn)。語(yǔ)法為:示例2如下:上述語(yǔ)句表示attribute的值是一個(gè)節(jié)點(diǎn)node的引用,在解析時(shí)可以用這個(gè)attribute快速定位到node,便于關(guān)聯(lián)和查詢(xún)其他node。attribute=&node;
node1{
attributes;
}
node2{
attr_1=&root.node1;}
node2{
node1{
attributes;
}
attr_1=&node1;}示例1如下:HCS配置語(yǔ)法10.模板模板的用途在于生成嚴(yán)格一致的node結(jié)構(gòu),以便對(duì)同類(lèi)型node進(jìn)行遍歷和管理。使用template關(guān)鍵字定義模板node,子node通過(guò)雙冒號(hào)“::”聲明繼承關(guān)系。子節(jié)點(diǎn)可以改寫(xiě)或新增但不能刪除template中的屬性,子節(jié)點(diǎn)中沒(méi)有定義的屬性將使用template中的定義作為默認(rèn)值。
root{
module="test";
templatefoo{
attr_1=0x1;
attr_2=0x2;
}
bar::foo{
}
bar_1::foo{
attr_1=0x2;
}}
root{
module="test";
bar{
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024水電工程安裝承包合同
- 二零二五年度汽車(chē)貸款抵押物保管合同樣本2篇
- 二零二五年度文化產(chǎn)業(yè)園開(kāi)發(fā)建設(shè)合同3篇
- 2025年度食品企業(yè)HACCP體系認(rèn)證與改進(jìn)服務(wù)合同3篇
- 二零二五年特色餐廳食材供應(yīng)鏈管理服務(wù)合同3篇
- 2024版版權(quán)質(zhì)押貸款合同3篇
- 二零二五年度附帶提前還款罰金的合法借款合同3篇
- 2024版影視經(jīng)紀(jì)中介協(xié)議樣本版B版
- 2024版外貿(mào)儀器合同范本
- 個(gè)人勞務(wù)合同簡(jiǎn)單范本
- 單級(jí)倒立擺系統(tǒng)建模與控制器設(shè)計(jì)
- 齲病的治療 深齲的治療
- GB/T 35005-2018集成電路倒裝焊試驗(yàn)方法
- 投標(biāo)報(bào)價(jià)明顯低于采購(gòu)預(yù)算價(jià)說(shuō)明函
- 福建師范大學(xué)(答案)課程考試2023年2月《刑事訴訟法》作業(yè)考核試題
- 寫(xiě)人事物景作文課件
- 廠(chǎng)級(jí)安全培訓(xùn)資料
- 中國(guó)藥科大學(xué)《藥物化學(xué)》教學(xué)日歷
- 露天礦山課件
- 經(jīng)濟(jì)效益證明(模板)
- 銀行卡凍結(jié)怎么寫(xiě)申請(qǐng)書(shū)
評(píng)論
0/150
提交評(píng)論