lex&yacc中SQL解释器的问题
在lex&yacc随书代码中,有一个SQL解释器,但是我无法解释一个普通的update语句,
UPDATE TAB SET F1=1 WHERE 1=1;
打开调试,输出如下
Starting parse
Entering state 0
Reading a token: Next token is token UPDATE ()
Shifting token UPDATE ()
Entering state 11
Reading a token: Next token is token NAME ()
Shifting token NAME ()
Entering state 44
Reading a token: Next token is token SET ()
Reducing stack by rule 214 (line 558)
$1 = token NAME ()
-> $$ = nterm table ()
Stack now 0 11
Entering state 45
Next token is token SET ()
Shifting token SET ()
Entering state 77
Reading a token: Next token is token NAME ()
Shifting token NAME ()
Entering state 115
Reducing stack by rule 233 (line 589):
$1 = token NAME ()
-> $$ = nterm column ()
Stack now 0 11 45 77
Entering state 118
Reading a token: Next token is token COMPARISON ()
1: syntax error at =
Error: popping nterm column ()
Stack now 0 11 45 77
Error: popping token SET ()
Stack now 0 11 45
Error: popping nterm table ()
Stack now 0 11
Error: popping token UPDATE ()
Stack now 0
Cleanup: discarding lookahead token COMPARISON ()
Stack now 0
SQL parse failed