2013-02-15 114 views
1

在Java中,我想寫一個語法匹配器。java中字符串的語法匹配

對於string1: a = a+b, and string2: c = c+d, syntax_matcher(string1,string2) = true.

然而,if string1 : a > 0; string2 : c == 0, syntax_matcher(string1,string2) = false.

任何想法,如何做到這一點有效?

+0

用你的匹配器方法創建一個自定義類,覆蓋你的需求的equals方法。 – AurA 2013-02-15 09:25:03

+0

@PremGenError Regex不會解決CFG問題。 – Shivam 2013-02-15 09:25:10

+0

@ShivamKalra CFG ?? – PermGenError 2013-02-15 09:25:49

回答

4

也許你能做些什麼是寫一個Stack和第一個語句移動由左到右,推動價值觀像VAR然後ASSIGNMENT,然後VAR,然後OPERATOR然後VAR

一旦你有了這個,你可以開始第二個表達式,並從從右到左,每次比較你有什麼和你從堆棧中彈出。

您正在閱讀的內容與您彈出的內容之間的任何不匹配情況將產生false

+0

可能會失敗的'a = a + b * c'和'd = b * c + d'。兩個相同的語法。 – Shivam 2013-02-15 09:30:41

+0

@ShivamKalra:如果它足夠通用(只是'VAR'和'OPERATOR'),它不應該失敗的情況下。 – npinti 2013-02-15 09:54:16