accept()方法在解析器的代码中是什么样的? 这是语法:
E --> T + E | T
T --> F * T | F
F --> (E) | a
我大部分时间都了解伪代码,但实际上需要编写自己的解析器才能更好地理解它。 这是我的教授给我的伪代码:
main(){
E
}
E(){
T
if (next == +){
accept +
E
}
}
T(){
F
if (next == *){
accept *
T
}
}
F(){
if (next == "("){
accept "("
E
accept ")"
else
accept a
}
因此,除了“接受”应该做什么以外,我了解所有内容。我认为它应该接受令牌,然后递增到下一个令牌,但是我可能错了?有人可以给我看看伪代码吗?
答案 0 :(得分:0)
我认为它应该接受令牌,然后增加到下一个令牌
是的,accept
的伪代码可能看起来像这样:
accept(tokenKind) {
if (next.kind == tokenKind) {
next = tokenizer.getNextToken();
} else {
error("Unexpected token $next; expected $tokenKind");
}
}