From f8df0d689e9ac8149f22cc7542ff850b63208cdb Mon Sep 17 00:00:00 2001
From: FineArchs <133759614+FineArchs@users.noreply.github.com>
Date: Tue, 29 Oct 2024 19:07:49 +0900
Subject: [PATCH 1/5] Create host/get-started.md
---
docs/host/get-started.md | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 docs/host/get-started.md
diff --git a/docs/host/get-started.md b/docs/host/get-started.md
new file mode 100644
index 00000000..dcfdb0d3
--- /dev/null
+++ b/docs/host/get-started.md
@@ -0,0 +1,29 @@
+# ホスト向けAiScript実装ガイド
+[Read translated version (en)](/translations/en/docs/host/get-started.md)
+
+このページでは、自作のnode.jsパッケージ内でAiScriptを動作させたい人向けのガイドを行います。
+
+## 環境要件
+
+ | 名称 | バージョン(動作確認済みのもの) |
+ | Node.js | 20.x |
+
+
+## 手順
+### インストール
+```sh
+# NPMの例
+npm install --save @syuilo/aiscript
+```
+### 使用
+- AiScriptのコードの実行を行うには、少なくとも`Parser`と`Interpreter`をimportする必要があります。
+- 詳細は[host/api.md](./api.md)を参照してください。
+```js
+// esmの場合の例
+import { Parser, Interpreter } from '@syuilo/aiscript';
+
+const script = '<: "Hello, AiScript!"';
+const ast = Parser.parse(script);
+const interpreter = new Interpreter({}, { out: console.log });
+await interpreter.exec(ast);
+```
From cd8ad9e2135f30b2eeea61c128e30ab9577d818e Mon Sep 17 00:00:00 2001
From: FineArchs <133759614+FineArchs@users.noreply.github.com>
Date: Tue, 29 Oct 2024 20:12:01 +0900
Subject: [PATCH 2/5] Create host/api.md
---
docs/host/api.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+)
create mode 100644 docs/host/api.md
diff --git a/docs/host/api.md b/docs/host/api.md
new file mode 100644
index 00000000..956649e4
--- /dev/null
+++ b/docs/host/api.md
@@ -0,0 +1,65 @@
+# APIガイド
+[Read translated version (en)](/translations/en/docs/host/api.md)
+
+このページではAiScript実装用のJavascript/Typescript APIの概要を説明します。
+
+> [!IMPORTANT]
+> ESM形式のみ発行しています。CJS形式の取り扱いはありません。
+
+## 基本的な要素
+`import { } from '@syuilo/aiscript'`でimportすることができます。
+
+### Parser
+コードの構文解析を行い、ASTと呼ばれるオブジェクトに変換します。
+このASTをInterpreterに渡すことでAiScriptの実行を行うことができます。
+詳しくは→[host/parser.md](./parser.md)
+
+### Ast
+Parserによって生成される構文木です。
+詳しくは→[host/parser.md#AST](./parser.md#AST)
+
+### ParserPlugin, PluginType
+> [!NOTE]
+> 未整備の要素であり、ホスト側が利用するには機能が足りていないと考えられています。
+
+※Typescript用
+パース後にAstのバリデーションや変形を行う「プラグイン機能」のための型です。
+詳しくは→[host/parser.md#プラグイン](./parser.md#プラグイン)
+
+### Interpreter
+ASTを順次読み取り、実行します。
+詳しくは→[host/interpreter.md](./interpreter.md)
+
+### Scope
+> [!NOTE]
+> 未整備の要素であり、ホスト側が利用するには機能が足りていないと考えられています。
+
+AiScript内の変数を保持・管理するネスト可能なオブジェクトです。
+詳しくは→[host/interpreter.md#スコープ](./interpreter.md#スコープ)
+
+### values
+AiScript内のnullや数値といった値をJavascript側から生成するための関数と、それらをTypescriptで表現するための型が含まれています。
+AiScript用ライブラリを作成するのに必要になります。
+詳しくは→[host/interpreter.md#values](./interpreter.md#values)
+
+### utils
+様々なユーティリティ関数が含まれます。
+例えば、AiScript内の値を文字列に変換する関数や、アサーション用の関数などです。
+詳しくは→[host/interpreter.md#utils](./interpreter.md#utils)
+
+### errors
+ParserおよびInterpreterの実行中に発生するエラーのクラスが含まれます。
+詳しくは→[host/errors.md#](./errors.md)
+
+### AISCRIPT_VERSION
+```js
+import { AISCRIPT_VERSION } from '@syuilo/aiscript';
+console.log(AISCRIPT_VERSION);
+```
+AiScriptのバージョンを表す文字列です。
+
+### その他の要素
+> [!WARNING]
+> 厳密なサポートがされない機能です。予告なしの変更が発生する可能性があります。
+
+ここに無い要素が必要になった場合、`import { } from '@syuilo/aiscript/path/to/source.js`で対応するソースファイルへのパスを指定してimportすることができます。
From 3a63c9260e515a15a93d40816d6062451bd59abf Mon Sep 17 00:00:00 2001
From: FineArchs <133759614+FineArchs@users.noreply.github.com>
Date: Wed, 30 Oct 2024 11:25:29 +0900
Subject: [PATCH 3/5] Create parser.md
---
docs/host/parser.md | 51 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
create mode 100644 docs/host/parser.md
diff --git a/docs/host/parser.md b/docs/host/parser.md
new file mode 100644
index 00000000..9c42f701
--- /dev/null
+++ b/docs/host/parser.md
@@ -0,0 +1,51 @@
+# AiScript 構文解析
+AiScriptコードの構文解析を行い、[AST](#AST)と呼ばれるオブジェクトに変換します。
+基本的にはstaticメソッドである`Parser.parse(input)`を利用していれば問題ありません。
+後述のプラグイン機能を使用する場合はParserクラスのインスタンスを作成する必要があります。
+
+### Parser.parse(input)
+
+ | 引数名 | 型(Typescript) |
+ | input | string |
+ | 返り値 | Ast.Node[] |
+
+
+```js
+import { Parser } from '@syuilo/aiscript';
+Parser.parse("<: 'Hello AiScript!'");
+```
+
+## AST
+構文木と呼ばれるオブジェクトです。
+
+### type AST
+
+
+## プラグイン機能
+> [!NOTE]
+> 未整備の機能であり、ホスト側が利用するには機能が足りていないと考えられています。
+
+構文解析後にAstのバリデーションや変形を行う機能です。
+プラグイン機能を使用する場合は`new Parser()`でParserクラスのインスタンスの作成を行う必要があります。
+### Parser() constructor
+コンストラクタ引数はありません。
+```js
+import { Parser } from '@syuilo/aiscript';
+const parser = new Parser();
+```
+
+### Parser.prototype.parse(input)
+
+ | 引数名 | 型(Typescript) |
+ | input | string |
+ | 返り値 | Ast.Node[] |
+
+
+```js
+import { Parser } from '@syuilo/aiscript';
+const parser = new Parser();
+parser.parse("<: 'Hello AiScript!'");
+```
+
+### Parser.prototype.addPlugin(type, plugin)
+
From 44f65243bad1c078b055a7e1118615c81d142101 Mon Sep 17 00:00:00 2001
From: FineArchs <133759614+FineArchs@users.noreply.github.com>
Date: Wed, 30 Oct 2024 11:32:36 +0900
Subject: [PATCH 4/5] Update api.md
---
docs/host/api.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/docs/host/api.md b/docs/host/api.md
index 956649e4..7bde3cb9 100644
--- a/docs/host/api.md
+++ b/docs/host/api.md
@@ -15,7 +15,8 @@
詳しくは→[host/parser.md](./parser.md)
### Ast
-Parserによって生成される構文木です。
+※Typescript用
+Parserによって生成される構文木(AST)に関連する型がまとめられています。
詳しくは→[host/parser.md#AST](./parser.md#AST)
### ParserPlugin, PluginType
@@ -32,7 +33,7 @@ ASTを順次読み取り、実行します。
### Scope
> [!NOTE]
-> 未整備の要素であり、ホスト側が利用するには機能が足りていないと考えられています。
+> ホスト側が利用する機会はほとんど無いと考えられています。
AiScript内の変数を保持・管理するネスト可能なオブジェクトです。
詳しくは→[host/interpreter.md#スコープ](./interpreter.md#スコープ)
From 8c4708210c072516bfe2a57afb38c42dbf691812 Mon Sep 17 00:00:00 2001
From: FineArchs <133759614+FineArchs@users.noreply.github.com>
Date: Wed, 30 Oct 2024 11:35:10 +0900
Subject: [PATCH 5/5] Update parser.md
---
docs/host/parser.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/host/parser.md b/docs/host/parser.md
index 9c42f701..9fa35785 100644
--- a/docs/host/parser.md
+++ b/docs/host/parser.md
@@ -1,6 +1,6 @@
# AiScript 構文解析
-AiScriptコードの構文解析を行い、[AST](#AST)と呼ばれるオブジェクトに変換します。
-基本的にはstaticメソッドである`Parser.parse(input)`を利用していれば問題ありません。
+AiScriptコードの構文解析を行い、[AST](#AST)と呼ばれるオブジェクトに変換する方法について説明します。
+基本的にはstaticメソッドである`Parser.parse(input)`を利用するだけで問題ありません。
後述のプラグイン機能を使用する場合はParserクラスのインスタンスを作成する必要があります。
### Parser.parse(input)