簡體   English   中英

Java中字符串的語法匹配

[英]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和第一條語句移動由左到右,推動價值觀像VARASSIGNMENT ,再VAR ,然后OPERATORVAR

一旦有了它,就可以從第二個表達式開始,然后從右移到左 ,每次將您擁有的內容與從堆棧中彈出的內容進行比較。

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

使用LR分析器(Wikipedia)來解析表達式,因為它們可能是上下文無關的語言 對於Java,您可能想要使用例如CUP開源解析器生成器

然后使用您喜歡的樹比較方法比較結果語法樹(Wikipedia)

有關常規語言和上下文無關語言的區別,請參見Chomsky層次結構(Wikipedia)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM