Интегрировать редактор Lua в программу C # - PullRequest
3 голосов
/ 08 января 2012

Я делаю POC (Подтверждение концепции) для небольшого проекта с открытым исходным кодом, чтобы интегрировать Lua в c # выглядит довольно просто, но для этого проекта мы хотим пойти немного дальше.Мы хотим иметь возможность редактировать Lua-скрипты из нашей C # -программы (клиент WPF, но мы можем использовать winforms, если это то, что нужно), в среде IDE требуется базовое завершение кода и что мы можем добавлять наши объекты и методы C # (те, которые выбудет иметь возможность получать доступ из сценариев Lua во время работы), поэтому они будут автоматически завершены. Являются ли они таким API, доступным для C #?

edit: Schollii хотел получить пример кода, который мне нужен для завершения кода

while true do
    Mouse:setY(TrackIR:getPitch())
end

, где Mouse и TrackIR - объекты c #, доступные из скрипта Lua

Ответы [ 3 ]

3 голосов
/ 08 января 2012

Если вы хотите интегрировать редактор Lua с подсветкой синтаксиса C #, IMO самый простой способ - использовать элемент управления Scintilla , который доступен в C # через ScintillaNET . Он уже содержит подсветку для языка Lua, и его относительно легко внедрить и использовать.

Для взаимодействия Lua с C # вы можете использовать LuaInterface и обратно. См. этот вопрос для ссылок на документацию.

Завершение кода будет нелегкой задачей, если вам требуется завершение за пределами стандартной библиотеки, которую можно описать в простом словаре. Поскольку Lua является динамическим языком, нетрудно вывести содержимое переменной до фактического запуска кода до заданной точки - это не невозможно, взгляните на lua-inspect , который доступен для SciTE и ViM и позволяет проверять код (но он не идеален).

Если вы хотите попробовать код в работающей среде - то есть у вас есть состояние Lua, работающее с загруженными модулями и установленными переменными - вы можете вдохновиться патчем Advanced Readline Support на LuaPowerPatches и адаптировать его к своему среда в C #. Поддерживает среди прочего:

  • Завершение ключевых слов и имен глобальных переменных.
  • Рекурсивное и метатабельное заполнение имен переменных.
  • Завершение контекстно-зависимого разделителя.
1 голос
/ 09 января 2012

Кажется, вы просто хотите встраиваемый редактор, который может иметь завершение кода и подсветку синтаксиса, предпочтительно на основе WPF.Не требуется явно поддерживать Lua.

Посмотрите на Avalon Edit .Вот статья об этом

Вам придется реализовать файл подсветки и дополнения самостоятельно в рамках, которые он предоставляет - но это выглядит достаточно просто.

0 голосов
/ 08 января 2012

Я не знаю ни одной такой библиотеки. Некоторым инструментом, который вам, вероятно, понадобится / сочтет полезным, являются Luainterface и некоторые редакторы Lua с открытым исходным кодом, которые обеспечивают компиляцию кода, такие как blua и Scite. Обратите внимание, что завершение кода имеет разные варианты, каждый из которых имеет свои плюсы и минусы с точки зрения мощности, простоты реализации и т. Д. Например, если вы просто хотите предоставить список возможных слов, которые соответствуют объектам в глобальном пространстве имен Lua, тогда вы не вообще много нужно; если OTOH вы хотите, чтобы завершение кода работало с полями и объектами таблицы и различными уровнями вложенности, работа будет значительно увеличена.

...