0

私は、BNFC を使用したロジック プログラミング言語の実装に取り​​組んでいます。私が抱えている問題は、入力規則に関連しています。A.Ranta による「Implementing Programming Languages」の本では、型は次のように LBNF 構文に含まれています。

Tbool. Type ::= "bool" ;
Tdouble. Type ::= "double" ;
Tstring. Type ::= "string";

C のような文法では、型を追加することが重要であることを理解しています。型は宣言に組み込まれているため、フロントエンドで解析する必要があるためです。さらに本では、型チェッカーは Haskell または Java で書かれています。ただし、ロジック PL では、型はそれほど明示的ではなく、個別に宣言されます。型の構文例は次のようにエンコードされます。

tid: name_type
ty: type
varTy: tid -> ty
arrTy: ty x ty -> ty

問題は、型の構文がコードのどこにあるのかということです。BNFC に型を追加しようとするたびに、あまり意味がなく、テストされた入力が適切に解析されません。この本には C 文法の良い例がありますが、BNFC によって作成されたフロントエンドと型チェッカーがどのように接続されているか、情報がどのように相互に渡されるかなどの全体像は示されていません。

4

1 に答える 1