[英]syntax matching of a string in 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.
if string1 : a > 0; string2 : c == 0, syntax_matcher(string1,string2) = false.
任何想法,如何有效地做到這一點?
也許你可以做的是寫一個Stack
和第一條語句移動由左到右,推動價值觀像VAR
再ASSIGNMENT
,再VAR
,然后OPERATOR
再VAR
。
一旦有了它,就可以從第二個表達式開始,然后從右移到左 ,每次將您擁有的內容與從堆棧中彈出的內容進行比較。
您正在閱讀的內容與彈出的內容之間的任何不匹配都會產生false
。
使用LR分析器(Wikipedia)來解析表達式,因為它們可能是上下文無關的語言 。 對於Java,您可能想要使用例如CUP開源解析器生成器 。
然后使用您喜歡的樹比較方法比較結果語法樹(Wikipedia) 。
有關常規語言和上下文無關語言的區別,請參見Chomsky層次結構(Wikipedia) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.