0

次の BNFC コードがあります。

GFDefC. GoalForm ::= Constraint ;
GFDefT. GoalForm ::= True ;
GFDefA. GoalForm ::= GoalForm "," GoalForm ;
GFDefO. GoalForm ::= GoalForm ";" GoalForm ;

ConFr. Constraint ::= Var "#" Term ;

TVar. Term ::= UnVar;
TFun. Term ::= Fun ;

FDef. Fun  ::= FunId "(" [Arg] ")" ;
ADecl. Arg ::= Term ;
separator Arg "," ;

...

ただし、以下は解析されません

fun(X)

以下のものを解析している間

x # fun(Y)

要約すると、関数を制約の一部として解析しますが、個別には解析しません。両方を解析する必要があります。

誰かが理由を指摘できますか?

4

1 に答える 1

1

entrypoints適切に設定する必要があります。

x # fun(Y)正常に解析しているので、に設定entrypointsConstraint、生成されたpConstraint関数を使用して式を解析していると思います。Constraint次に、ルールをに変更できます

ConNoVar. Constraint ::= Term ;
ConFr.    Constraint ::= Var "#" Term ;

または、関数用語を解析するために and を追加Termしてentrypoints呼び出すこともできます。pTerm

于 2020-07-02T02:49:03.783 に答える