aiscript icon indicating copy to clipboard operation
aiscript copied to clipboard

🔋 A lightweight scripting language runing on JavaScript

Results 180 aiscript issues
Sort by recently updated
recently updated
newest added

## 概要 CompilerとInterpreterの2種類のクラスをライブラリとして公開する。 - Compiler : AiScriptコードから別のコードを生成する (WebAssemblyなど個別に作成) - Interpreter : AiScriptコードを実行する CompilerとInterpreterの内部では、それぞれ構文解析と意味解析などを行う。 → 内容が同じなのでこの部分をクラスとして切り出して、それをCompilerやInterpreterから呼び出す 構文解析と意味解析をどのように切り出す? ## 構文解析と意味解析を1つにして切り出す クラス名の案: - Backend - Core - Parser ## 構文解析と意味解析を別々に切り出す(現状) 名前も現状のまま → Parser、Analyzer...

モジュールの名前解決で悩まなくて良いように、バンドルにする(?) Rollup?Webpack?

複雑な処理はパースか意味解析の時点で行い、インタプリタはそれを元に逐次実行するだけにしたい。

enhancement

プロパティとプロパティ(関数コール)、インデックスの構文を整理 プロパティやプロパティ(関数コール)やインデックスのことを、 長いのでパス要素と呼びます。 左再帰はサポートされないため回避しないといけない。 解決策の1つとしては、主となる式の後ろにパス要素が複数個付けられるようにすること。 式のASTにpathesのようなのを追加して、あとに続くパス要素を表現できるようにする。 ``` expr = expr_item expr_path+ ``` ## ノード インデックス ``` { type: 'path'; index: number; // インデックス値 } ``` プロパティ ``` { type: 'path';...

1000行を超えているので `/test/index.ts` は分割した方が扱いやすいかと思う 機能追加に際して新しいテストを書くときも同じファイルを編集して競合する可能性を残すより新しいファイルを追加する方針にすれば嬉しそう

例えば、以下のような場合に実行されるまで変数bが定義されているか分からない。 ``` $a 1) $b

enhancement

ループにラベル構文を追加する必要もある

enhancement