一種公式解析計算系統(tǒng)及方法
【專利摘要】本發(fā)明涉及一種公式解析計算系統(tǒng)及方法,包括根據(jù)需求配置公式信息,將配置完成的公式進行四則運算法則的公式校驗;將驗證通過的公式進行存儲;獲取所需公式,輸入相應(yīng)參數(shù)得到公式實例;對公式實例進行校驗,校驗通過則進行實例解析,解析出若干組括號,按照從右到左從內(nèi)到外依次提取括號中的字符串進行計算,將計算數(shù)值返回到公式實例相應(yīng)位置,計算出所有括號內(nèi)的值,得出計算結(jié)果。本發(fā)明通過配置所需的公式,對公式進行四則運算法則的校驗,進而解析和計算公式,當需要修改公式時,無需修改代碼,只需將配置的公式信息進行修改,解析計算時按照新的公式進行即可,大大減少了工作量,降低了維護成本。
【專利說明】一種公式解析計算系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,尤其涉及一種公式解析計算系統(tǒng)及方法。
【背景技術(shù)】
[0002]目前,很多軟件系統(tǒng)中都需要對一些公式做處理,在軟件生命周期中,后期的成本往往在總成本中占了非常多的一塊。例如當某些值的計算規(guī)則經(jīng)常變動時,通常需要通過修改代碼的方式來完成計算規(guī)則的改變,這樣給后期維護工作帶來很大的工作量,效率極低,且人工修改代碼無法保證操作的準確率,維護成本高。
【發(fā)明內(nèi)容】
[0003]本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種公式解析計算系統(tǒng)及方法。
[0004]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種公式解析計算系統(tǒng),包括公式配置模塊、公式校驗?zāi)K、公式存儲模塊、公式實例模塊、實例解析模塊和實例計算模塊;
[0005]所述公式配置模塊,其用于根據(jù)需求配置公式信息;
[0006]所述公式校驗?zāi)K,其用于校驗配置的公式是否符合四則運算法則,將驗證通過的公式發(fā)送給公式存儲模塊;還用于對公式實例進行校驗,驗證通過發(fā)送給實例解析模塊;
[0007]所述公式存儲模塊,其用于存儲校驗通過的公式;
[0008]所述公式實例模塊,其用于從公式存儲模塊獲取所需公式,輸入相應(yīng)參數(shù)得到公式實例,將公式實例發(fā)送給公式校驗?zāi)K;
[0009]所述實例解析模塊,其用于對校驗通過的公式實例進行解析,解析出若干組括號,按照從右到左從內(nèi)到外依次提取括號中的字符串發(fā)送給實例計算模塊;
[0010]所述實例計算模塊,其用于計算出各括號內(nèi)的數(shù)值,將數(shù)值返回到公式實例的相應(yīng)位置,得出計算結(jié)果。
[0011]本發(fā)明的有益效果是:本發(fā)明通過配置所需的公式,對公式進行四則運算法則的校驗,進而解析和計算公式,當需要修改公式時,無需修改代碼,只需將配置的公式信息進行修改,解析計算時按照新的公式進行即可,大大減少了工作量,降低了維護成本;另外,本發(fā)明不但對配置的公式進行四則運算法則的校驗,還對公式實例進行校驗,放置在公式實例化過程中,由于參數(shù)輸入錯誤導(dǎo)致得到的公式實例不合法,大大提高了公式處理的可靠性。
[0012]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。
[0013]進一步,所述公式校驗?zāi)K內(nèi)存儲公式校驗規(guī)則,所述公式校驗規(guī)則包括:一,判斷左括號與右括號數(shù)目是否相等;二,判斷是否存在左括號直接與加號、減號、乘號或者除號連接的情況;三,判斷是否存在加號、減號、乘號或者除號直接與右括號連接的情況;四,判斷是否存在加號、減號、乘號或者除號直接與加號、減號、乘號或者除號連接的情況;五,判斷是否存在左括號直接與右括號連接的情況;以上五種情況為不符合四則法則的情況。
[0014]進一步,所述實例解析模塊包括實例預(yù)處理單元和實例解析單元;
[0015]所述實例預(yù)處理單元,其用于在公式實例的開始加一個左括號,在公式實例的末端加一個右括號,將預(yù)處理的公式實例發(fā)送給實例解析單元;
[0016]所述實例解析單元,其用于依次查找預(yù)處理的公式實例中的最后一個左括號,進而查找該左括號右端與其最近的一個右括號,取出括號內(nèi)字符串發(fā)送給實例計算模塊,直至所有括號內(nèi)的數(shù)據(jù)處理完畢。
[0017]進一步,所述實例計算模塊包括括號數(shù)值計算單元和計算結(jié)果輸出單元;
[0018]所述括號數(shù)值計算單元,其用于對實例解析模塊發(fā)送的字符串進行計算,將計算結(jié)果返回給實例解析模塊替換公式實例中所取括號及其內(nèi)字符串;
[0019]所述計算結(jié)果輸出單元,其用于判斷括號數(shù)值計算單元計算的數(shù)據(jù)是否為最后一個括號中的數(shù)據(jù),當為最后一個括號中的數(shù)據(jù)時,計算當前公式實例并輸出計算結(jié)果。
[0020]進一步,所述括號數(shù)值計算單元計算括號內(nèi)數(shù)值的具體實現(xiàn)為:對實例解析單元發(fā)送的數(shù)據(jù)放入一個集合中,查找該集合中除號位置,取除號前一元素和后一元素,相除得到一個新元素,進而將原位置的三個元素刪除,放入該新元素;繼續(xù)找除號進行上述操作,直至無法找到除號為止;根據(jù)上述操作方式執(zhí)行乘號、減號和加號的計算,得出括號內(nèi)的計算結(jié)果。
[0021]本發(fā)明解決上述技術(shù)問題的另一技術(shù)方案如下:一種公式解析計算方法,包括如下步驟:
[0022]步驟1,據(jù)需求配置公式信息;
[0023]步驟2,根據(jù)公式校驗規(guī)則校驗配置的公式是否符合四則運算法則,驗證通過執(zhí)行步驟3,否則提示公式不合法,返回步驟1 ;
[0024]步驟3,從公式存儲模塊獲取所需公式,輸入相應(yīng)參數(shù)得到公式實例;
[0025]步驟4,對公式實例進行校驗,校驗通過執(zhí)行步驟5,否則提示公式實例不合法,返回步驟3 ;
[0026]步驟5,對公式實例進行解析,解析出若干組括號,按照從右到左從內(nèi)到外依次提取括號中的字符串發(fā)送給實例計算模塊;
[0027]步驟6,實例計算模塊計算出各括號內(nèi)的數(shù)值,將數(shù)值返回到公式實例相應(yīng)位置,得出計算結(jié)果。
[0028]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。
[0029]進一步,步驟2的具體實現(xiàn)如下:
[0030]步驟21,判斷公式中的左括號與右括號數(shù)目是否相等,如果相等執(zhí)行步驟22,否則提示括號數(shù)不相等,重新配置公式;
[0031]步驟22,判斷是否存在左括號直接與加號、減號、乘號或者除號連接的情況,如果不存在執(zhí)行步驟23,否則提示存在非法字符,重新配置公式;
[0032]步驟23,判斷是否存在加號、減號、乘號或者除號直接與右括號連接的情況,如果不存在執(zhí)行步驟24,否則提示存在非法字符,重新配置公式;
[0033]步驟24,判斷是否存在加號、減號、乘號或者除號直接與加號、減號、乘號或者除號連接的情況,如果不存在執(zhí)行步驟25,否則提示存在非法字符,重新配置公式;
[0034]步驟25,判斷是否存在左括號直接與右括號連接的情況,如果存在則提示存在非法字符,重新配置公式;否則校驗通過,結(jié)束流程。
[0035]進一步,所述步驟5的具體實現(xiàn)為:
[0036]步驟51,在公式實例的開始加一個左括號,在公式實例的末端加一個右括號,將預(yù)處理的公式實例發(fā)送給實例解析單元;
[0037]步驟52,依次查找預(yù)處理的公式實例中的最后一個左括號,進而查找該左括號右端與其最近的一個右括號,取出括號內(nèi)字符串發(fā)送給實例計算模塊,直至所有括號內(nèi)的數(shù)據(jù)處理完畢。
[0038]進一步,所述步驟6的具體實現(xiàn)為:
[0039]步驟61,對實例解析模塊發(fā)送的字符串進行計算,將計算結(jié)果返回給實例解析模塊替換公式實例中所取括號及其內(nèi)字符串;
[0040]步驟62,判斷括號數(shù)值計算單元計算的數(shù)據(jù)是否為最后一個括號中數(shù)據(jù),當為最后一個括號中的數(shù)據(jù)時,計算當前公式實例并輸出計算結(jié)果。
[0041]進一步,所述步驟61的具體實現(xiàn)為:對實例解析單元發(fā)送的元素數(shù)據(jù)放入一個集合中,查找該集合中除號位置,取除號前一元素和后一元素,相除得到一個新元素,進而將原位置的三個元素刪除,放入該新元素;繼續(xù)找除號進行上述操作,直至無法找到除號;根據(jù)上述操作方式執(zhí)行乘號、減號和加號的計算,得出括號內(nèi)的計算結(jié)果。
【專利附圖】
【附圖說明】
[0042]圖1為本發(fā)明所述一種公式解析計算系統(tǒng)框圖;
[0043]圖2為本發(fā)明所述實例解析模塊框圖;
[0044]圖3為本發(fā)明所述實例計算模塊框圖;
[0045]圖4為本發(fā)明所述一種公式解析計算方法流程圖;
[0046]圖5為本發(fā)明步驟2所述公式校驗流程圖;
[0047]圖6為本發(fā)明步驟5和步驟6的實現(xiàn)流程圖。
[0048]附圖中,各標號所代表的部件列表如下:
[0049]100、公式配置模塊,200、公式校驗?zāi)K,300、公式存儲模塊,400、公式實例模塊,500、實例解析模塊,600實例計算模塊,501、實例預(yù)處理單元,502、實例解析單元,601、括號數(shù)值計算單元,602、計算結(jié)果輸出單元。
【具體實施方式】
[0050]以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0051]如圖1所示,一種公式解析計算系統(tǒng),包括公式配置模塊100、公式校驗?zāi)K200、公式存儲模塊300、公式實例模塊400、實例解析模塊500和實例計算模塊600 ;所述公式配置模塊100,其用于根據(jù)需求配置公式信息;所述公式校驗?zāi)K200,其用于校驗配置的公式是否符合四則運算法則,將驗證通過的公式發(fā)送給公式存儲模塊300 ;還用于對公式實例進行校驗,驗證通過發(fā)送給實例解析模塊500 ;所述公式存儲模塊300,其用于存儲校驗通過的公式;所述公式實例模塊400,其用于從公式存儲模塊獲取所需公式,輸入相應(yīng)參數(shù)得到公式實例,將公式實例發(fā)送給公式校驗?zāi)K200 ;所述實例解析模塊500,其用于對校驗通過的公式實例進行解析,解析出若干組括號,按照從右到左從內(nèi)到外依次提取括號中的字符串發(fā)送給實例計算模塊600;所述實例計算模塊600,其用于計算出各括號內(nèi)的數(shù)值,將數(shù)值返回到公式實例的相應(yīng)位置,得出計算結(jié)果。
[0052]所述公式校驗?zāi)K內(nèi)存儲公式校驗規(guī)則,所述公式校驗規(guī)則包括:一,判斷左括號與右括號數(shù)目是否相等;二,判斷是否存在左括號直接與加號、減號、乘號或者除號連接的情況;三,判斷是否存在加號、減號、乘號或者除號直接與右括號連接的情況;四,判斷是否存在加號、減號、乘號或者除號直接與加號、減號、乘號或者除號連接的情況;五,判斷是否存在左括號直接與右括號連接的情況;以上五種情況為不符合四則法則的情況。
[0053]如圖2所示,所述實例解析模塊500包括實例預(yù)處理單元501和實例解析單元502;所述實例預(yù)處理單元501,其用于在公式實例的開始加一個左括號,在公式實例的末端加一個右括號,將預(yù)處理的公式實例發(fā)送給實例解析單元502 ;所述實例解析單元502,其用于依次查找預(yù)處理的公式實例中的最后一個左括號,進而查找該左括號右端與其最近的一個右括號,取出括號內(nèi)字符串發(fā)送給實例計算模塊600,直至所有括號內(nèi)的數(shù)據(jù)處理完畢。
[0054]如圖3所示,所述實例計算模塊600包括括號數(shù)值計算單元601和計算結(jié)果輸出單元602;所述括號數(shù)值計算單元601,其用于對實例解析模塊發(fā)送的字符串進行計算,將計算結(jié)果返回給實例解析模塊500替換公式實例中所取括號及其內(nèi)字符串;所述計算結(jié)果輸出單元602,其用于判斷括號數(shù)值計算單元計算的數(shù)據(jù)是否為最后一個括號中的數(shù)據(jù),當為最后一個括號中的數(shù)據(jù)時,計算當前公式實例并輸出計算結(jié)果。
[0055]所述括號數(shù)值計算單元601計算括號內(nèi)數(shù)值的具體實現(xiàn)為:對實例解析單元發(fā)送的數(shù)據(jù)放入一個集合中,查找該集合中除號位置,取除號前一元素和后一元素,相除得到一個新元素,進而將原位置的三個元素刪除,放入該新元素;繼續(xù)找除號進行上述操作,直至無法找到除號為止;根據(jù)上述操作方式執(zhí)行乘號、減號和加號的計算,得出括號內(nèi)的計算結(jié)果。
[0056]如圖4所示,一種公式解析計算方法,包括如下步驟:
[0057]步驟1,據(jù)需求配置公式信息;
[0058]步驟2,根據(jù)公式校驗規(guī)則校驗配置的公式是否符合四則運算法則,驗證通過執(zhí)行步驟3,否則提示公式不合法,返回步驟1 ;
[0059]步驟3,從公式存儲模塊獲取所需公式,輸入相應(yīng)參數(shù)得到公式實例;
[0060]步驟4,對公式實例進行校驗,校驗通過執(zhí)行步驟5,否則提示公式實例不合法,返回步驟3 ;
[0061]步驟5,對公式實例進行解析,解析出若干組括號,按照從右到左從內(nèi)到外依次提取括號中的字符串發(fā)送給實例計算模塊;
[0062]步驟6,實例計算模塊計算出各括號內(nèi)的數(shù)值,將數(shù)值返回到公式實例相應(yīng)位置,得出計算結(jié)果。
[0063]如圖5所示,步驟2中的具體實現(xiàn)如下:
[0064]步驟21,判斷公式中的左括號與右括號數(shù)目是否相等,如果相等執(zhí)行步驟22,否則提示括號數(shù)不相等,重新配置公式;
[0065]步驟22,判斷是否存在左括號直接與加號、減號、乘號或者除號連接的情況,如果不存在執(zhí)行步驟23,否則提示存在非法字符,重新配置公式;
[0066]步驟23,判斷是否存在加號、減號、乘號或者除號直接與右括號連接的情況,如果不存在執(zhí)行步驟24,否則提示存在非法字符,重新配置公式;
[0067]步驟24,判斷是否存在加號、減號、乘號或者除號直接與加號、減號、乘號或者除號連接的情況,如果不存在執(zhí)行步驟25,否則提示存在非法字符,重新配置公式;
[0068]步驟25,判斷是否存在左括號直接與右括號連接的情況,如果存在則提示存在非法字符,重新配置公式;否則校驗通過,結(jié)束流程。
[0069]如圖6所示,所述步驟5及步驟6的具體實現(xiàn)為:
[0070]步驟51,在公式實例的開始加一個左括號,在公式實例的末端加一個右括號;
[0071]步驟52,依次查找預(yù)處理的公式實例中的最后一個左括號,進而查找該左括號右端與其最近的一個右括號,取出括號內(nèi)字符串發(fā)送給括號數(shù)值計算單元;
[0072]步驟61,對實例解析單元發(fā)送的字符串進行計算,將計算結(jié)果返回給實例解析單元替換公式實例中所取括號及其內(nèi)字符串;
[0073]步驟62,判斷括號數(shù)值計算單元計算的數(shù)據(jù)是否為最后一個括號中數(shù)據(jù),當為最后一個括號中的數(shù)據(jù)時,計算當前公式實例并輸出計算結(jié)果。
[0074]所述步驟61的具體實現(xiàn)為:對實例解析單元發(fā)送的元素數(shù)據(jù)放入一個集合中,查找該集合中除號位置,取除號前一元素和后一元素,相除得到一個新元素,進而將原位置的三個元素刪除,放入該新元素;繼續(xù)找除號進行上述操作,直至無法找到除號;根據(jù)上述操作方式執(zhí)行乘號、減號和加號的計算,得出括號內(nèi)的計算結(jié)果。
[0075]下面以銷售費用管理控制為例對本申請進行進一步描述。
[0076]利用本發(fā)明的方法實現(xiàn)對允許銷售所能夠報銷的總金額進行計算。
[0077]1.公式配置模塊通過規(guī)則配置功能配置公式信息,如下為年度報銷金額的幾個計算公式:
[0078]年度報銷金額=年度實際簽約*費用比例+年度銷售任務(wù)*費用比例/12個月+特殊額度
[0079]年度報銷金額=年度實際簽約*費用比例+特殊額度
[0080]年度報銷金額=月數(shù)*年度總預(yù)算/12個月+特殊額度
[0081]年度報銷金額=累計季度月數(shù)*年度總預(yù)算/12個月+特殊額度
[0082]年度報銷金額=累計季度月數(shù)*年度總預(yù)算/12個月+特殊額度/2。
[0083]2.公式校驗?zāi)K根據(jù)公式校驗規(guī)則校驗配置的公式是否符合四則運算法則,將驗證通過的公式存儲起來,否則提示公式不合法,重新配置公式信息。公式校驗過程是檢驗公式是否符合四則運算公式的規(guī)則,校驗是否有左括號直接接加減乘除,加減乘除后直接跟右括號,加減乘除后直接跟加減乘除,左括號后直接跟右括號,左括號與右括號數(shù)不同的情況,如果有以上5種情況中的任一種或幾種,則不符合四則運算法則,校驗不通過,提示公式不合法,重新配置公式。
[0084]3.公式實例模塊獲取公式內(nèi)容,輸入相應(yīng)參數(shù)獲得公式實例,將公式實例按照步驟2的操作進行校驗,驗證通過則發(fā)送給實例解析模塊,否則提示公式實例不合法,重新實例化。
[0085]4.公式解析模塊對符合四則運算公式規(guī)則的公式實例進行解析,將公式實例前加左端加左括號,末端加右括號,然后查找最后一個左括號位置,找到該位置后第一個右括號位置,將該左括號和右括號中的數(shù)據(jù)取出,并將該部分字符串中元素抽取到一個集合中,找到該集合中除號位置,取除號前一元素和后一元素,相除后將原位置3個元素刪除,放入該新元素,繼續(xù)找除號,知道無法找到,同理執(zhí)行乘號、減號和加號,得出該括號內(nèi)的值,用該值替換公式實例中相應(yīng)位置的字符串。
[0086]5.繼續(xù)尋找左括號,找到后按照步驟4執(zhí)行,直到無法找到左括號為止,所得值即為該公式實例的計算結(jié)果。
[0087]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種公式解析計算系統(tǒng),其特征在于,包括公式配置模塊、公式校驗?zāi)K、公式存儲模塊、公式實例模塊、實例解析模塊和實例計算模塊; 所述公式配置模塊,其用于根據(jù)需求配置公式信息; 所述公式校驗?zāi)K,其用于校驗配置的公式是否符合四則運算法則,將驗證通過的公式發(fā)送給公式存儲模塊;還用于對公式實例進行校驗,驗證通過發(fā)送給實例解析模塊; 所述公式存儲模塊,其用于存儲校驗通過的公式; 所述公式實例模塊,其用于從公式存儲模塊獲取所需公式,輸入相應(yīng)參數(shù)得到公式實例,將公式實例發(fā)送給公式校驗?zāi)K; 所述實例解析模塊,其用于對校驗通過的公式實例進行解析,解析出若干組括號,按照從右到左從內(nèi)到外依次提取括號中的字符串發(fā)送給實例計算模塊; 所述實例計算模塊,其用于計算出各括號內(nèi)的數(shù)值,將數(shù)值返回到公式實例的相應(yīng)位置,得出計算結(jié)果。
2.根據(jù)權(quán)利要求1所述一種公式解析計算系統(tǒng),其特征在于,所述公式校驗?zāi)K內(nèi)存儲公式校驗規(guī)則,所述公式校驗規(guī)則包括:一,判斷左括號與右括號數(shù)目是否相等;二,判斷是否存在左括號直接與加號、減號、乘號或者除號連接的情況;三,判斷是否存在加號、減號、乘號或者除號直接與右括號連接的情況;四,判斷是否存在加號、減號、乘號或者除號直接與加號、減號、乘號或者除號連接的情況;五,判斷是否存在左括號直接與右括號連接的情況;以上五種情況為不符合四則法則的情況。
3.根據(jù)權(quán)利要求1所述一種公式解析計算系統(tǒng),其特征在于,所述實例解析模塊包括實例預(yù)處理單元和實例解析單元; 所述實例預(yù)處理單元,其用于在公式實例的開始加一個左括號,在公式實例的末端加一個右括號,將預(yù)處理的公式實例發(fā)送給實例解析單元; 所述實例解析單元,其用于依次查找預(yù)處理的公式實例中的最后一個左括號,進而查找該左括號右端與其最近的一個右括號,取出括號內(nèi)字符串發(fā)送給實例計算模塊,直至所有括號內(nèi)的數(shù)據(jù)處理完畢。
4.根據(jù)權(quán)利要求1所述一種公式解析計算系統(tǒng),其特征在于,所述實例計算模塊包括括號數(shù)值計算單元和計算結(jié)果輸出單元; 所述括號數(shù)值計算單元,其用于對實例解析模塊發(fā)送的字符串進行計算,將計算結(jié)果返回給實例解析模塊替換公式實例中所取括號及其內(nèi)字符串; 所述計算結(jié)果輸出單元,其用于判斷括號數(shù)值計算單元計算的數(shù)據(jù)是否為最后一個括號中的數(shù)據(jù),當為最后一個括號中的數(shù)據(jù)時,計算當前公式實例并輸出計算結(jié)果。
5.根據(jù)權(quán)利要求4所述一種公式解析計算系統(tǒng),其特征在于,所述括號數(shù)值計算單元計算括號內(nèi)數(shù)值的具體實現(xiàn)為:對實例解析單元發(fā)送的數(shù)據(jù)放入一個集合中,查找該集合中除號位置,取除號前一元素和后一元素,相除得到一個新元素,進而將原位置的三個元素刪除,放入該新元素;繼續(xù)找除號進行上述操作,直至無法找到除號為止;根據(jù)上述操作方式執(zhí)行乘號、減號和加號的計算,得出括號內(nèi)的計算結(jié)果。
6.一種公式解析計算方法,其特征在于,包括如下步驟: 步驟I,據(jù)需求配置公式信息; 步驟2,根據(jù)公式校驗規(guī)則校驗配置的公式是否符合四則運算法則,驗證通過執(zhí)行步驟3,否則提示公式不合法,返回步驟I ; 步驟3,從公式存儲模塊獲取所需公式,輸入相應(yīng)參數(shù)得到公式實例; 步驟4,對公式實例進行校驗,校驗通過執(zhí)行步驟5,否則提示公式實例不合法,返回步驟3 ; 步驟5,對公式實例進行解析,解析出若干組括號,按照從右到左從內(nèi)到外依次提取括號中的字符串發(fā)送給實例計算模塊; 步驟6,實例計算模塊計算出各括號內(nèi)的數(shù)值,將數(shù)值返回到公式實例相應(yīng)位置,得出計算結(jié)果。
7.根據(jù)權(quán)利要求6所述一種公式解析計算方法,其特征在于,步驟2的具體實現(xiàn)為: 步驟21,判斷公式中的左括號與右括號數(shù)目是否相等,如果相等執(zhí)行步驟22,否則提示括號數(shù)不相等,重新配置公式; 步驟22,判斷是否存在左括號直接與加號、減號、乘號或者除號連接的情況,如果不存在執(zhí)行步驟23,否則提示存在非法字符,重新配置公式; 步驟23,判斷是否存在加號、減號、乘號或者除號直接與右括號連接的情況,如果不存在執(zhí)行步驟24,否則提示存在非法字符,重新配置公式; 步驟24,判斷是否存在加號、減號、乘號或者除號直接與加號、減號、乘號或者除號連接的情況,如果不存在執(zhí)行步驟25,否則提示存在非法字符,重新配置公式; 步驟25,判斷是否存在左括號直接與右括號連接的情況,如果存在則提示存在非法字符,重新配置公式;否則校驗通過,結(jié)束流程。
8.根據(jù)權(quán)利要求6所述一種公式解析計算方法,其特征在于,所述步驟5的具體實現(xiàn)為: 步驟51,在公式實例的開始加一個左括號,在公式實例的末端加一個右括號,將預(yù)處理的公式實例發(fā)送給實例解析單元; 步驟52,依次查找預(yù)處理的公式實例中的最后一個左括號,進而查找該左括號右端與其最近的一個右括號,取出括號內(nèi)字符串發(fā)送給實例計算模塊,直至所有括號內(nèi)的數(shù)據(jù)處理完畢。
9.根據(jù)權(quán)利要求6所述一種公式解析計算方法,其特征在于,所述步驟6的具體實現(xiàn)為: 步驟61,對實例解析模塊發(fā)送的字符串進行計算,將計算結(jié)果返回給實例解析模塊替換公式實例中所取括號及其內(nèi)字符串; 步驟62,判斷括號數(shù)值計算單元計算的數(shù)據(jù)是否為最后一個括號中數(shù)據(jù),當為最后一個括號中的數(shù)據(jù)時,計算當前公式實例并輸出計算結(jié)果。
10.根據(jù)權(quán)利要求9所述一種公式解析計算方法,其特征在于,所述步驟61的具體實現(xiàn)為:對實例解析單元發(fā)送的元素數(shù)據(jù)放入一個集合中,查找該集合中除號位置,取除號前一元素和后一元素,相除得到一個新元素,進而將原位置的三個元素刪除,放入該新元素;繼續(xù)找除號進行上述操作,直至無法找到除號;根據(jù)上述操作方式執(zhí)行乘號、減號和加號的計算,得出括號內(nèi)的計算結(jié)果。
【文檔編號】G06F17/10GK104408020SQ201410601436
【公開日】2015年3月11日 申請日期:2014年10月30日 優(yōu)先權(quán)日:2014年10月30日
【發(fā)明者】孫成 申請人:北京思特奇信息技術(shù)股份有限公司