欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

軌旁控制單元中基于數(shù)據(jù)配置的C語言代碼自動生成系統(tǒng)的制作方法

文檔序號:12305067閱讀:560來源:國知局
軌旁控制單元中基于數(shù)據(jù)配置的C語言代碼自動生成系統(tǒng)的制作方法與工藝

本發(fā)明涉及軟件代碼生成技術(shù)。



背景技術(shù):

目前,地鐵cbtc(communicationbasedtraincontrol,基于通信的列車控制)系統(tǒng)中軌旁控制單元,其聯(lián)鎖軟件需要處理基于復(fù)雜邏輯表達式的復(fù)雜信號場景,軟件工程師需要閱讀數(shù)據(jù)表格,以人工方式對復(fù)雜邏輯表達式進行解析,再根據(jù)解析出的信號邏輯編寫代碼。在這一過程中,一方面,復(fù)雜邏輯表達式邏輯繁雜,數(shù)據(jù)量大,數(shù)據(jù)耦合度高,以人工方式進行解析,易出現(xiàn)錯誤。另一方面,由于基本數(shù)據(jù)類型的相似度高,相似邏輯的表達式盡管解析算法相似,但由于數(shù)據(jù)內(nèi)容不同,造成了大量的重復(fù)人工解析過程和代碼編寫調(diào)試過程。如何高效而又準(zhǔn)確地處理基于數(shù)據(jù)配置的復(fù)雜邏輯表達式的解析和編寫代碼,成為本領(lǐng)域技術(shù)人員需要解決的問題。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的在于提供一種用于軌旁控制單元的c語言代碼自動生成系統(tǒng),高效準(zhǔn)確地處理基于數(shù)據(jù)配置的復(fù)雜邏輯表達式的解析和代碼編寫。

實現(xiàn)上述目的的技術(shù)方案是:

一種軌旁控制單元中基于數(shù)據(jù)配置的c語言代碼自動生成系統(tǒng),包括數(shù)據(jù)庫解析模塊、數(shù)據(jù)結(jié)構(gòu)模塊、聯(lián)鎖規(guī)則庫模塊、邏輯樹模塊和c語言代碼生成模塊,其中,

所述數(shù)據(jù)結(jié)構(gòu)模塊定義了聯(lián)鎖表示和邏輯運算所需數(shù)據(jù)結(jié)構(gòu);

所述聯(lián)鎖規(guī)則庫模塊定義了基于聯(lián)鎖規(guī)范的運算規(guī)則;

所述數(shù)據(jù)庫解析模塊讀取聯(lián)鎖數(shù)據(jù)和配置數(shù)據(jù),結(jié)合基于聯(lián)鎖表示和邏輯運算所需數(shù)據(jù)結(jié)構(gòu)以及聯(lián)鎖規(guī)范的運算規(guī)則,將聯(lián)鎖數(shù)據(jù)表達為復(fù)雜邏輯表達式;

所述邏輯樹模塊基于邏輯樹結(jié)構(gòu)將所述復(fù)雜邏輯表達式解析為基本邏輯表達式;

所述c語言代碼生成模塊以所述基本邏輯表達式的列表為輸入,結(jié)合基于聯(lián)鎖表示和邏輯運算所需數(shù)據(jù)結(jié)構(gòu)以及聯(lián)鎖規(guī)范的運算規(guī)則,根據(jù)配置數(shù)據(jù)、聯(lián)鎖數(shù)據(jù)和現(xiàn)有源代碼信息,生成最終的c語言代碼文件。

在上述的軌旁控制單元中基于數(shù)據(jù)配置的c語言代碼自動生成系統(tǒng)中,所述數(shù)據(jù)庫解析模塊從數(shù)據(jù)庫中讀取聯(lián)鎖數(shù)據(jù)和配置數(shù)據(jù)。

