6

VBScript パーサーを作成しようとしています。どうするのが一番いいのか考えてみました。調べて調べました。最も一般的な方法は、Gold Parser や ANTLR などを使用するようです。

実装したい機能は、VBScript で構文エラーを動的にチェックすることです。テキストが変更されるたびに VBS 全体をコンパイルしたくありません。どうすればそれを行うことができますか?Gold Parser を使用しようとしましたが、部分的な解析ツリーのようなもので、それを介して解析を行うインクリメンタルな方法はないと思います...そのようなシナリオで部分的な解析ツリーを実装する方法に関するアイデアはありますか?

GOLD パーサーを介して VBscript の解析を実装しました。ただし、これはまだ部分的なパーサーではなく、テキストが変更されるたびにスクリプト全体を解析します。そのようなものを構築する方法はありますか。

ありがとう

4

2 に答える 2

4

本当に増分構文解析を行いたい場合は、Tim Wagner による この論文を検討してください。

既存の解析ツリーを保持し、編集の時点で文字列フラグメントの混合物をシャッフルし、変更されていないソース テキストの部分を表す解析ツリーをシャッフルし、文字列を一連の解析ツリーに再統合するというのは素晴らしいスキームです。これは、インクリメンタル GLR パーサーを使用して行われます。

実装は簡単ではありません。私は GLR 部分だけを行い、インクリメンタル部分には手をつけませんでした。GLR の部分は苦労した甲斐がありました。

インクリメンタル解析に関する論文はたくさんあります。これは本当に良いものの一つです。

于 2011-03-05T06:19:05.610 に答える
2

独自の VBScript パーサーを作成するのではなく、まず既存の VBScript パーサーを探しますが、これは簡単な作業ではありません。

このページに BNF 形式の VBScript 文法があります: http://rosettacode.org/wiki/BNF_Grammar ANTLR (または他のパーサー ジェネレーター) 文法に変換できます。

ソースの一部だけを再解析するような手の込んだことを試みる前に、まず実際に機能するパーサーを作成することをお勧めします。

頑張ってください!

于 2011-03-04T12:36:59.807 に答える