2016-11-29 7 views
0

マクロ呼び出しで構成されたユーザー入力ファイルを処理するプログラムを作成しました(ほとんどはデバッグしました)。私は今、ユーザー入力ファイルの完全なエラーチェックを追加したいと思います。このようなファイルで構文エラー&のセマンティックエラーチェックを実行するための一般的なベストプラクティスアプローチはありますか?私が考えることができる3つの基本的なアプローチは、1)ファイルを検証するための別々の前処理プログラムを書くこと、2)BNFを指定して市販のコンパイラコンパイラをプリプロセッサとして使うこと、3)エラーチェックを既存のプログラム3番目のアプローチは、セマンティックチェックを深めることができるため、より良いかもしれないようです。これらのアプローチや他のアプローチについては、賛否両論を知りたいです。&ユーザー入力ファイルのエラーチェック

+0

あなたの入力は、連続したLispフォームとして読み込むことができますか、パーサーが必要ですか? – coredump

+0

入力ファイルがリスフォーム(依存関係のために順序どおりに処理する必要のある個々のマクロ呼び出し)の一覧にすぎないので、トップレベル(通常のコンパイル以外)の独立した解析が便利かどうかはわかりません。しかし、いくつかのマクロ呼び出しで提供されるユーザー情報は、ユーザーの指定された問題を解決するためにベースラインプログラムによって使用される短い言語的なロジックの「プログラム」で構成されています。だから、いくつかの解析が含まれています。しかし、さまざまなロジックプログラム要素を処理するためのコードは、既に、lispでコード化された作業ベースラインの一部です。 – davypough

+0

これはStack Overflow形式で「答える」かどうか分かりませんが、ちょっとした例が必要になりますが、いくつか似たようなことをして、検証でマクロ拡張を散らばってしまいました。呼び出し元がそれほど「洗練されていない」ほど、入力の検証はより多く、冗長になります。通常は 'Assert'と' Check-Type'がたくさんあり、冗長で詳細なエラーメッセージがあります。 – BRFennPocock

答えて

0

ご協力ありがとうございました&あなたの経験のためにBRFennPocockをご利用ください。私はあなたのアドバイスを取って、既存のプログラムにエラーチェックを埋め込みますが、すべてをキャッチしようとするとエラー2となる傾向があります。事前ホワイトリストはありませんが、ユーザーの入力から1つ作成し、すべての用途の間で一貫性を確認できます(スペルミスなど)。大文字のアサートの&チェック・タイプは、ロード時に発生するように見えます。再度、感謝します。