aiscript icon indicating copy to clipboard operation
aiscript copied to clipboard

キーにJSON5における識別子を使えるようにする

Open takejohn opened this issue 10 months ago • 3 comments

目的

オブジェクトリテラルのプロパティ名に予約語も書けるようにしたい

現状

Misskeyの拡張APIにおいて、Ui:C:textInput関数などの引数のプロパティにdefaultがあるが、 AiScriptがバージョン1.0.0になるとdefaultが予約語となるため、既存のコードが動かなくなってしまう懸念がある。 例えば、Misskey Playだとこういうコードが動くが、 1.0.0になるとSyntax: unexpected token: DefaultKeywordのエラーになる。

/// @ 0.19.0
Ui:render([
  Ui:C:textInput({
    default: 'text',
  })
])

解決策

オブジェクトリテラルのキー名に予約語を使えるようになる。 JSON5の識別子(=ECMAScriptにおけるIdentifierName)では、一部の非ASCII文字・$・Unicodeエスケープシーケンス・予約語も使えるため、それに準拠してみる。 JSON5Identifier: https://spec.json5.org/#prod-JSON5Identifier

takejohn avatar Dec 30 '24 13:12 takejohn