1

パーサー用に次のルールをコンパイルするときに問題が発生しています。

%%

式:

  | expr ASN expr { Asn ($1, $2) }

これは、私の AST で定義されているように、整数、代入 (等号)、および式を取る代入ルールです。

type expr = int の Asn * expr

もちろん、" expr ASN expr" を定義しているため、コンパイラは不平を言っています。最初の引数は式ではなく整数でなければなりません。ただし、これを指定する構文がわかりませんでした。

誰かが私を正しい方向に導くことができれば、本当に感謝しています.

ありがとう!

4

2 に答える 2

1

適切な回答を与えるのに十分な詳細を提供していません。整数とはどういう意味ですか? 整数リテラルを意味すると仮定します。

レキシカル定義に、整数リテラルを表す INT という名前のトークンがあると仮定すると、次のようなものが必要になる場合があります。

expr:
    | INT ASN expr { Asn ($1, $2) }
于 2013-06-17T20:15:59.973 に答える