0
s   : cmd
    | cmd SOMETHING 

cmd :WORD

WORD および SOMETHING は非ヌル端末です

これは LR1 文法なので、bison は問題なく解析できるはずです。

ただし、実行時に予期しない問題に直面しました。プログラムは入力を2回要求するため、たとえば「qwerty」と入力すると、2回目の入力を要求され、デバッグしようとすると次のようになります。

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)
4

1 に答える 1

2

s が SOMETHING を読み込もうとして、成功 (2 番目のルール) または失敗 (1 番目のルール) するまで、s がどのルールを使用するかをどのように知るのでしょうか? つまり、2 番目の入力を要求する必要があります。

于 2012-01-11T16:53:13.113 に答える