用于公式的數(shù)據(jù)處理方法和裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種用于公式的數(shù)據(jù)處理方法和裝置。其中,該方法包括:將接收到的用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為后綴表達(dá)式;構(gòu)建后綴表達(dá)式的二叉樹(shù);判斷后綴表達(dá)式的二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件;若二叉樹(shù)的樹(shù)節(jié)點(diǎn)符合預(yù)設(shè)條件,則判斷出待校驗(yàn)公式正確;若二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù)設(shè)條件,則判斷出待校驗(yàn)公式不正確。通過(guò)本發(fā)明,解決了現(xiàn)有技術(shù)中不能對(duì)用戶輸入公式實(shí)時(shí)給出公式正確性的問(wèn)題,通過(guò)對(duì)用戶輸入公式直接進(jìn)行語(yǔ)法校驗(yàn)來(lái)判斷公式的正確性,提高了反饋的及時(shí)性,用戶可以更快速的得到提示。
【專利說(shuō)明】用于公式的數(shù)據(jù)處理方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種用于公式的數(shù)據(jù)處理方法和裝置。【背景技術(shù)】
[0002] 目前,數(shù)據(jù)分析廣泛的應(yīng)用于各個(gè)領(lǐng)域。在數(shù)據(jù)分析中需要將某些指標(biāo)混合運(yùn)算, 得出新的分析數(shù)據(jù)指標(biāo)用于效果分析,稱之為KPI(KeyPerformanceIndicator,關(guān)鍵績(jī)效 指標(biāo))。
[0003] 如在廣告指標(biāo)分析中,需要監(jiān)控的指標(biāo)包括廣告單位時(shí)間內(nèi)的點(diǎn)擊量、曝光量等。 若廣告主請(qǐng)求獲取此次投放的真實(shí)宣傳效果,需要通過(guò)點(diǎn)擊率來(lái)查看(點(diǎn)擊率=點(diǎn)擊總數(shù) /曝光總數(shù));又如廣告主需要核算成本(成本=CPC單價(jià)*點(diǎn)擊數(shù))。根據(jù)分析需要的指 標(biāo)組合計(jì)算出一個(gè)新的關(guān)鍵績(jī)效指標(biāo),即KPI,這些指標(biāo)的組合可能是任意的。
[0004] 系統(tǒng)要滿足一個(gè)KPI公式定義的功能,有求和運(yùn)算符(SUM)、加減乘除和括號(hào)以及 阿拉伯?dāng)?shù)字等,這就需要根據(jù)用戶設(shè)置的KPI公式進(jìn)行運(yùn)算,為了保證分析結(jié)果的準(zhǔn)確度, 需要對(duì)KPI公式進(jìn)行正確性的校驗(yàn)。
[0005]現(xiàn)有技術(shù)中校驗(yàn)公式的方法為:系統(tǒng)通過(guò)用戶所輸入公式的運(yùn)算結(jié)果來(lái)判斷公式 的正確性,其劣勢(shì)在于用戶需要等待系統(tǒng)的運(yùn)算的結(jié)果,若公式較為復(fù)雜則需要等待較長(zhǎng) 時(shí)間,所以該方法的缺陷在于用戶需要等待,不能在輸入公式時(shí)立刻得到結(jié)果;現(xiàn)有技術(shù)中 還有一種方法通過(guò)公式運(yùn)行的結(jié)果來(lái)判斷公式的正確性。上述的校驗(yàn)方法必須要在運(yùn)行期 才能判斷公式的正確性,用戶不能實(shí)時(shí)判斷所輸入公式的正確性。
[0006] 針對(duì)現(xiàn)有技術(shù)中用戶不能實(shí)時(shí)判斷所輸入的計(jì)算公式的正確性的問(wèn)題,目前尚未 提出有效的解決方案。
【發(fā)明內(nèi)容】
[0007]針對(duì)相關(guān)技術(shù)中不能實(shí)時(shí)判斷用戶所輸入的計(jì)算公式的正確性的問(wèn)題,目前尚未 提出有效的解決方案,為此,本發(fā)明的主要目的在于提供一種用于公式的數(shù)據(jù)處理方法和 裝置,以解決上述問(wèn)題。
[0008] 為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于公式的數(shù)據(jù)處理方 法,該方法包括:將接收到的用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為后綴表達(dá)式;構(gòu)建后綴表達(dá)式 的二叉樹(shù);判斷后綴表達(dá)式的二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件;若二叉樹(shù)的樹(shù)節(jié)點(diǎn)符合 預(yù)設(shè)條件,則判斷出待校驗(yàn)公式正確;若二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù)設(shè)條件,則判斷出待校驗(yàn) 公式不正確。
[0009] 進(jìn)一步地,將接收到的用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為后綴表達(dá)式包括:接收用戶 輸入的待校驗(yàn)公式;獲取待校驗(yàn)公式的各個(gè)操作符的優(yōu)先級(jí);按照各個(gè)操作符的優(yōu)先級(jí)將 待校驗(yàn)公式轉(zhuǎn)換為對(duì)應(yīng)的后綴表達(dá)式。
[0010] 進(jìn)一步地,獲取待校驗(yàn)公式的各個(gè)操作符的優(yōu)先級(jí)包括:判斷各個(gè)操作符是否均 存在于預(yù)設(shè)數(shù)據(jù)表;若操作符不均存在于預(yù)設(shè)數(shù)據(jù)表,則結(jié)束判斷,然后提示用戶重新輸入 待校驗(yàn)公式;若操作符均存在于預(yù)設(shè)數(shù)據(jù)表,則從預(yù)設(shè)數(shù)據(jù)表中讀取操作符的優(yōu)先級(jí)。
[0011] 進(jìn)一步地,判斷后綴表達(dá)式的二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件包括:判斷二叉 樹(shù)的各個(gè)第一節(jié)點(diǎn)是否均為操作數(shù),其中,第一節(jié)點(diǎn)為二叉樹(shù)的葉子節(jié)點(diǎn);若二叉樹(shù)存在不 為操作數(shù)的第一節(jié)點(diǎn),則判斷出二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù)設(shè)條件;若二叉樹(shù)的第一節(jié)點(diǎn)均 為操作數(shù),則判斷二叉樹(shù)的第二節(jié)點(diǎn)是否均為操作符,其中,第二節(jié)點(diǎn)為二叉樹(shù)上除葉子節(jié) 點(diǎn)之外的節(jié)點(diǎn);若二叉樹(shù)存在不為操作符的第二節(jié)點(diǎn),則判斷出二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù) 設(shè)條件;若二叉樹(shù)的第二節(jié)點(diǎn)均為操作符,則判斷二叉樹(shù)的第二節(jié)點(diǎn)是否均具有兩個(gè)子樹(shù); 若二叉樹(shù)存在不具有兩個(gè)子樹(shù)的第二節(jié)點(diǎn),則判斷出二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù)設(shè)條件;若 二叉樹(shù)的第二節(jié)點(diǎn)均具有兩個(gè)子樹(shù),則判斷出二叉樹(shù)的樹(shù)節(jié)點(diǎn)符合預(yù)設(shè)條件。
[0012] 進(jìn)一步地,判斷二叉樹(shù)的各個(gè)第一節(jié)點(diǎn)是否均為操作數(shù)包括:讀取各個(gè)第一節(jié)點(diǎn) 的數(shù)據(jù);判斷各個(gè)第一節(jié)點(diǎn)的數(shù)據(jù)的類型是否為變量或常量;若各個(gè)第一節(jié)點(diǎn)的數(shù)據(jù)的類 型均為變量或常量,則判斷出二叉樹(shù)的各個(gè)第一節(jié)點(diǎn)均為操作數(shù);若存在數(shù)據(jù)的類型不為 變量或常量的第一節(jié)點(diǎn),則判斷出二叉樹(shù)中存在不為操作數(shù)的第一節(jié)點(diǎn)。
[0013] 進(jìn)一步地,在接收用戶輸入的待校驗(yàn)公式之前,數(shù)據(jù)處理方法還包括:獲取預(yù)設(shè)的 操作符的優(yōu)先級(jí);保存操作符與操作符的優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系為預(yù)設(shè)數(shù)據(jù)表。
[0014] 為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種用于公式的數(shù)據(jù)處理裝 置,該裝置包括:轉(zhuǎn)換模塊,用于將接收到的用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為后綴表達(dá)式;構(gòu) 建模塊,用于構(gòu)建后綴表達(dá)式的二叉樹(shù);判斷模塊,用于判斷后綴表達(dá)式的二叉樹(shù)的樹(shù)節(jié)點(diǎn) 是否符合預(yù)設(shè)條件;第一確定模塊,用于若二叉樹(shù)的樹(shù)節(jié)點(diǎn)符合預(yù)設(shè)條件,則判斷出待校驗(yàn) 公式正確;第二確定模塊,用于若二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù)設(shè)條件,則判斷出待校驗(yàn)公式不 正確。
[0015] 進(jìn)一步地,轉(zhuǎn)換模塊包括:接收模塊,用于接收用戶輸入的待校驗(yàn)公式;獲取子模 塊,用于獲取待校驗(yàn)公式的各個(gè)操作符的優(yōu)先級(jí);轉(zhuǎn)換子模塊,用于按照各個(gè)操作符的優(yōu)先 級(jí)將待校驗(yàn)公式轉(zhuǎn)換為對(duì)應(yīng)的后綴表達(dá)式。
[0016] 進(jìn)一步地,獲取子模塊包括:操作符判斷模塊,用于判斷各個(gè)操作符是否均存在于 預(yù)設(shè)數(shù)據(jù)表;第一操作符確定模塊,用于若操作符不均存在于預(yù)設(shè)數(shù)據(jù)表,則結(jié)束判斷,然 后提示用戶重新輸入待校驗(yàn)公式;第二操作符確定模塊,用于若操作符均存在于預(yù)設(shè)數(shù)據(jù) 表,則從預(yù)設(shè)數(shù)據(jù)表中讀取操作符的優(yōu)先級(jí)。
[0017] 進(jìn)一步地,判斷模塊包括:第一判斷子模塊,用于判斷二叉樹(shù)的各個(gè)第一節(jié)點(diǎn)是否 均為操作數(shù),其中,第一節(jié)點(diǎn)為二叉樹(shù)的葉子節(jié)點(diǎn);第一確定子模塊,用于若二叉樹(shù)存在不 為操作數(shù)的第一節(jié)點(diǎn),則判斷出二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù)設(shè)條件;第二判斷子模塊,用于若 二叉樹(shù)的第一節(jié)點(diǎn)均為操作數(shù),則判斷二叉樹(shù)的第二節(jié)點(diǎn)是否均為操作符,其中,第二節(jié)點(diǎn) 為二叉樹(shù)上除葉子節(jié)點(diǎn)之外的節(jié)點(diǎn);第二確定子模塊,用于若二叉樹(shù)存在不為操作符的第 二節(jié)點(diǎn),則判斷出二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù)設(shè)條件;第三判斷子模塊,用于若二叉樹(shù)的第二 節(jié)點(diǎn)均為操作符,則判斷二叉樹(shù)的第二節(jié)點(diǎn)是否均具有兩個(gè)子樹(shù);第三確定子模塊,用于若 二叉樹(shù)存在不具有兩個(gè)子樹(shù)的第二節(jié)點(diǎn),則判斷出二叉樹(shù)的樹(shù)節(jié)點(diǎn)不符合預(yù)設(shè)條件;第四 確定子模塊,用于若二叉樹(shù)的第二節(jié)點(diǎn)均具有兩個(gè)子樹(shù),則判斷出二叉樹(shù)的樹(shù)節(jié)點(diǎn)符合預(yù) 設(shè)條件。
[0018] 進(jìn)一步地,第一判斷子模塊包括:讀取模塊,用于讀取各個(gè)第一節(jié)點(diǎn)的數(shù)據(jù);類型 判斷模塊,用于判斷各個(gè)第一節(jié)點(diǎn)的數(shù)據(jù)的類型是否為變量或常量;第一類型確定模塊,用 于若各個(gè)第一節(jié)點(diǎn)的數(shù)據(jù)的類型均為變量或常量,則判斷出二叉樹(shù)的各個(gè)第一節(jié)點(diǎn)均為操 作數(shù);第二類型確定模塊,用于若存在數(shù)據(jù)的類型不為變量或常量的第一節(jié)點(diǎn),則判斷出二 叉樹(shù)中存在不為操作數(shù)的第一節(jié)點(diǎn)。
[0019] 進(jìn)一步地,數(shù)據(jù)處理裝置還包括:獲取模塊,用于獲取預(yù)設(shè)的操作符的優(yōu)先級(jí);保 存模塊,用于保存操作符與操作符的優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系為預(yù)設(shè)數(shù)據(jù)表。
[0020] 采用本發(fā)明,通過(guò)轉(zhuǎn)換模塊將接收到的用戶輸入的待校驗(yàn)公式根據(jù)操作符的優(yōu)先 級(jí)轉(zhuǎn)換為對(duì)應(yīng)的后綴表達(dá)式,使用構(gòu)建模塊構(gòu)建后綴表達(dá)式對(duì)應(yīng)的二叉樹(shù),并通過(guò)判斷模 塊根據(jù)二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件來(lái)判斷用戶輸入的待校驗(yàn)公式是否正確。通過(guò) 上述實(shí)施例,可以將用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為二叉樹(shù),二叉樹(shù)是一種效率很高的數(shù)據(jù) 結(jié)構(gòu),系統(tǒng)能夠快速判斷待校驗(yàn)公式的二叉樹(shù)是否滿足預(yù)設(shè)條件,以此來(lái)判斷公式的正確 性,而不需要在輸入公式之后,通過(guò)公式的運(yùn)算結(jié)果來(lái)判斷公式的正確性,同樣也不需要通 過(guò)服務(wù)器端軟件編譯器對(duì)公式的編譯運(yùn)行來(lái)判斷公式的正確性;在該實(shí)施例中在接收到用 戶輸入的待校驗(yàn)公式時(shí)即能直接進(jìn)行語(yǔ)法校驗(yàn),實(shí)時(shí)得到該公式正確性的反饋,而不需要 等待運(yùn)算結(jié)果或者軟件編譯運(yùn)行的判定結(jié)果,使得用戶可以即時(shí)的知道所輸入公式的正確 性。采用本發(fā)明,解決了現(xiàn)有技術(shù)中不能對(duì)用戶輸入公式實(shí)時(shí)給出公式正確性的問(wèn)題,通過(guò) 對(duì)用戶輸入公式直接進(jìn)行語(yǔ)法校驗(yàn)來(lái)判斷公式的正確性,提高了反饋的及時(shí)性,用戶可以 更快速的得到提示。
【專利附圖】
【附圖說(shuō)明】
[0021] 此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā) 明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0022] 圖1是根據(jù)本發(fā)明實(shí)施例的用于公式的數(shù)據(jù)處理方法的流程圖;
[0023] 圖2是根據(jù)本發(fā)明實(shí)施例的用于公式的數(shù)據(jù)處理方法的詳細(xì)工作流程的示意圖;
[0024] 圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的待校驗(yàn)公式轉(zhuǎn)換得到的二叉樹(shù)的示意圖;
[0025] 圖4是根據(jù)本發(fā)明實(shí)施例的另一種可選的待校驗(yàn)公式轉(zhuǎn)換得到的對(duì)應(yīng)的二叉樹(shù) 的第一不意圖;
[0026] 圖5是根據(jù)圖4所示實(shí)施例的待校驗(yàn)公式對(duì)應(yīng)的二叉樹(shù)的第二示意圖;
[0027] 圖6是根據(jù)本發(fā)明實(shí)施例的第三種可選的待校驗(yàn)公式對(duì)應(yīng)的二叉樹(shù)的示意圖;以 及
[0028] 圖7是根據(jù)本發(fā)明實(shí)施例的用于公式的數(shù)據(jù)處理裝置的示意圖。
【具體實(shí)施方式】
[0029] 為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的 附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是 本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù) 人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范 圍。
[0030] 需要說(shuō)明的是,本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)"第一"、"第 二"等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用 的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或 描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)"包括"和"具有"以及他們的任何變形,意圖在于 覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限 于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn) 品或設(shè)備固有的其它步驟或單元。
[0031] 圖1是根據(jù)本發(fā)明實(shí)施例的用于公式的數(shù)據(jù)處理方法的流程圖,如圖1所示該方 法包括如下步驟:
[0032] 步驟S102,將接收到的用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為后綴表達(dá)式達(dá)式。
[0033] 其中,后綴表達(dá)式又稱為逆波蘭式,是一種公式表達(dá)方式,具體地,后綴表達(dá)式不 包含括號(hào),且操作符放在對(duì)應(yīng)操作對(duì)象的后面,在后綴表達(dá)式中包含操作順序,在使用后綴 表達(dá)式進(jìn)行計(jì)算時(shí),所有的子操作按照操作符出現(xiàn)的順序從左向右進(jìn)行。
[0034] 步驟S104,構(gòu)建后綴表達(dá)式的二叉樹(shù)。
[0035] 其中,二叉樹(shù)是一種非線性、高效率的數(shù)據(jù)結(jié)構(gòu),每個(gè)節(jié)點(diǎn)最多包含兩個(gè)子樹(shù),該 節(jié)點(diǎn)又稱為父節(jié)點(diǎn),且其包含的兩個(gè)子樹(shù)分別是左子樹(shù)和右子樹(shù)。
[0036] 步驟S106,判斷后綴表達(dá)式的二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件。
[0037] 其中,若二叉樹(shù)的樹(shù)節(jié)點(diǎn)符合預(yù)設(shè)條件,則執(zhí)行步驟S108 ;若二叉樹(shù)的樹(shù)節(jié)點(diǎn)不 符合預(yù)設(shè)條件,則執(zhí)行步驟S110。
[0038] 步驟S108,判斷出待校驗(yàn)公式正確。
[0039] 步驟Sl10,判斷出待校驗(yàn)公式不正確。
[0040] 采用本發(fā)明實(shí)施例,將接收到的用戶輸入的待校驗(yàn)公式根據(jù)操作符的優(yōu)先級(jí)轉(zhuǎn)換 為對(duì)應(yīng)的后綴表達(dá)式,再構(gòu)建后綴表達(dá)式對(duì)應(yīng)的二叉樹(shù),根據(jù)二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù) 設(shè)條件來(lái)判斷用戶輸入的待校驗(yàn)公式是否正確。通過(guò)上述實(shí)施例,可以將用戶輸入的待校 驗(yàn)公式轉(zhuǎn)換為二叉樹(shù),二叉樹(shù)是一種效率很高的數(shù)據(jù)結(jié)構(gòu),系統(tǒng)能夠快速判斷待校驗(yàn)公式 的二叉樹(shù)是否滿足預(yù)設(shè)條件,以此來(lái)判斷公式的正確性,而不需要在輸入公式之后,通過(guò)公 式的運(yùn)算結(jié)果來(lái)判斷公式的正確性,同樣也不需要通過(guò)服務(wù)器端軟件編譯器對(duì)公式的編譯 運(yùn)行來(lái)判斷公式的正確性;在該實(shí)施例中在接收到用戶輸入的待校驗(yàn)公式時(shí)即能直接進(jìn)行 語(yǔ)法校驗(yàn),實(shí)時(shí)得到該公式正確性的反饋,而不需要等待運(yùn)算結(jié)果或者軟件編譯運(yùn)行的判 定結(jié)果,使得用戶可以即時(shí)的知道所輸入公式的正確性。采用本發(fā)明,解決了現(xiàn)有技術(shù)中不 能對(duì)用戶輸入公式實(shí)時(shí)給出公式正確性的問(wèn)題,通過(guò)對(duì)用戶輸入公式直接進(jìn)行語(yǔ)法校驗(yàn)來(lái) 判斷公式的正確性,提高了反饋的及時(shí)性,用戶可以更快速的得到提示。
[0041] 參照?qǐng)D2,圖2是根據(jù)本發(fā)明實(shí)施例的用于公式的數(shù)據(jù)處理方法的詳細(xì)工作流程 的示意圖,根據(jù)本發(fā)明的上述實(shí)施例,步驟S102,將接收到的用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為 后綴表達(dá)式可以包括:
[0042] 步驟S202,接收用戶輸入的待校驗(yàn)公式。
[0043] 步驟S204,獲取待校驗(yàn)公式的各個(gè)操作符的優(yōu)先級(jí)。
[0044] 步驟S206,按照各個(gè)操作符的優(yōu)先級(jí)將待校驗(yàn)公式將待校驗(yàn)公式轉(zhuǎn)換為對(duì)應(yīng)的后 綴表達(dá)式。
[0045] 步驟S210,構(gòu)建后綴表達(dá)式的二叉樹(shù)。
[0046] 該步驟的實(shí)現(xiàn)方法與圖1中的步驟S104的實(shí)現(xiàn)方法一致,在此不再贅述。
[0047] 具體地,用戶在系統(tǒng)中輸入待校驗(yàn)公式,系統(tǒng)接收到用戶輸入的待校驗(yàn)公式之后, 從待校驗(yàn)公式中提取該公式的所有操作符,并從操作符數(shù)據(jù)表中(如表1)讀取各個(gè)操作符 的優(yōu)先級(jí),然后按照操作符的優(yōu)先級(jí)將該待校驗(yàn)公式轉(zhuǎn)換為后綴表達(dá)式,然后構(gòu)建后綴表 達(dá)式的二叉樹(shù),并根據(jù)后綴表達(dá)式的二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件的判斷結(jié)果來(lái)確定 該公式是否正確。其中,表1為操作符數(shù)據(jù)表的一種示例,表1中示出了操作符與優(yōu)先級(jí)的 對(duì)應(yīng)關(guān)系,表1中操作符項(xiàng)對(duì)應(yīng)的優(yōu)先級(jí)項(xiàng)數(shù)值越大的優(yōu)先級(jí)表示優(yōu)先級(jí)越高。
[0048] 表 1
[0049]
【權(quán)利要求】
1. 一種用于公式的數(shù)據(jù)處理方法,其特征在于,包括: 將接收到的用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為后綴表達(dá)式; 構(gòu)建所述后綴表達(dá)式的二叉樹(shù); 判斷所述后綴表達(dá)式的所述二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件; 若所述二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)符合所述預(yù)設(shè)條件,則判斷出所述待校驗(yàn)公式正確; 若所述二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)不符合所述預(yù)設(shè)條件,則判斷出所述待校驗(yàn)公式不正確。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其特征在于,將接收到的用戶輸入的待校驗(yàn) 公式轉(zhuǎn)換為后綴表達(dá)式包括: 接收所述用戶輸入的所述待校驗(yàn)公式; 獲取所述待校驗(yàn)公式的各個(gè)操作符的優(yōu)先級(jí); 按照各個(gè)所述操作符的優(yōu)先級(jí)將所述待校驗(yàn)公式轉(zhuǎn)換為對(duì)應(yīng)的所述后綴表達(dá)式。
3. 根據(jù)權(quán)利要求2的數(shù)據(jù)處理方法,其特征在于,獲取所述待校驗(yàn)公式的各個(gè)操作符 的優(yōu)先級(jí)包括: 判斷各個(gè)所述操作符是否均存在于預(yù)設(shè)數(shù)據(jù)表; 若所述操作符不均存在于所述預(yù)設(shè)數(shù)據(jù)表,則結(jié)束判斷,然后提示所述用戶重新輸入 所述待校驗(yàn)公式; 若所述操作符均存在于所述預(yù)設(shè)數(shù)據(jù)表,則從所述預(yù)設(shè)數(shù)據(jù)表中讀取所述操作符的優(yōu) 先級(jí)。
4. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其特征在于,判斷所述后綴表達(dá)式的所述二 叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件包括: 判斷所述二叉樹(shù)的各個(gè)第一節(jié)點(diǎn)是否均為操作數(shù),其中,所述第一節(jié)點(diǎn)為所述二叉樹(shù) 的葉子節(jié)點(diǎn); 若所述二叉樹(shù)存在不為所述操作數(shù)的所述第一節(jié)點(diǎn),則判斷出所述二叉樹(shù)的所述樹(shù)節(jié) 點(diǎn)不符合所述預(yù)設(shè)條件; 若所述二叉樹(shù)的所述第一節(jié)點(diǎn)均為所述操作數(shù),則判斷所述二叉樹(shù)的第二節(jié)點(diǎn)是否均 為操作符,其中,所述第二節(jié)點(diǎn)為所述二叉樹(shù)上除所述葉子節(jié)點(diǎn)之外的節(jié)點(diǎn); 若所述二叉樹(shù)存在不為所述操作符的所述第二節(jié)點(diǎn),則判斷出所述二叉樹(shù)的所述樹(shù)節(jié) 點(diǎn)不符合所述預(yù)設(shè)條件; 若所述二叉樹(shù)的所述第二節(jié)點(diǎn)均為所述操作符,則判斷所述二叉樹(shù)的所述第二節(jié)點(diǎn)是 否均具有兩個(gè)子樹(shù); 若所述二叉樹(shù)存在不具有所述兩個(gè)子樹(shù)的所述第二節(jié)點(diǎn),則判斷出所述二叉樹(shù)的所述 樹(shù)節(jié)點(diǎn)不符合所述預(yù)設(shè)條件; 若所述二叉樹(shù)的所述第二節(jié)點(diǎn)均具有兩個(gè)子樹(shù),則判斷出所述二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)符 合所述預(yù)設(shè)條件。
5. 根據(jù)權(quán)利要求4所述的數(shù)據(jù)處理方法,其特征在于,判斷所述二叉樹(shù)的各個(gè)第一節(jié) 點(diǎn)是否均為操作數(shù)包括: 讀取各個(gè)所述第一節(jié)點(diǎn)的數(shù)據(jù); 判斷各個(gè)所述第一節(jié)點(diǎn)的所述數(shù)據(jù)的類型是否為變量或常量; 若各個(gè)所述第一節(jié)點(diǎn)的數(shù)據(jù)的類型均為所述變量或常量,則判斷出所述二叉樹(shù)的各個(gè) 所述第一節(jié)點(diǎn)均為所述操作數(shù); 若存在數(shù)據(jù)的類型不為所述變量或常量的所述第一節(jié)點(diǎn),則判斷出所述二叉樹(shù)中存在 不為所述操作數(shù)的所述第一節(jié)點(diǎn)。
6. 根據(jù)權(quán)利要求2至5中任意一項(xiàng)所述的數(shù)據(jù)處理方法,其特征在于,在接收所述用戶 輸入的所述待校驗(yàn)公式之前,所述數(shù)據(jù)處理方法還包括: 獲取預(yù)設(shè)的所述操作符的優(yōu)先級(jí); 保存所述操作符與所述操作符的優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系為預(yù)設(shè)數(shù)據(jù)表。
7. -種用于公式的數(shù)據(jù)處理裝置,其特征在于,包括: 轉(zhuǎn)換模塊,用于將接收到的用戶輸入的待校驗(yàn)公式轉(zhuǎn)換為后綴表達(dá)式; 構(gòu)建模塊,用于構(gòu)建所述后綴表達(dá)式的二叉樹(shù); 判斷模塊,用于判斷所述后綴表達(dá)式的所述二叉樹(shù)的樹(shù)節(jié)點(diǎn)是否符合預(yù)設(shè)條件; 第一確定模塊,用于若所述二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)符合所述預(yù)設(shè)條件,則判斷出所述待 校驗(yàn)公式正確; 第二確定模塊,用于若所述二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)不符合所述預(yù)設(shè)條件,則判斷出所述 待校驗(yàn)公式不正確。
8. 根據(jù)權(quán)利要求7所述的數(shù)據(jù)處理裝置,其特征在于,所述轉(zhuǎn)換模塊包括: 接收模塊,用于接收所述用戶輸入的所述待校驗(yàn)公式; 獲取子模塊,用于獲取所述待校驗(yàn)公式的各個(gè)操作符的優(yōu)先級(jí); 轉(zhuǎn)換子模塊,用于按照各個(gè)所述操作符的優(yōu)先級(jí)將所述待校驗(yàn)公式轉(zhuǎn)換為對(duì)應(yīng)的所述 后綴表達(dá)式。
9. 根據(jù)權(quán)利要求8的數(shù)據(jù)處理裝置,其特征在于,所述獲取子模塊包括: 操作符判斷模塊,用于判斷各個(gè)所述操作符是否均存在于預(yù)設(shè)數(shù)據(jù)表; 第一操作符確定模塊,用于若所述操作符不均存在于所述預(yù)設(shè)數(shù)據(jù)表,則結(jié)束判斷,然 后提示所述用戶重新輸入所述待校驗(yàn)公式; 第二操作符確定模塊,用于若所述操作符均存在于所述預(yù)設(shè)數(shù)據(jù)表,則從所述預(yù)設(shè)數(shù) 據(jù)表中讀取所述操作符的優(yōu)先級(jí)。
10. 根據(jù)權(quán)利要求7所述的數(shù)據(jù)處理裝置,其特征在于,所述判斷模塊包括: 第一判斷子模塊,用于判斷所述二叉樹(shù)的各個(gè)第一節(jié)點(diǎn)是否均為操作數(shù),其中,所述第 一節(jié)點(diǎn)為所述二叉樹(shù)的葉子節(jié)點(diǎn); 第一確定子模塊,用于若所述二叉樹(shù)存在不為所述操作數(shù)的所述第一節(jié)點(diǎn),則判斷出 所述二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)不符合所述預(yù)設(shè)條件; 第二判斷子模塊,用于若所述二叉樹(shù)的所述第一節(jié)點(diǎn)均為所述操作數(shù),則判斷所述二 叉樹(shù)的第二節(jié)點(diǎn)是否均為操作符,其中,所述第二節(jié)點(diǎn)為所述二叉樹(shù)上除所述葉子節(jié)點(diǎn)之 外的節(jié)點(diǎn); 第二確定子模塊,用于若所述二叉樹(shù)存在不為所述操作符的所述第二節(jié)點(diǎn),則判斷出 所述二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)不符合所述預(yù)設(shè)條件; 第三判斷子模塊,用于若所述二叉樹(shù)的所述第二節(jié)點(diǎn)均為所述操作符,則判斷所述二 叉樹(shù)的所述第二節(jié)點(diǎn)是否均具有兩個(gè)子樹(shù); 第三確定子模塊,用于若所述二叉樹(shù)存在不具有所述兩個(gè)子樹(shù)的所述第二節(jié)點(diǎn),則判 斷出所述二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)不符合所述預(yù)設(shè)條件; 第四確定子模塊,用于若所述二叉樹(shù)的所述第二節(jié)點(diǎn)均具有兩個(gè)子樹(shù),則判斷出所述 二叉樹(shù)的所述樹(shù)節(jié)點(diǎn)符合所述預(yù)設(shè)條件。
11. 根據(jù)權(quán)利要求10的數(shù)據(jù)處理裝置,其特征在于,第一判斷子模塊包括: 讀取模塊,用于讀取各個(gè)所述第一節(jié)點(diǎn)的數(shù)據(jù); 類型判斷模塊,用于判斷各個(gè)所述第一節(jié)點(diǎn)的所述數(shù)據(jù)的類型是否為變量或常量; 第一類型確定模塊,用于若各個(gè)所述第一節(jié)點(diǎn)的數(shù)據(jù)的類型均為所述變量或常量,則 判斷出所述二叉樹(shù)的各個(gè)所述第一節(jié)點(diǎn)均為所述操作數(shù); 第二類型確定模塊,用于若存在數(shù)據(jù)的類型不為所述變量或常量的所述第一節(jié)點(diǎn),則 判斷出所述二叉樹(shù)中存在不為所述操作數(shù)的所述第一節(jié)點(diǎn)。
12. 根據(jù)權(quán)利要求8至11中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其特征在于,所述數(shù)據(jù)處理 裝置還包括: 獲取模塊,用于獲取預(yù)設(shè)的所述操作符的優(yōu)先級(jí); 保存模塊,用于保存所述操作符與所述操作符的優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系為預(yù)設(shè)數(shù)據(jù)表。
【文檔編號(hào)】G06F17/10GK104484311SQ201410779244
【公開(kāi)日】2015年4月1日 申請(qǐng)日期:2014年12月15日 優(yōu)先權(quán)日:2014年12月15日
【發(fā)明者】池雷 申請(qǐng)人:北京國(guó)雙科技有限公司