2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Интерпретация функций
Сообщение10.05.2012, 23:16 
Аватара пользователя


20/03/12
23
Здравствуйте.
Подскажите пожалуйста, какой можно взять встраиваемый интерпретатор, чтобы его функционала хватало чуть больше чем на то, чтобы подключать из текстового файла функцию. Просто не хочется палить в муху из базуки. Я могу выразиться некорректно, поэтому объясню на пальцах.
Есть текстовый файл, в котором описана функция, которая выглядит примерно так
Код:
real Row(int t)
{
   // ....
   return something;
}

который вызывается из скомпилированной программы, написанной на С++.

Нужно это мне для того, чтобы задавать граничные условия Дирихле и Нэймана для решения уравнения Лапласа с произвольной границей. Причем граничные условия нужно будет менять, и в функцию, записанную, грубо говоря, в блокноте, нужно передавать из программы-исполнителя определенные параметры.

Я как то имел дело с Lua, но мне кажется он слишком мощный для таких целей. Вообщем жду мудрых советов.

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение10.05.2012, 23:46 
Заслуженный участник


09/08/09
3438
С.Петербург
А под какой операционной системой Вы этим занимаетесь?

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение10.05.2012, 23:50 
Аватара пользователя


20/03/12
23
Windows 7

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение11.05.2012, 00:15 
Заслуженный участник


09/08/09
3438
С.Петербург
Windows Scripting Host позволяет писать COM-объекты на любом из поддерживаемых им языков (JScript, VBScript и т. п.). Поэтому я бы, наверное, написал функцию на JScript, зарегистрировал ее как COM-объект, ну и дергал бы из программы на C++ стандартным способом.

Вот здесь можно подробнее почитать:
WSH, Part 3: Windows Script Components. Create reusable code by writing your own COM objects in script

-- Пт май 11, 2012 01:38:48 --

(Нашел свой старый пример)

HelloServer.sct (COM-сервер):
Код:
<scriptlet>

<Registration ProgID="Hello.Hello"/>

<implements id=Automation type=Automation>
   <method name=sayHello/>
</implements>

<script language=JScript>

function sayHello()
{
    return "Hello, world!";
}

</script>
</scriptlet>


Регистрация сервера (запускать под администратором):
Код:
regsvr32 <полный путь>\HelloServer.sct


HelloClient.wsf (простой клиент на JScript):
Код:
<job id="HelloClient">
<?job debug="false"?>
<script language=JScript RUNAT=Server>

var helloObj = new ActiveXObject("Hello.Hello");
var msg = helloObj.sayHello();
WScript.Echo("helloObj.sayHello returned " + msg);
</script>
</job>

Запуск клиента:
Код:
D:\temp>cscript HelloClient.wsf
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

helloObj.sayHello returned Hello, world!

D:\temp>

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение11.05.2012, 19:51 
Заслуженный участник


15/05/05
3445
USA
Maslov в сообщении #569548 писал(а):
Windows Scripting Host позволяет писать COM-объекты на любом из поддерживаемых им языков (JScript, VBScript и т. п.).
Следующим этапом, после освоения примера Maslov'а, может быть статья Ивана Коробко "Создаем COM-компоненты с помощью VBScript" (журнал "Системный администратор", август 2007, стр. 80-85).

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение11.05.2012, 22:57 
Аватара пользователя


20/03/12
23
Уже в процессе. Благодарю!

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение18.05.2012, 22:10 


04/06/10
117
Поражает "мудрость" советчиков.
Автор сказал, что даже lua слишком мощный. И его послали к COM-у. Мало того, что это как из BFG по мухе, да ещё "прибили" несчастного к одной никому не нужной платформе.

Встроенный интерпретатор есть смысл использовать если нужно дёргать из интерпретируемого языка код на плюсах. А тут он не к месту.
Насколько я понял, скорость тут не важна, дёргаться внешняя функция будет нечасто.
Самое простое решение: вызывать интерпретируемый код функцией system, а ответ получать через переменную окружения getenv-ом.

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение18.05.2012, 23:39 
Заслуженный участник


27/04/09
28128
2 _AliEn_: мне кажется, Lua как раз-таки вполне подойдёт, если вдруг передумаете.

wolf.ram в сообщении #573052 писал(а):
Автор сказал, что даже lua слишком мощный. И его послали к COM-у.
Тоже сильно удивило. :o

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение20.05.2012, 20:00 
Заслуженный участник


15/05/05
3445
USA
arseniiv в сообщении #573103 писал(а):
wolf.ram в сообщении #573052 писал(а):
Автор сказал, что даже lua слишком мощный. И его послали к COM-у.
Тоже сильно удивило. :o
Взгляните на пример Maslov'а еще раз: сам "объект" - это 12 строк, из которых 11 пишутся один раз. Топикстартеру НЕ предлагали разрабатывать COM на ATL, что действительно было бы "не адекватно".

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение20.05.2012, 23:38 
Заслуженный участник


27/04/09
28128
Лично меня волнует регистрация-разрегистрация этого объекта в системе. :-) Нелокально как-то получается.

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение20.05.2012, 23:48 
Заслуженный участник


09/08/09
3438
С.Петербург
arseniiv в сообщении #573918 писал(а):
Нелокально как-то получается.
Можно положить рядом с клиентским приложением как сам скрипт, так и батники reg.cmd/unreg.cmd: все будет почти локально.

 Профиль  
                  
 
 Re: Интерпретация функций
Сообщение22.05.2012, 06:41 


26/02/12
50
Погуглите на formula interpreter. Вот кое-что:

Writing a fast formula interpreter
OpenMaX formula interpreter - но это несколько специфичная штука

Наконец, самое крутое: Z-Parser
Цитата:
Z-Parser is a Dynamic Link Library (DLL) file for programmers of Windows programs. It contains two routines for processing strings with mathematical expressions based on the algorithms used in the freeware programs Z-Plot and Z-Calculate. The DLL is shipped with documentation files for the routines' interfaces and can be used freely for any purpose.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group