Есть ли библиотеки или другие модули под Unity, позволяющие написать компилятор?

Мне требуется реализовать динамическую проверку кода на Unity, хотелось бы знать, существуют ли готовые библиотеки или придется писать компилятор с нуля?


Ответы (1 шт):

Автор решения: Арман

У вас есть 2 варианты.


  1. Всё это взять в string и проверять весь код долго и счастливо, при том что у вас нет корневой доступ к коде, то есть ваша проверка будет работать медленнее, чем в обычных компиляторах.

  2. Добавить этот код к своему и с помощью оператора try и catch ловить все ошибки.

Второй вариант выглядит примерно так.

using UnityEngine;
using UCompile;

public class CompileClassExample : MonoBehaviour 
{
    void Compile(string input)
    {
        if(!string.IsNullOrEmpty(input))
        {
            CSScriptEngine engine = new CSScriptEngine();
            engine.AddUsings("using UnityEngine;");

            IScript result = engine.CompileCode(input);
            try
            {
                result.Execute();
            }
            catch(Exception error)
            {
                Debug.Log(error);
            }
        }
    }
}

UCompile и есть та самая библиотека.

→ Ссылка