2012-12-18 48 views
1

我正在做類似於公式驗證器的事情,並且我正在使用ParseKit框架來完成此操作。我的方法是創建正確的語法,並在樣本字符串上調用didMatchFormula回調方法時我假設公式已被找到,因此它是有效的。ParseKit貪婪匹配模式

但是有一個難點 - 即從樣本字符串中檢測到公式,即使它也包含公式部分後面的其他字符。我需要類似於貪婪模式來進行匹配 - 整個字符串將與公式語法匹配,以便只有在字符串包含公式並且沒有其他字符時纔會調用didMatchFormula。

你可以給我一些提示如何用PaseKit或以其他方式完成這一點。 我不能使用正則表達式,因爲我的公式會使用遞歸,而正則表達式不是處理這個問題的好工具。

回答

0

開發人員ParseKit這裏。

或許用ParseKit(或任何解析工具包)做到這一點的最簡單和最優雅的方法是設計公式語言在每個語句後都有一個終止符字符。這與大多數C語言編程語言中的終止語句的概念相同。

這裏是它使用.作爲語句終止一個例子玩具式的語言:

@start = lang; 
lang = statment+; 
statment = Word+ terminator; 
terminator = '.'; 

注意如何我設計的語言,使你的「貪心」的要求是語言的固有特徵。考慮一下 - 如果輸入字符串以任何垃圾內容結尾,而該垃圾內容不是以.結尾的有效語句,則我的lang生產將找不到匹配項,分析將失敗。

使用這種類型的設計,在您使用的解析工具包中不需要任何「貪婪」功能。相反,您的語言設計自然會滿足您的要求。

+0

謝謝託德,這是我需要的 – tetsujin