プリプロセッサとして既存の言語の拡張機能を構築しています。 pegjsにソースコードを再生成させる方法があるかどうかを理解できませんでした。 基本的にはソースを解析したいのですが、ASTを変更してからソースを再生成したいと思います。 とにかくこれは可能ですか?
@mattkanwisher申し訳ありませんが、ソースを「再生成」することの意味がよくわかりません。
少し明確にしていただけませんか? ASTに基づいてコードを作成する場合は、そのロジックを自分で文法に直接記述するか、別の部分として記述する必要があります。
ええ、ASTに基づいてコードを生成するので、これを使用して前処理したい場合は、コンパイラを元のソースに戻す必要がありますか?
うーん、もしあなたが_元の_ソースが欲しいなら-あなたはそれを生成する必要がなくてもそれを持っているでしょう?
ただし、その修正バージョンが必要な場合は、コード生成ロジックを自分で作成する必要があります。
( @Mingun @futagoza私が間違っている場合は訂正してください)
@YemSalatは正しいです、PEG.jsは単なるパーサジェネレータです。
ご覧のとおり、PEG.jsは最初のステップにのみ関与するため、ソースを再生成する場合は、自分でコンパイラを構築する必要があります。または、言語用のコンパイラまたはジェネレータ(ツールチェーン)がすでに存在する場合は、ツールチェーンと互換性のあるASTを返すか、ツールチェーンとの互換性を高めるためにASTを変更する変換を追加します。
最後に、これは実際にはPEG.jsの問題ではありませんが、議論を続けることを歓迎します。
だから私はそれを理解しました。 将来このバグ投稿にたどり着く人のために。 「超小型コンパイラ」のソースコードを読んでください。 その後、pegjsを使用して数時間でプリプロセッサを構築することができました
最も参考になるコメント
@YemSalatは正しいです、PEG.jsは単なるパーサジェネレータです。
ご覧のとおり、PEG.jsは最初のステップにのみ関与するため、ソースを再生成する場合は、自分でコンパイラを構築する必要があります。または、言語用のコンパイラまたはジェネレータ(ツールチェーン)がすでに存在する場合は、ツールチェーンと互換性のあるASTを返すか、ツールチェーンとの互換性を高めるためにASTを変更する変換を追加します。
最後に、これは実際にはPEG.jsの問題ではありませんが、議論を続けることを歓迎します。