aiscript icon indicating copy to clipboard operation
aiscript copied to clipboard

ライブラリ構成についての提案

Open marihachi opened this issue 4 years ago • 17 comments

概要

CompilerとInterpreterの2種類のクラスをライブラリとして公開する。

  • Compiler : AiScriptコードから別のコードを生成する (WebAssemblyなど個別に作成)
  • Interpreter : AiScriptコードを実行する

CompilerとInterpreterの内部では、それぞれ構文解析と意味解析などを行う。 → 内容が同じなのでこの部分をクラスとして切り出して、それをCompilerやInterpreterから呼び出す

構文解析と意味解析をどのように切り出す?

構文解析と意味解析を1つにして切り出す

クラス名の案:

  • Backend
  • Core
  • Parser

構文解析と意味解析を別々に切り出す(現状)

名前も現状のまま → Parser、Analyzer

その他

ASTの解析状況で型を分けたりするなら、統合してしまうほうが良い?

marihachi avatar Jul 27 '21 12:07 marihachi

一つにしたほうが良い気がしてる ご意見よろしくおねがいします。

marihachi avatar Jul 27 '21 12:07 marihachi

おそらくMisskey含めほとんどのAiScriptホスト実装では、構文解析だけしたいとか、意味解析だけしたいとかいったユースケースはなく、単に「ユーザーが用意したスクリプトを実行したい」という目的しかないと思うから、一つにまとめた方がユーザーフレンドリーだと思う

syuilo avatar Jul 27 '21 12:07 syuilo

だから「構文解析と意味解析を1つにして切り出す」が良さそうだけど、良い感じの名前が浮かばないな

syuilo avatar Jul 27 '21 13:07 syuilo

「意味解析も構文解析(parse)内で行われる処理のひとつ」という捉え方でいけば意味解析も含めて parser で良さそうだけど

syuilo avatar Jul 27 '21 13:07 syuilo

構文解析ペーペーなので的外れなこと言ってたらユルシテ

syuilo avatar Jul 27 '21 13:07 syuilo

パーサーで良いかも

marihachi avatar Jul 27 '21 14:07 marihachi

Parserクラスに構文解析と意味解析を統合してみた

marihachi avatar Aug 14 '21 01:08 marihachi

こんな感じ?

公開クラス

Compiler : AiScriptコードから別のコードを生成する (WebAssemblyはWebAssemblyCompilerなど個別に作成) Interpreter : AiScriptコードを実行する Serializer : スクリプトの短い表現のエンコーダ/デコーダ

内部向けクラス

Parser : ASTの生成・バリデーション・変形処理

marihachi avatar Aug 14 '21 02:08 marihachi

Parserも公開されない?

syuilo avatar Aug 14 '21 02:08 syuilo

あー

syuilo avatar Aug 14 '21 02:08 syuilo

してもいいけど、直接使われることはなさそう

marihachi avatar Aug 14 '21 02:08 marihachi

Interpeterから呼び出す感じかな

syuilo avatar Aug 14 '21 02:08 syuilo

YOSASOU

syuilo avatar Aug 14 '21 02:08 syuilo

シリアライザ関係も検討がいるかも

marihachi avatar Aug 14 '21 02:08 marihachi

Serializerはこうか: スクリプト文字列 → Parse → serialize

コンストラクタからスクリプトまたはASTを受け取れるようにすると良さそう ASTの使い回しができる

んー微妙な感じ

marihachi avatar Aug 14 '21 02:08 marihachi

Serializerも多分コンパイラの一種なんだよな スクリプトコード → bytecode bytecode → スクリプトコード

marihachi avatar Aug 14 '21 02:08 marihachi

雰囲気見えてきた

marihachi avatar Aug 14 '21 02:08 marihachi

ParserはPlaygroundで使っていたので非公開にするのやめるか 別に公開してて困ることもなさそうだし...

marihachi avatar Sep 03 '22 08:09 marihachi