前回の記事はこちら
今回は、この記事を書き始める前に完成していた部分について説明します。
コードエディタ
背景が黒のテキストエリアとテキストメッシュプロのラベル、背景が灰色の長方形を組み合わせて作りました。
プログラムはこんな感じです。↓
CodeScript.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class CodeScript : MonoBehaviour
{
public TextMeshProUGUI lineNumber;
public TMP_InputField code;
// Start is called before the first frame update
void Start()
{
lineNumber.text = "1";
}
// Update is called once per frame
void Update()
{
}
public void InputKey(string value){
int lineNum = code.textComponent.textInfo.lineCount;
lineNumber.text = "1";
for(int i = 2; i <= lineNum; i++){
lineNumber.text += $"\r\n{i}";
}
}
}
行を追加すると行番号が表示されるようになっています。
自作言語
現時点ではコードエディタにコードを記述し、GO!ボタンを押すとコンソールに実行結果が出てくるようになっています。
ガーネット言語
関数型の言語です。
例えば10番目のフィボナッチ数を求めるプログラムは次の通りです。
fib(n) = if n < 2 n fib(n-2) + fib(n-1)
print(fib(10)) # result -> 55
関数型言語なので、変数に代入はできません。(代入の代わりに束縛をします)
トパーズ言語
スタック指向型の言語です。
スタック指向言語っていうのは、値をスタックに積んでいってそのスタックに対して操作を行って計算するっていう言語です。
例えば10番目のフィボナッチ数を求めるプログラムは次の通りです。
(fib
(nextNum tuck +)
1 0 :nextNum 3 pick loop
)
10 fib print # result -> 55
多分この言語が一番難しくて(だって自分でもよくわからないもん)一番速いと思います。
(使ってくれる人いるのかな...)
ターコイズ言語
未完成です。
手続き型言語です。
pythonライクとかJSライクとかにしたいと思っています。
終わりに
ガーネット言語とトパーズ言語の文法はまだ書いていませんが、ゲームを公開するときにマニュアルに書こうと思います。
次回はターコイズ言語を作っていきます。
次回はの記事はこちら