在上述的軌旁控制單元中基于數(shù)據(jù)配置的c語言代碼自動生成系統(tǒng)中,所述邏輯樹模塊對復(fù)雜邏輯表達式解析的過程為:遞歸地解析每一個節(jié)點,若某個節(jié)點具有若干個子節(jié)點,則該節(jié)點為一個父節(jié)點,首先解析其子節(jié)點,以此類推,以遞歸循環(huán)的方式,從每一個分支的最底層節(jié)點開始解析,只有當(dāng)?shù)讓拥乃泄?jié)點被解析成基本邏輯表達式后,再解析其父節(jié)點。在具體的解析過程中,根據(jù)節(jié)點間的或邏輯關(guān)系或者與邏輯關(guān)系,分別采用不同的解析算法。

在上述的軌旁控制單元中基于數(shù)據(jù)配置的c語言代碼自動生成系統(tǒng)中,所述c語言代碼生成模塊將所述基本邏輯表達式的列表轉(zhuǎn)化為c語言代碼形式的變量、函數(shù)及其實現(xiàn)。

本發(fā)明的有益效果是:本發(fā)明一方面,自動將復(fù)雜邏輯表達式解析為對應(yīng)基本信號場景的基本邏輯表達式,解析準(zhǔn)確率高,解析出的基本邏輯表達式邏輯簡單直觀,易于理解,便于邏輯分析和代碼調(diào)試。另一方面,基于現(xiàn)有代碼,自動生成與之兼容的c語言代碼,避免了人工編寫大量相似度極高的代碼,并且便于維護和升級,節(jié)省了大量開發(fā)時間,提高了工作效率。

附圖說明

圖1a是一種基本邏輯表達式的表達實例;

圖1b是另一種基本邏輯表達式的表達實例;

圖2是復(fù)雜聯(lián)鎖邏輯表達式的邏輯樹表達表達實例;

圖3是邏輯樹對復(fù)雜邏輯表達式的解析過程示例;

圖4是本發(fā)明的軌旁控制單元中基于數(shù)據(jù)配置的c語言代碼自動生成系統(tǒng)的結(jié)構(gòu)圖。

具體實施方式

下面將結(jié)合附圖對本發(fā)明作進一步說明。

請參閱圖4,本發(fā)明的軌旁控制單元中基于數(shù)據(jù)配置的c語言代碼自動生成系統(tǒng),包括數(shù)據(jù)庫解析模塊1、數(shù)據(jù)結(jié)構(gòu)模塊2、聯(lián)鎖規(guī)則庫模塊3、邏輯樹模塊4和c語言代碼生成模塊5。

數(shù)據(jù)結(jié)構(gòu)模塊2定義了聯(lián)鎖表示和邏輯運算所需數(shù)據(jù)結(jié)構(gòu)。聯(lián)鎖規(guī)則庫模塊3定義了基于聯(lián)鎖規(guī)范的運算規(guī)則。

數(shù)據(jù)庫解析模塊1從數(shù)據(jù)庫中讀取聯(lián)鎖數(shù)據(jù)和配置數(shù)據(jù),結(jié)合基于聯(lián)鎖表示和邏輯運算所需數(shù)據(jù)結(jié)構(gòu)以及聯(lián)鎖規(guī)范的運算規(guī)則,在數(shù)據(jù)校驗的基礎(chǔ)上,將聯(lián)鎖數(shù)據(jù)表達為復(fù)雜邏輯表達式。對邏輯表達式的語法規(guī)則簡述如下:

聯(lián)鎖邏輯一般采用變量、與(“*”)、或(“+”)和括號(“(”、“)”)組成邏輯表達式,比如(a+b)*(c+d),其中,每一個子項即變量,比如a,代表一個具體信號設(shè)備及其狀態(tài)的組合,比如:“sw3523_left”表示道岔sw3523處于左位,“x0826zcj_high”表示繼電器x0826zcj處于吸起(高)狀態(tài)。而最基本的信號場景,是具有若干子項的與邏輯表達式,即:a*b*c,而a+b可以認(rèn)為是兩個基本信號場景a和b的組合。此外,也有少數(shù)特別邏輯表達式形式,比如“alwaysfalse”代表邏輯值一直為假即永不成立的邏輯表達式。邏輯表達式可以簡單分為復(fù)雜邏輯表達式和基本邏輯表達式,基本邏輯表達式可以認(rèn)為是不包括任何括號、只包含與或邏輯的簡單邏輯表達式,而包含括號,具有多層復(fù)雜結(jié)構(gòu)的就是復(fù)雜邏輯表達式。常見的兩種基本邏輯表達式如圖1a、1b所示。其中,第一種基本邏輯表達式“a*b*c”只包含一個節(jié)點,并且只含有與邏輯;第二種基本邏輯表達式“a+b+c”共包含四個節(jié)點,并且只含有或邏輯。顯然,對于聯(lián)鎖計算來說,基本信號場景更易于辨識和判定,而基本信號場景可以被表達為第一種基本邏輯表達式。如前所述,復(fù)雜邏輯表達式可被解析為由若干個相互間為邏輯或關(guān)系的基本邏輯表達式組成的列表,至少有任意一個基本邏輯表達式的值為真時,復(fù)雜邏輯表達式的值即為真,以此為依據(jù)定義的兩種基本邏輯表達式,更便于基本信號場景的表達和辨識。

邏輯樹模塊4基于邏輯樹結(jié)構(gòu)將復(fù)雜邏輯表達式解析為基本邏輯表達式。

對邏輯樹的特征簡要說明如下:一個復(fù)雜邏輯表達式“(a+b*c)*(d*e+(f+g)*(h+i))*(j+k+l)”可表示為圖2所示邏輯樹。將復(fù)雜邏輯表達式表達為邏輯樹,是解析復(fù)雜邏輯的基礎(chǔ)。邏輯樹由至少一個節(jié)點和若干連線組成,連線始端(上層)的節(jié)點為父節(jié)點,連線終端(下層)的節(jié)點為子節(jié)點,一個父節(jié)點可以有若干個子節(jié)點,一個子節(jié)點只能有一個父節(jié)點,最頂端的父節(jié)點稱為邏輯樹的根節(jié)點。根據(jù)聯(lián)鎖規(guī)則庫模塊的規(guī)定,每個節(jié)點的內(nèi)容可以是單個變量、單個與或邏輯關(guān)系符號(“*”或“+”)或由變量和與邏輯關(guān)系組成的邏輯表達式。為便于解析,規(guī)定解析前的邏輯樹,所有節(jié)點內(nèi)容只可以是每個節(jié)點的內(nèi)容可以是單個變量、單個與或邏輯關(guān)系符號(“*”或“+”),而不可以是由變量和與邏輯關(guān)系組成的邏輯表達式。以此為依據(jù),復(fù)雜邏輯表達式處于節(jié)點最簡單但結(jié)構(gòu)最復(fù)雜的初始狀態(tài),當(dāng)包含多個分支和多層次結(jié)構(gòu)時,邏輯樹需要通過若干步驟被解析為更簡單的結(jié)構(gòu)。

舉例說明利用邏輯樹解析復(fù)雜邏輯表達式的過程。如圖3所示,復(fù)雜邏輯表達式“a*(b+c)*(d+e+f)”的邏輯樹具有三層結(jié)構(gòu),解析過程為遞歸地解析每一個節(jié)點,若某個節(jié)點具有若干個子節(jié)點,則該節(jié)點為一個父節(jié)點,首先解析其子節(jié)點,以此類推,以遞歸循環(huán)的方式,從每一個分支的最底層節(jié)點開始解析,只有當(dāng)?shù)讓拥乃泄?jié)點被解析成基本邏輯表達式后,再解析其父節(jié)點。同時,在具體的解析過程中,會根據(jù)節(jié)點間的關(guān)系,也就是其父節(jié)點的內(nèi)容為或邏輯關(guān)系符“+”或者為與邏輯關(guān)系符“*”,分別采用不同的解析算法。如圖3所示,在本例中,最底層的節(jié)點內(nèi)容是基本邏輯表達式,無需解析,并且其父節(jié)點為或邏輯關(guān)系符“+”。因此,第一步將最底層的節(jié)點解析為其父節(jié)點的基本邏輯表達式列表,邏輯樹從三層結(jié)構(gòu)簡化為二層結(jié)構(gòu)。第二步,第二層的子節(jié)點的父節(jié)點為與邏輯關(guān)系符“*”,因此首先將相鄰的兩個子節(jié)點進行合并,減少子節(jié)點個數(shù),并保證每個合并后的子節(jié)點內(nèi)容為基本邏輯表達式列表。第三步,采用與第二步相同的方法,合并子節(jié)點,并將最終的基本邏輯表達式列表表示為具有或邏輯關(guān)系的若干子節(jié)點,此時每一個子節(jié)點都是一個基本邏輯表達式,可對應(yīng)為一個易于理解和辨識的基本信號場景??梢钥吹剑畛醯膹?fù)雜邏輯表達式“a*(b+c)*(d+e+f)”被解析為相互間為或邏輯關(guān)系的6個基本邏輯表達式,分別對應(yīng)為6個基本信號場景,比如基本邏輯表達式“a*b*d”可對應(yīng)為“blockg1305_vacant*switch1303_left*zcj_low”,只要其中任意一個基本信號場景出現(xiàn),則原復(fù)雜邏輯表達式的值為真,進而觸發(fā)相關(guān)聯(lián)鎖邏輯,比如進路的授權(quán)等。顯而易見,相比原復(fù)雜邏輯表達式,解析后的基本信號場景的理解和辨識更簡單清晰。

復(fù)雜邏輯表達式“(a+b*c)*(d*e+(f+g)*(h+i))*(j+k+l)”可被解析為相互間為或邏輯關(guān)系的30個基本邏輯表達式。

數(shù)據(jù)庫解析模塊1連接c語言代碼生成模塊5。c語言代碼生成模塊5以基本邏輯表達式的列表為輸入,結(jié)合基于聯(lián)鎖表示和邏輯運算所需數(shù)據(jù)結(jié)構(gòu)以及聯(lián)鎖規(guī)范的運算規(guī)則,根據(jù)配置數(shù)據(jù)、聯(lián)鎖數(shù)據(jù)和現(xiàn)有源代碼信息,生成最終的c語言代碼文件。主要核心任務(wù)在于:將基本邏輯表達式的列表轉(zhuǎn)化為c語言代碼形式的變量、函數(shù)及其實現(xiàn)?;具壿嫳磉_式“a*b*d”對應(yīng)的基本信號場景“blockg1305_vacant*switch1303_left*zcj_low”,作為進路授權(quán)條件可轉(zhuǎn)化為函數(shù)“ixlconditioncheck_isrouteauthorizeconditionsaticfied(ushortrouteid)”。如下所示:

以上實施例僅供說明本發(fā)明之用,而非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以作出各種變換或變型,因此所有等同的技術(shù)方案也應(yīng)該屬于本發(fā)明的范疇,應(yīng)由各權(quán)利要求所限定。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宣化县| 慈溪市| 桐乡市| 濮阳市| 井冈山市| 汕头市| 珠海市| 临湘市| 普洱| 建水县| 若尔盖县| 安顺市| 博湖县| 家居| 商南县| 宁南县| 通化市| 蒙自县| 浮山县| 泰安市| 丽江市| 乌拉特中旗| 雅安市| 调兵山市| 昌宁县| 曲靖市| 蕉岭县| 惠来县| 南皮县| 通化市| 汶川县| 道孚县| 静乐县| 商南县| 育儿| 庆城县| 康保县| 武定县| 嵊州市| 许昌县| 麻阳|