我需要从中构建解析try / analyzer:
x (x | "x+y")* x+ y
现在我有语法:
S -> x A x B y
A -> x A
A -> x+y A
A -> epsilon
B -> x B
B -> epsilon
代码如此:
S() {
if (token == 'x') {
A();
if (token == 'x') {
B();
if (token == 'y') {
// success
} else {
// syntax err
}
} else {
// syntax err
}
} else {
// syntax err
}
}
A() {
if (token == 'x') {
if (token == '+') {
if (token == 'y') {
A();
} else {
// syntax err
}
} else {
A();
}
} else {
// epsilon
}
}
B() {
if (token == 'x') {
B();
} else {
// epsilon
}
}
问题是来自主B()
函数的S()
永远不会被调用因为A()
周期,x
函数获取所有(x | "x+y")*
令牌。例如:
xxxxx+yx+yx+yxxxxxy
我怎样才能解决问题并解析它?
我做错了什么?
P.S。抱歉英语,tnx注意
答案 0 :(得分:0)
我想解决方案就是这个语法:
try {
System.out.println("given:");
Connection con = DriverManager.getConnection(Main.host, Main.uName, Main.uPass);
Statement stmt = con.createStatement();
String u = "SELECT `like_user_id`, COUNT(`like_user_id`) as count FROM `xf_liked_content`";
ResultSet rs = stmt.executeQuery(u);
while (rs.next()) {
String count = rs.getString("count");
String user_id = rs.getString("like_user_id");
System.out.println(user_id + "|" + count);
}
}
catch (SQLException err) {
System.out.println(err.getMessage());
}
所以,问题就消失了