System.ArgumentOutOfRangeException: 索引和長(zhǎng)度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本專利技術(shù)涉及計(jì)算機(jī)應(yīng)用,更具體地,涉及一種基于自定義業(yè)務(wù)公式進(jìn)行自動(dòng)解析實(shí)現(xiàn)方法及系統(tǒng)。
技術(shù)介紹
1、在軟件開發(fā)的過程中,涉及到復(fù)雜公式的運(yùn)算,尤其是財(cái)務(wù)系統(tǒng)比如表單公式計(jì)算和報(bào)表取數(shù)等涵蓋業(yè)務(wù)邏輯的運(yùn)算,如果只是單純的用程序代碼處理結(jié)果,如特殊四則運(yùn)算、函數(shù)的遞歸調(diào)用等,其實(shí)現(xiàn)比較簡(jiǎn)單粗略,對(duì)于稍微復(fù)雜的公式望塵莫及。并且公式解析計(jì)算業(yè)務(wù)邏輯的一種輔助,花費(fèi)大的時(shí)間和精力去研究公式計(jì)算,對(duì)于開發(fā)人員和操作人員是一件耗時(shí)耗力的工作。
2、現(xiàn)有技術(shù)《sef解析器和edi解析器生成器》,公開了:創(chuàng)建一個(gè)sef語(yǔ)法,用于javacc程序自動(dòng)生成sef解析器。可以在任何sef文件上使用專門編寫的x12代碼運(yùn)行sef解析器,以便為該sef文件自動(dòng)創(chuàng)建edi對(duì)象模型。然后,程序員可以編寫應(yīng)用程序代碼來(lái)使用edi對(duì)象模型解析sef文件所描述的edi文檔,并在內(nèi)存中生成該edi文檔的edi對(duì)象模型實(shí)例。應(yīng)用程序代碼還用于使用edi對(duì)象模型實(shí)例來(lái)有效地處理edi文檔的edi事務(wù)。此外,應(yīng)用程序代碼用于在edi對(duì)象模型實(shí)例上使用edi對(duì)象模型來(lái)發(fā)出edi文檔以供進(jìn)一步使用。
3、然而,現(xiàn)有技術(shù)無(wú)法基于自定義函數(shù)對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行解析。
技術(shù)實(shí)現(xiàn)思路
1、本專利技術(shù)技術(shù)方案提供一種基于自定義業(yè)務(wù)公式進(jìn)行自動(dòng)解析實(shí)現(xiàn)方法及系統(tǒng),以解決如何基于自定義業(yè)務(wù)公式進(jìn)行業(yè)務(wù)數(shù)據(jù)自動(dòng)解析的問題。
2、為了解決上述問題,本專利技術(shù)提供了一種基于自定義業(yè)務(wù)公式進(jìn)行自動(dòng)解析實(shí)現(xiàn)方法,所述
3、根據(jù)業(yè)務(wù)需求定義函數(shù),并基于所述定義函數(shù)編寫語(yǔ)法規(guī)則文件,以獲取jj結(jié)尾文件和所述jjt結(jié)尾文件;
4、通過javacc讀取jj結(jié)尾文件和所述jjt結(jié)尾文件,生成java程序;所述java程序包括詞法分析器和語(yǔ)法分析器;
5、封裝業(yè)務(wù)數(shù)據(jù),并基于所述定義函數(shù)利用所述詞法分析器和語(yǔ)法分析器對(duì)所述業(yè)務(wù)數(shù)據(jù)進(jìn)行解析,獲取解析結(jié)果。
6、優(yōu)選地,還包括通過構(gòu)建解析樹定義函數(shù):
7、將定義函數(shù)用到的所有條件節(jié)點(diǎn)通過橫向樹節(jié)點(diǎn)的形式表現(xiàn)出來(lái),當(dāng)條件節(jié)點(diǎn)之間如果是并且關(guān)系,所述條件節(jié)點(diǎn)在解析樹中以串行的形式連接;
8、當(dāng)條件節(jié)之間如果是或者關(guān)系,所述解析樹會(huì)通過一個(gè)或節(jié)點(diǎn)將若干個(gè)條件節(jié)點(diǎn)連接;
9、如果總的條件節(jié)點(diǎn)使用并且連接,但分支節(jié)點(diǎn)上有并且和或者連接的條件節(jié)點(diǎn),則在所述解析樹上將分支節(jié)點(diǎn)上的并且條件以串行的形式連接,同時(shí)將分支節(jié)點(diǎn)上的或者條件使用或節(jié)點(diǎn)連接,再使用與節(jié)點(diǎn)將所有條件連接起來(lái)。
10、優(yōu)選地,還包括:
11、當(dāng)定義函數(shù)中有兩個(gè)相同的條件,在構(gòu)建所述解析樹時(shí)會(huì)將相同的條件節(jié)點(diǎn)合并為一個(gè)節(jié)點(diǎn),在所述解析樹上通過一個(gè)節(jié)點(diǎn)顯示;
12、所述根節(jié)點(diǎn)是一個(gè)接口,其中包括的抽象接口用于自定義擴(kuò)展的業(yè)務(wù)。
13、優(yōu)選地,所述java程序基于webservicebean協(xié)議對(duì)接外部接口。
14、優(yōu)選地,所述詞法分析器將一連串的字符序列劃分成token的子序列,并對(duì)token進(jìn)行分類;
15、將所述token傳送給所述語(yǔ)法分析器以確定所述java程序的結(jié)構(gòu)。
16、優(yōu)選地,還包括:在所述jj結(jié)尾文件中定義函數(shù):其中skip為要跳過忽略的字符串,token為要識(shí)別的字符串。
17、基于本專利技術(shù)的另一方面,本專利技術(shù)提供一種基于自定義業(yè)務(wù)公式進(jìn)行自動(dòng)解析實(shí)現(xiàn)系統(tǒng),所述系統(tǒng)包括:
18、初始單元,用于根據(jù)業(yè)務(wù)需求定義函數(shù),并基于所述定義函數(shù)編寫語(yǔ)法規(guī)則文件,以獲取jj結(jié)尾文件和所述jjt結(jié)尾文件;
19、生成單元,用于通過javacc讀取jj結(jié)尾文件和所述jjt結(jié)尾文件,生成java程序;所述java程序包括詞法分析器和語(yǔ)法分析器;
20、解析單元,用于封裝業(yè)務(wù)數(shù)據(jù),并基于所述定義函數(shù)利用所述詞法分析器和語(yǔ)法分析器對(duì)所述業(yè)務(wù)數(shù)據(jù)進(jìn)行解析,獲取解析結(jié)果。
21、優(yōu)選地,所述生成單元,還用于通過構(gòu)建解析樹定義函數(shù):
22、將定義函數(shù)用到的所有條件節(jié)點(diǎn)通過橫向樹節(jié)點(diǎn)的形式表現(xiàn)出來(lái),當(dāng)條件節(jié)點(diǎn)之間如果是并且關(guān)系,所述條件節(jié)點(diǎn)在解析樹中以串行的形式連接;
23、當(dāng)條件節(jié)之間如果是或者關(guān)系,所述解析樹會(huì)通過一個(gè)或節(jié)點(diǎn)將若干個(gè)條件節(jié)點(diǎn)連接;
24、如果總的條件節(jié)點(diǎn)使用并且連接,但分支節(jié)點(diǎn)上有并且和或者連接的條件節(jié)點(diǎn),則在所述解析樹上將分支節(jié)點(diǎn)上的并且條件以串行的形式連接,同時(shí)將分支節(jié)點(diǎn)上的或者條件使用或節(jié)點(diǎn)連接,再使用與節(jié)點(diǎn)將所有條件連接起來(lái)。
25、優(yōu)選地,所述生成單元,還用于:
26、當(dāng)定義函數(shù)中有兩個(gè)相同的條件,在構(gòu)建所述解析樹時(shí)會(huì)將相同的條件節(jié)點(diǎn)合并為一個(gè)節(jié)點(diǎn),在所述解析樹上通過一個(gè)節(jié)點(diǎn)顯示;
27、所述根節(jié)點(diǎn)是一個(gè)接口,其中包括的抽象接口用于自定義擴(kuò)展的業(yè)務(wù)。
28、優(yōu)選地,所述java程序基于webservicebean協(xié)議對(duì)接外部接口。
29、優(yōu)選地,所述詞法分析器將一連串的字符序列劃分成token的子序列,并對(duì)token進(jìn)行分類;
30、將所述token傳送給所述語(yǔ)法分析器以確定所述java程序的結(jié)構(gòu)。
31、優(yōu)選地,還包括:在所述jj結(jié)尾文件中定義函數(shù):其中skip為要跳過忽略的字符串,token為要識(shí)別的字符串。
32、本專利技術(shù)技術(shù)方案提供了一種基于自定義業(yè)務(wù)公式進(jìn)行自動(dòng)解析實(shí)現(xiàn)方法及系統(tǒng),其中方法包括:根據(jù)業(yè)務(wù)需求定義函數(shù),并基于定義函數(shù)編寫語(yǔ)法規(guī)則文件,以獲取jj結(jié)尾文件和jjt結(jié)尾文件;通過javacc讀取jj結(jié)尾文件和jjt結(jié)尾文件,生成java程序;java程序包括詞法分析器和語(yǔ)法分析器;封裝業(yè)務(wù)數(shù)據(jù),并基于定義函數(shù)利用詞法分析器和語(yǔ)法分析器對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行解析,獲取解析結(jié)果。本專利技術(shù)技術(shù)方案提出一種基于javacc的公式解析實(shí)現(xiàn)方案,滿足企業(yè)的對(duì)于復(fù)雜公式解析的需求。本專利技術(shù)基于企業(yè)現(xiàn)實(shí)業(yè)務(wù)需要,通過復(fù)雜公式的解析運(yùn)算,實(shí)現(xiàn)對(duì)各個(gè)模塊或者系統(tǒng)復(fù)雜公式的支持,從而支撐業(yè)務(wù)運(yùn)行。
本文檔來(lái)自技高網(wǎng)...【技術(shù)保護(hù)點(diǎn)】
1.一種基于自定義業(yè)務(wù)公式進(jìn)行自動(dòng)解析實(shí)現(xiàn)方法,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,還包括通過構(gòu)建解析樹定義函數(shù):
3.根據(jù)權(quán)利要求2所述的方法,還包括:
4.根據(jù)權(quán)利要求1所述的方法,所述java程序基于WebServiceBean協(xié)議對(duì)接外部接口。
5.根據(jù)權(quán)利要求1所述的方法,所述詞法分析器將一連串的字符序列劃分成Token的子序列,并對(duì)Token進(jìn)行分類;
6.根據(jù)權(quán)利要求5所述的方法,還包括:在所述jj結(jié)尾文件中定義函數(shù):其中SKIP為要跳過忽略的字符串,TOKEN為要識(shí)別的字符串。
7.一種基于自定義業(yè)務(wù)公式進(jìn)行自動(dòng)解析實(shí)現(xiàn)系統(tǒng),所述系統(tǒng)包括:
8.根據(jù)權(quán)利要求7所述的系統(tǒng),所述生成單元,還用于通過構(gòu)建解析樹定義函數(shù):
9.根據(jù)權(quán)利要求8所述的系統(tǒng),所述生成單元,還用于:
10.根據(jù)權(quán)利要求7所述的系統(tǒng),所述java程序基于WebServiceBean協(xié)議對(duì)接外部接口。
11.根據(jù)權(quán)利要求7所述的系統(tǒng),所述詞法分析器將一連串的字符序列劃分成
12.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括:在所述jj結(jié)尾文件中定義函數(shù):其中SKIP為要跳過忽略的字符串,TOKEN為要識(shí)別的字符串。
...【技術(shù)特征摘要】
1.一種基于自定義業(yè)務(wù)公式進(jìn)行自動(dòng)解析實(shí)現(xiàn)方法,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,還包括通過構(gòu)建解析樹定義函數(shù):
3.根據(jù)權(quán)利要求2所述的方法,還包括:
4.根據(jù)權(quán)利要求1所述的方法,所述java程序基于webservicebean協(xié)議對(duì)接外部接口。
5.根據(jù)權(quán)利要求1所述的方法,所述詞法分析器將一連串的字符序列劃分成token的子序列,并對(duì)token進(jìn)行分類;
6.根據(jù)權(quán)利要求5所述的方法,還包括:在所述jj結(jié)尾文件中定義函數(shù):其中skip為要跳過忽略的字符串,token為要識(shí)別的字符串。
7.一種基于...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:董冬陽(yáng),于強(qiáng),李興衛(wèi),
申請(qǐng)(專利權(quán))人:航信云享科技有限公司,
類型:發(fā)明
國(guó)別省市:
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。