Skip to content

Instantly share code, notes, and snippets.

@marihachi
Last active January 12, 2020 12:11
Show Gist options
  • Save marihachi/262d738f3167a723d4a84ba3197c415a to your computer and use it in GitHub Desktop.
Save marihachi/262d738f3167a723d4a84ba3197c415a to your computer and use it in GitHub Desktop.
Misskey Pagesで使われるAiScript(AST)についてのドキュメント

2020/01/12時点の内容です。
間違いや表現の訂正、内容の追加等ある場合はコメントからお願いします。

ASTメモ

全てのオブジェクトはidとtypeを持つ。
リテラルのオブジェクトはvalueを持つ。
関数コールのオブジェクト(ブロック)は配列argsとvalueを持ち、valueは常にnull(?)
ルート配列直下のオブジェクト(変数)は追加でnameを持つ。

リテラルタイプ

  • number 数字
  • ref 変数名
  • text 文字列
  • multiLineText 複数行のテキスト
  • textList テキストのリスト(改行で区切られたテキスト)
  • fn ユーザー定義関数

ユーザー定義関数

配列slotsとオブジェクトexpressionを含むオブジェクトを値として持つリテラル。
expressionには1つのブロックが入る。
ユーザー定義関数のコールは、fn:から始まるtypeが使用される。

組み込み関数一覧

目次

論理演算系

比較演算系

算術演算、端数処理系

文字操作系

リスト操作系

ランダム値取得系

制御系

論理演算系

not

概要

論理否定の演算をする。

引数

a:
ブール値を指定する。

戻り値

演算結果。


or

概要

論理和の演算をする。

引数

a:
ブール値を指定する。

戻り値

演算結果。


and

概要

論理積の演算をする。

引数

a:
ブール値を指定する。

戻り値

演算結果。

比較演算系

eq

概要

値が一致している場合にtrueを返す。

引数

a:
比較対象の値を指定する。

b:
比較対象の値を指定する。

戻り値

true / false。


notEq

概要

値が一致していない場合にtrueを返す。

引数

a:
比較対象の値を指定する。

b:
比較対象の値を指定する。

戻り値

true / false。


gt

概要

a > b

引数

a:
比較対象の値を指定する。

b:
比較対象の値を指定する。

戻り値

true / false。


lt

概要

a < b

引数

a:
比較対象の値を指定する。

b:
比較対象の値を指定する。

戻り値

true / false。


gtEq

概要

a >= b

引数

a:
比較対象の値を指定する。

b:
比較対象の値を指定する。

戻り値

true / false。


ltEq

概要

a <= b

引数

a:
比較対象の値を指定する。

b:
比較対象の値を指定する。

戻り値

true / false。

算術演算、端数処理系

add

概要

足し算する。

引数

a:
数値。

b:
数値。

戻り値

演算結果。


subtract

概要

引き算する。

引数

a:
数値。

b:
数値。

戻り値

演算結果。


multiply

概要

掛け算する。

引数

a:
数値。

b:
数値。

戻り値

演算結果。


divide

概要

割り算する。

引数

a:
数値。

b:
数値。

戻り値

演算結果。


mod

概要

割った余りを取得する。

引数

a:
数値。

b:
数値。

戻り値

演算結果。


round

概要

少数を丸める。

引数

a:
数値。

戻り値

演算結果。

文字操作系

strLen

概要

テキストの長さを取得する。

引数

a:
テキストを指定する。

戻り値

テキストの長さ。


strPick

概要

テキストの指定したindexの文字を取得する。

引数

a:
テキスト。

b:
1から始まるテキストのindex。

戻り値

文字。


strReplace

概要

テキストの置換。

引数

a:
対象のテキスト。
b:
検索する文字列。
c:
置換する文字列。

戻り値

置換されたテキスト。


strReverse

概要

テキストの文字の順を反転させる。

引数

a:
対象のテキスト。

戻り値

文字の順が反転されたテキスト。


join

概要

テキストのリストを連結して一つのテキストにする。

引数

texts:
対象のテキストのリスト。

separator(optional):
テキストとテキストの間に使用するセパレーター。

戻り値

連結されたテキスト。


stringToNumber

概要

数字を数値に変換する。

引数

a:
数字(テキスト)。

戻り値

変換後の数値。


numberToString

概要

数値を数字に変換する。

引数

a:
数値。

戻り値

変換後の数字(テキスト)。


splitStrByLine

概要

テキストを改行で分割してテキストのリストにする。

引数

a:
改行を含んだテキスト。

戻り値

テキストのリスト。

リスト操作系

pick

概要

リストから選択。

引数

list:
リスト。

i:
1から始まるリストのindex。

戻り値

リストの項目。


listLen

概要

リストの長さを取得。

引数

list:
リスト。

戻り値

リストの長さ。


randomPick

概要

環境変数SEEDを使って指定したリストからランダムに一つ選択する。

引数

list:
リストを指定する。

戻り値

選択された項目。


dailyRandomPick

概要

日替わりバージョンのrandomPick関数。

引数

戻り値


seedRandomPick

概要

指定したシードを使えるバージョンのrandomPick関数。

引数

seed:
シードを指定する。

list:
リストを指定する。

戻り値


DRPWPM

概要

確率付きのテキストのリストからランダムに選択 (ユーザーごとに日替わり)
項目毎の確率を変えることで、それぞれの出現率を変えることができる。

引数

list:
テキストと確率がスペースで区切られた項目の入ったリストを指定する。

戻り値

選択されたテキスト。

ランダム値取得系

random

概要

環境変数SEEDを使ってランダムなブール値を生成する?

引数

probability:
trueを返す確率をパーセンテージで指定する。

戻り値

true / false


dailyRandom

概要

日替わりバージョンのrandom関数。

引数

戻り値

  • randomの戻り値を参照。

seedRandom

概要

指定したシードを使えるバージョンのrandom関数。

引数

seed:
シードを指定する。

probability:
trueを返す確率をパーセンテージで指定する。

戻り値

  • randomの戻り値を参照。

rannum

概要

環境変数SEEDを使って指定した範囲の乱数値を生成する?

引数

min:
範囲の下限値を指定する。

max:
範囲の上限値を指定する。

戻り値

乱数値。


dailyRannum

概要

日替わりバージョンのrannum関数。

引数

戻り値

  • rannumの戻り値を参照。

seedRannum

概要

指定したシードを使えるバージョンのrannum関数。

引数

seed:
シードを指定する。

min
範囲の下限値を指定する。

max
範囲の上限値を指定する。

戻り値

  • rannumの戻り値を参照。

制御系

for

概要

最初に評価されるときに一度だけループが実行される。

引数

times:
繰り返される回数を指定する。

fn:
繰り返し呼び出されるユーザー定義関数を指定する。
指定された関数のslots[0]には1から始まるindexが渡される。

戻り値

fnに指定された関数が呼び出された結果が入った配列。


if

概要

条件によって分岐する。

引数

bool:
条件を指定する。
a:
条件に一致した時の内容を指定する。
b:
条件に一致しなかった時の内容を指定する。

戻り値

条件分岐した結果の内容(a または b)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment