PEG.jsで使用する関数の外部化
Closed this issue · 2 comments
sounisi5011 commented
概要
dsl.pegjs
ファイルで使用する関数を外部ファイルに移動し、パーサファイルからrequire()
で読み込みを行う方法の提案。
詳細
PEG.jsのオプション--dependency
を使用することで、パーサファイルのトップレベルにrequire()
文を挿入することが可能になる。
pegjs -o src/parser/dsl.pegjs-x.js --dependency xutil --dependency 'lib1:./pegjs-util.js' src/parser/dsl.pegjs
var xutil = require("xutil"), lib1 = require("./pegjs-util.js");
これを利用して、position()
関数など、テストが必要なユーティリティ関数を外部ファイル化し、使用できるようにする。
注意点
挿入されるのはcommonjsの構文になるため、src
ディレクトリ以下に.js
のファイルを配置することになる。このファイルをdist
ディレクトリにコピーする方法を考える必要や、linterの設定変更も必要になるかもしれない。
sounisi5011 commented
CLIのパラメータとして設定を指定するのは長すぎるため、本家のようにpegjs.config.js
のような設定ファイルを作成し、--extra-options-file
オプションで指定するやり方が有効かもしれない。ただし、このオプションがv0.10.0のPEG.jsで想定どおりに動くかどうかは不明。
sounisi5011 commented
#23 で完了していたので、閉じた。