在 Java 中,我想编写一个语法匹配器。
对于 string1:a = a+b,和 string2:c = c+d,syntax_matcher(string1,string2) = true。
但是,if string1 : a > 0; string2 : c == 0, syntax_matcher(string1,string2) = false。
任何想法,如何有效地做到这一点?
最佳答案
也许你可以做的是编写一个 Stack
并且对于第一个语句从左到右移动,将 VAR
之类的值推送到 ASSIGNMENT
,然后是 VAR
,然后是 OPERATOR
,然后是 VAR
。
一旦你有了它,你就可以开始第二个表达式并从右到左移动,每次比较你有的和你从堆栈中弹出的。
您正在阅读的内容与弹出的内容之间的任何不匹配都会产生 false
。
关于java - java中字符串的语法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14891498/