Переводчик с источника на перевод или пользовательский переводчик? - PullRequest
1 голос
/ 13 мая 2011

Итак, мне интересно, есть ли у кого-нибудь какие-либо мысли (надеюсь, основанные на опыте) о преимуществах создания переводчика от источника к источнику по сравнению с созданием специального интерпретатора.Я работаю над проектом, который интерпретирует математические функции, и до сих пор я полагался на использование Lua для своей грязной работы.Сейчас я нахожусь в точке, где мне нужно либо изменить входную строку, предоставленную пользователем, либо создать интерпретатор для моего DSL (например, я хочу добавить пользовательские функции, чтобы вы могли нарезать массивы, такие как x [1: 2], чтов Lua это невозможно - поэтому я бы изменил это на что-то вроде range (x, 1, 2) [просто в качестве примера]).

Я также обеспокоен возможностью расширения в будущем.Я бы хотел, чтобы люди могли определять свои собственные функции в Lua, поэтому я не уверен, как бы я включил это, если бы я создал собственный интерпретатор.Так что, если у кого-то есть хорошие материалы для чтения от источника к исходному переводчику и / или для создания собственной виртуальной машины / интерпретатора, которая может вызывать функции Lua, я был бы очень признателен!

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Если вы хотите использовать Lua, вы также можете сгенерировать байт-код Lua вместо исходного кода Lua.Недостатком является то, что байт-код не является переносимым.

1 голос
/ 13 мая 2011

Взгляните на Металлуа .

...