-1

クライアントとサーバーの間でメッセージの要求応答シーケンスを作成しようとしていました。メッセージを解析するために、flex と bison の文法を使用していました。異なる文法でのルールの再利用について質問があります。たとえば、リクエストを処理するための文法がある場合

req_message:
    request_message
    |response_message
    |error
    ; 

リクエストメッセージの場所

request_message:
    |request_header_list request_hdr

request_hdr は

request_hdr:
    accept
    |accept_language
    |bandwidth
    |user_agent
    |session
    |cseq
    |cache_control
    ..
    ;

同様に、応答のために私は文法を持っています

response_header:
    cseq
    |session
    |range
    |public
    |server
    |content_type
    ..
    ;

を解析するためcseqに、ルールを 1 つだけ定義しました。リクエストの解析中、そのルールは正常に機能しています。しかし、応答を解析している間、ルールは表示されません。同じルールを異なる文法に使用することはできません のようなものはありますか? request に対しては機能し、 response に対しては機能しないのはなぜですか? cseq tokenlex 側では、語彙の解析に問題はありませんでした。yaccに戻ることができます。

4

1 に答える 1

0

yaccの仕様をもう少し確認せずに、問題を診断するのは少し難しいです。特に、のプロダクション(文法規則)を確認すると便利ですresponse_message。ただし、その情報がなくても、名前に一貫性がないことに気付きました。あなたは持っていますrequest_hdrresponse_header。それは意図的なものですか?

于 2013-01-15T14:45:59.493 に答える