1

私の yacc ファイルには、次のようなものがあります。

var_declaration : type_specifier ID ';'
                | type_specifier ID '[' NUM ']' ';' ;

type_specifier : INT | VOID ;

ID、NUM、INT、および VOID は flex から返されるトークンであるため、yacc はそれらを問​​題なく認識します。問題は、上記に「[」や「;」のようなものがあることです。これらが flex によって認識された場合、yacc には何を返す必要がありますか?

4

1 に答える 1

4

文字自体を返すことができます。トークンは ASCII 文字と競合しないことが保証されています。

http://www.gnu.org/software/bison/manual/html_node/Token-Decl.html

Bison は、コード同士や ASCII 文字と競合しないコードを自動的に選択します。

したがって、フレックスファイルでは、

[\[\];]     { return yytext[0]; }

大丈夫です。

于 2009-11-17T12:28:11.463 に答える