有两个函数看不懂,求解释
int Sexp::next_token(char **begin, const char *end, const char n) {
char c = 0;
do {
c = **begin;
++(*begin);
} while (isspace(c));
if (*begin >= end) {
return -1;
}
if (c == n) {
return 1;
} else {
--(*begin);
return 0;
}
}
void Sexp::comment(char **begin, const char *end) {
const int r = next_token(begin, end, ';');
if (r == 1) {
while (*begin < end) {
const char c = **begin;
++(*begin);
if (c == '\r' || c == '\n') {
break;
}
}
return comment(begin, end);
}
}
这是个很简单的recursive descent LL(1)解析器。
下次提问前,请先自己多尝试一下,提供更多的信息。如果你能说明你是如何理解这两个函数的,为什么会看不懂的话,那么我的回答就会更加精确,更加有用一些。