C で式を解析するための YACC 文法があります。これらはそのフラグメントの一部です。
Expr: Expr COMMA Expr
| Assignment
Assignment: IDENTIFIER
| Assignment COMMA Assignment
Function Call: IDENTIFIER PARENOPEN Expr PARENOPEN
私が基本的にできるようにしたいのは、フォーム a(p,q,r) の関数呼び出しを解析し、渡された引数の数と型が関数定義で指定されたものと一致するかどうかを確認してExpr
、識別子自体のレベル。
最終的に起こるのは、の代わりに にp,q,r
還元されることです。を使用してのみ実行できるいくつかのセマンティック ルールを実行する必要があるため、これは問題です。また、特定の削減にとって重要であるため、ルールを削除することはできません。そのような場合に何をする必要があるかを YACC にハードコードする方法はありますか?Assignment
Expr COMMA Expr
Expr COMMA Expr
Assignment COMMA Assignment