1

2 つの言語 L1 と L2 の解析と式の評価を実装しています。重要なことは、L1 は別の言語として、または L2 の一部として使用でき、L2 には L1 にはないいくつかのキーワードのみが含まれていることです。

私はすでにLexing -> Parsing -> AST production -> L1 の AST 処理プロセスを実行しており、この F# にはFsLexFsYaccユーティリティを使用しています。

別の言語の L2 を解析する際に、既に開発された解析プロセス (トークン、L1 パーサーで定義されたAST 生成)を使用することは可能ですか?

AST : L1 の AST は L2 の AST の一部として使用され、同じ AST 処理プロセスで使用されます。

FsLex Lexer : 可能性は両方の言語に共通であり、L1 lexer に L2 のいくつかの欠落キーワードを含めるだけで済みます。しかし、L1 と L2 に別々のレクサーを用意し、L2 レクサーから L1 を参照することができれば、すばらしいでしょう。

FsYacc パーサー: すべての L1 パーサー コードを L2 に「copy-C」したくありません。 L1 パーサーで定義された L2、トークン、および AST データ生成で参照する方法はありますか?

前もって感謝します

4

1 に答える 1

2

これは、文法構成の難しさについて言及している興味深い記事です。簡単に言うと、yacc のようなパーサー ジェネレーターを使用してやりたいことができないということです。これは、マクロベースのシステムを使用してコードを再利用できないという意味ではありませんが、ハックのままです。

于 2011-06-09T12:11:37.360 に答える