#compiler-construction #lua #code-translation
#построение компилятора #lua #код-перевод
Вопрос:
Итак, мне интересно, были ли у кого-нибудь какие-либо мысли (надеюсь, основанные на опыте) о преимуществах создания переводчика из исходного кода в исходный по сравнению с созданием пользовательского интерпретатора. Я работаю над проектом, который интерпретирует математические функции, и до сих пор я полагался на использование Lua для выполнения своей грязной работы. Сейчас я нахожусь на том этапе, когда мне нужно либо изменить строку ввода, предоставленную пользователем, либо создать интерпретатор для моего DSL (например, я хочу добавить пользовательскую функциональность, чтобы вы могли нарезать массивы типа x [1: 2], что невозможно в Lua — поэтому я бы изменил это на что-то вроде range (x, 1, 2) [просто в качестве примера]).
Я также обеспокоен будущей расширяемостью. Я хотел бы позволить людям определять свои собственные функции в Lua, поэтому я не уверен, как бы я включил это, если бы я создал пользовательский интерпретатор. Итак, если у кого-нибудь есть какие-либо полезные материалы для чтения о переводчиках из исходного кода в исходный и / или о создании пользовательской виртуальной машины / интерпретатора, которая имеет возможность вызывать функции Lua, я был бы очень признателен!
Комментарии:
1. Несколько человек в списке рассылки Lua активно разрабатывают математические материалы с Lua. Подумайте о том, чтобы добавить строку для получения некоторой информации.
Ответ №1:
Взгляните на Metalua.
Ответ №2:
Если вы хотите использовать Lua, вы также можете сгенерировать байт-код Lua вместо исходного кода Lua. Недостатком является то, что байт-код не переносим.