[英]what's the matter with this grammar
s : cmd
| cmd SOMETHING
cmd :WORD
WORD和SOMETHING是非空終端
這是一個LR1語法,所以野牛應該毫無問題地解析它。
但是我在運行時面臨一個意想不到的問題:程序提示輸入兩次,所以例如當我輸入“qwerty”時它提示第二次輸入,當我嘗試調試它時我得到這個:
Starting parse
Entering state 0
Reading a token: qwerty
Next token is token WORD
Shifting token WORD
Entering state 1
Reducing stack by rule 3 (line 20):
$1 = token WORD ()
-> $$ = nterm cmd ()
Stack now 0
Entering state 3
Reading a token:
(asks for input a second time)
在嘗試讀取SOMETHING並且成功(第二條規則)或失敗(第一條規則)之前,它將如何知道s要使用哪條規則? 這意味着它要求第二個輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.