aiscript
aiscript copied to clipboard
🔋 A lightweight scripting language runing on JavaScript
#179 の無名関数`() => {}`を実現する上での問題点についての検討。 空ブロックと空オブジェクト式が干渉してしまう。 ## 関係する仮仕様 - 代入式でブロックが使える - 代入式でオブジェクト式が使える - 代入式で`{}`を渡した場合はオブジェクト式と解釈する - 無名関数でブロックが使える - 無名関数でオブジェクト式が使える。 その場合は`({})`と指定する。 - 無名関数で`{}`を返した場合はブロックと解釈する ## 懸念 - 対象によって式の優先度が変わるのはユーザーにとっても優しくなさそう。
# What 各キーワードの後のスペースの消費ルールを修正します # Why # Additional info (optional)
terrario: https://github.com/marihachi/terrario より柔軟にパーサーが書けるようになりそう。 PEG.jsでは難しい細かい部分も、ある程度は実現できる可能性がある。 まだまだterrario側も安定していないため実験的です。 v1.0までに含められなくても良いかも。 ## 作業状況 ### 文 (Global) - [ ] Namespace - [ ] Meta ### 文 - [x] VarDef - [ ] FnDef - [x]...
その関数の引数が一つだけの場合を除き、 ``` dialog(title: "foo", text: "bar", icon: "info") ``` のように引数名を明示するようにすると以下のメリットがありそう - 見やすくなる - 関数の仕様変更で引数の並びが変わったりしても影響がない - 呼び出し時の引数の並びを覚える必要がない - オプションオブジェクトを渡す手間が省ける?
It is hard to know how it works with complex data structures or objects like Canvas for instance. How to draw anything using AiScript? Is it possible? How does it...
無限ループとかしてもブラウザがフリーズするのを防いだりできそう ただNode.jsにはWeb worker無いから面倒そう
オブジェクトリテラルとカッコが一緒で紛らわしいし、その方が簡潔 ただ破壊的変更になる
onUpdatedで変数名は分かるけど、 スコープ毎で同じ名前が存在する場合もあるため、実際には更新された変数を確実には識別できない。 スコープも合わせて渡すようにすれば色々な場面で便利そう。