Можно ли встроить sp-forth

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Можно ли встроить sp-forth

Бомбин Валентин

Можно ли встроить sp-forth как скриптовый язык? Если да - где глянуть пример. Если нет - то какой форт посоветуете под эту задачу. Целевая ось - виндовс

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Можно ли встроить sp-forth

Королев Виктор
Смотря во что встроить.. я в своих программах запускаю скрипты с помощью слова

: MARKER ( "<spaces>name" -- ) \ 94 CORE EXT
\ Пропустить ведущие пробелы. Выделить name, ограниченное пробелами.
\ Создать определение с семантикой выполнения, описанной ниже.
\ name Выполнение: ( -- )
\ Восстановить распределение памяти словаря и указатели порядка поиска
\ к состоянию, которое они имели перед определением name. Убрать
\ определение name и все последующие определения. Не требуется
\ обязательно восстанавливать любые оставшиеся структуры, которые
\ могут быть связаны с удаленными определениями или освобожденным
\ пространством данных. Никакая другая контекстуальная информация,
\ как основание системы счисления, не изменяется.
HERE
\ [C]HERE , [E]HERE ,
GET-CURRENT ,
GET-ORDER DUP , 0 ?DO DUP , @ , LOOP
CREATE ,
DOES> @ DUP \ ONLY
\ DUP @ [C]DP ! CELL+
\ DUP @ [E]DP ! CELL+
DUP @ SET-CURRENT CELL+
DUP @ >R R@ CELLS 2* + 1 CELLS - R@ 0
?DO DUP DUP @ SWAP CELL+ @ OVER ! SWAP 2 CELLS - LOOP
DROP R> SET-ORDER
DP !
;

Пример 

\ ----------------------------------

\ во внешнем файле
MARKER SKRIPТ
MODULE: TMP_SKR
\ Здесь ваши форт слова 

;MODULE
SKRIPТ
\EOF

\ ---------------------------------------

\ ВЫПОЛНИТЬ СКРИПТ
: execskript ( a u ) ['] INCLUDED CATCH \ a u  путь к файлу скрипта
?DUP IF NIP NIP
CASE
2 OF z" Не выполнить этот скрипт" ENDOF
3 OF z" Не выполнить этот скрипт" ENDOF
-2003 OF z" Ошибка синтаксиса в скрипте" ENDOF
0xC0000005 OF z" Нарушение общей защиты" ENDOF
\ >R <( R> DUP " Ошибка ~N (0x~06H)" )>
ENDCASE
msg \ BYE
THEN
;

 
 
27.03.2016, 19:19, "Бомбин Валентин" <[hidden email]>:


Можно ли встроить sp-forth как скриптовый язык? Если да - где глянуть пример. Если нет - то какой форт посоветуете под эту задачу. Целевая ось - виндовс

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Можно ли встроить sp-forth

Бомбин Валентин
Из проекта на С++ надо как-то свой скриптовый язык дергать. думаю пока в сторону форта.



--
С уважением, Бомбин Валентин
тел 79114208298


27.03.2016, 19:55, "Королев Виктор" <[hidden email]>:

> Смотря во что встроить.. я в своих программах запускаю скрипты с помощью слова
>
> : MARKER ( "<spaces>name" -- ) \ 94 CORE EXT
> \ Пропустить ведущие пробелы. Выделить name, ограниченное пробелами.
> \ Создать определение с семантикой выполнения, описанной ниже.
> \ name Выполнение: ( -- )
> \ Восстановить распределение памяти словаря и указатели порядка поиска
> \ к состоянию, которое они имели перед определением name. Убрать
> \ определение name и все последующие определения. Не требуется
> \ обязательно восстанавливать любые оставшиеся структуры, которые
> \ могут быть связаны с удаленными определениями или освобожденным
> \ пространством данных. Никакая другая контекстуальная информация,
> \ как основание системы счисления, не изменяется.
> HERE
> \ [C]HERE , [E]HERE ,
> GET-CURRENT ,
> GET-ORDER DUP , 0 ?DO DUP , @ , LOOP
> CREATE ,
> DOES> @ DUP \ ONLY
> \ DUP @ [C]DP ! CELL+
> \ DUP @ [E]DP ! CELL+
> DUP @ SET-CURRENT CELL+
> DUP @ >R R@ CELLS 2* + 1 CELLS - R@ 0
> ?DO DUP DUP @ SWAP CELL+ @ OVER ! SWAP 2 CELLS - LOOP
> DROP R> SET-ORDER
> DP !
> ;
>
> Пример
>
> \ ----------------------------------
>
> \ во внешнем файле
> MARKER SKRIPТ
> MODULE: TMP_SKR
> \ Здесь ваши форт слова
>
> ;MODULE
> SKRIPТ
> \EOF
>
> \ ---------------------------------------
>
> \ ВЫПОЛНИТЬ СКРИПТ
> : execskript ( a u ) ['] INCLUDED CATCH \ a u  путь к файлу скрипта
> ?DUP IF NIP NIP
> CASE
> 2 OF z" Не выполнить этот скрипт" ENDOF
> 3 OF z" Не выполнить этот скрипт" ENDOF
> -2003 OF z" Ошибка синтаксиса в скрипте" ENDOF
> 0xC0000005 OF z" Нарушение общей защиты" ENDOF
> \ >R <( R> DUP " Ошибка ~N (0x~06H)" )>
> ENDCASE
> msg \ BYE
> THEN
> ;
>
> 27.03.2016, 19:19, "Бомбин Валентин" <[hidden email]>:
>> Можно ли встроить sp-forth как скриптовый язык? Если да - где глянуть пример. Если нет - то какой форт посоветуете под эту задачу. Целевая ось - виндовс
>>
>> ------------------------------------------------------------------------------
>> Transform Data into Opportunity.
>> Accelerate data analysis in your applications with
>> Intel Data Analytics Acceleration Library.
>> Click to learn more.
>> http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
>> _______________________________________________
>> Spf-dev mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/spf-dev
> ,
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
> ,
>
> _______________________________________________
> Spf-dev mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/spf-dev

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Можно ли встроить sp-forth

Абдрахимов Илья-2
In reply to this post by Бомбин Валентин
27.03.2016 19:18, Бомбин Валентин пишет:

> Можно ли встроить sp-forth как скриптовый язык? Если да - где глянуть пример. Если нет - то какой форт посоветуете под эту задачу. Целевая ось - виндовс
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
> _______________________________________________
> Spf-dev mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/spf-dev
Вот хороший образец скриптинга на Форте nncron.ru

--
Bye!
Илья


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Можно ли встроить sp-forth

Мохов Геннадий
In reply to this post by Бомбин Валентин
У меня есть реализация форта написанная на встроенном ассемблере компилятора D (http://www.dlang.org).
Ядро этого форта, это портированный на D asm fork mOleg с http://fforum.winglion.ru. Данный форт работает
на 32 разрядных Windows и Linux. Его можно использовать прямо или как DLL. Можно выполнять вызовы
forth <=> (C, C++, D), в обе стороны. С самого форта можно грузить внешние DLL и so и работать с их функциями.

Пример использования из D.

// Проверка работы моего Форта
import forth;
import std.getopt;
import std.stdio;
import asc1251;

string helps() {
        return cast(string)toCON(
"Использование программы fortdos:
--------------------------------
Запуск:
forthdos -f имяФайлаСфортКодом.f  ---> Выполнить код форта из файла;
forthdos -e \"строка с форт кодом\" ---> Выполнить строку;
Если указаны оба параметра сразу, то сначала загружается файл,  потом выполняется строка.
");
}

int main(string[] args) {
        string fileForth;
        string strEval;
        // Вызов без аргументов, это подсказка
        if(args.length == 1) { writeln(helps()); return 0; }
        try {
                auto helpInformation = getopt(args, std.getopt.config.caseInsensitive,
                        "f|forth", cast(string)toCON("Имя файла forth для выполнения") ,&fileForth,
                        "e|eval",  cast(string)toCON("Строка для выполнения") ,&strEval);
                if (helpInformation.helpWanted) defaultGetoptPrinter(helps(), helpInformation.options);
        } catch { writeln("Error parsing args ..."); return 0;}
       
        // Выполним полученное в аргументах
        initForth(); // Активизируем Форт
        if((fileForth.length > 0)  && (strEval.length > 0)) {
                includedForth(fileForth);
                evalForth(strEval);
        } else {
                if(fileForth.length > 0) {
                        includedForth(fileForth);
                } else {
                        evalForth(strEval);
                }
        }
        return 0;
}

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Можно ли встроить sp-forth

Бомбин Валентин
Как можно посмотреть на исходный код? Если он открыт конечно

--
С уважением, Бомбин Валентин
тел 79114208298


27.03.2016, 21:52, "Мохов Геннадий" <[hidden email]>:

> У меня есть реализация форта написанная на встроенном ассемблере компилятора D (http://www.dlang.org).
> Ядро этого форта, это портированный на D asm fork mOleg с http://fforum.winglion.ru. Данный форт работает
> на 32 разрядных Windows и Linux. Его можно использовать прямо или как DLL. Можно выполнять вызовы
> forth <=> (C, C++, D), в обе стороны. С самого форта можно грузить внешние DLL и so и работать с их функциями.
>
> Пример использования из D.
>
> // Проверка работы моего Форта
> import forth;
> import std.getopt;
> import std.stdio;
> import asc1251;
>
> string helps() {
>         return cast(string)toCON(
> "Использование программы fortdos:
> --------------------------------
> Запуск:
> forthdos -f имяФайлаСфортКодом.f ---> Выполнить код форта из файла;
> forthdos -e \"строка с форт кодом\" ---> Выполнить строку;
> Если указаны оба параметра сразу, то сначала загружается файл, потом выполняется строка.
> ");
> }
>
> int main(string[] args) {
>         string fileForth;
>         string strEval;
>         // Вызов без аргументов, это подсказка
>         if(args.length == 1) { writeln(helps()); return 0; }
>         try {
>                 auto helpInformation = getopt(args, std.getopt.config.caseInsensitive,
>                         "f|forth", cast(string)toCON("Имя файла forth для выполнения") ,&fileForth,
>                         "e|eval", cast(string)toCON("Строка для выполнения") ,&strEval);
>                 if (helpInformation.helpWanted) defaultGetoptPrinter(helps(), helpInformation.options);
>         } catch { writeln("Error parsing args ..."); return 0;}
>
>         // Выполним полученное в аргументах
>         initForth(); // Активизируем Форт
>         if((fileForth.length > 0) && (strEval.length > 0)) {
>                 includedForth(fileForth);
>                 evalForth(strEval);
>         } else {
>                 if(fileForth.length > 0) {
>                         includedForth(fileForth);
>                 } else {
>                         evalForth(strEval);
>                 }
>         }
>         return 0;
> }
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
> _______________________________________________
> Spf-dev mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/spf-dev

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Можно ли встроить sp-forth

Мохов Геннадий
https://github.com/MGWL/QtE5

forth.d - сам модуль форта. На его базе легко сделать DLL для C++
forthdll.d - изготовление DLL
и т.д....

Я сейчас активно пишу связку D + Qt.5 и на примере консоли для своего форта (console5_forth.d) испытываю новые
фишки Qt-5. Даже иногда появляются мысли, не написать ли IDE (но это скорее мечты). Сама консоль "разломана",
так как пока только в задумках....

Обращаю внимание!!! Форт работает только в 32 разрядном режиме!!! так как написан на 32 разрядном ассемблере.
Ещё важный момент. Окружения (библиотек) НЕТ - написать или портировать не успел. Фактически нет консольного (комманднострочного) режима. Используется мной в основном, как средство изучения внутренностей Qt и работы
с функциями Dll и so. В основном задумывался, как плагин для программ на D (C++).

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Можно ли встроить sp-forth

Бомбин Валентин
Спасибо

--
С уважением, Бомбин Валентин
тел 79114208298


27.03.2016, 23:08, "Мохов Геннадий" <[hidden email]>:

> https://github.com/MGWL/QtE5
>
> forth.d - сам модуль форта. На его базе легко сделать DLL для C++
> forthdll.d - изготовление DLL
> и т.д....
>
> Я сейчас активно пишу связку D + Qt.5 и на примере консоли для своего форта (console5_forth.d) испытываю новые
> фишки Qt-5. Даже иногда появляются мысли, не написать ли IDE (но это скорее мечты). Сама консоль "разломана",
> так как пока только в задумках....
>
> Обращаю внимание!!! Форт работает только в 32 разрядном режиме!!! так как написан на 32 разрядном ассемблере.
> Ещё важный момент. Окружения (библиотек) НЕТ - написать или портировать не успел. Фактически нет консольного (комманднострочного) режима. Используется мной в основном, как средство изучения внутренностей Qt и работы
> с функциями Dll и so. В основном задумывался, как плагин для программ на D (C++).
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
> _______________________________________________
> Spf-dev mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/spf-dev

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Можно ли встроить sp-forth

Dmitry Yakimov
Привет,

1. FICL
2. https://github.com/yarus23/SPF.JS/tree/master  совместим с SPF только надо сделать виртуальную машину в Си, сейчас она в javascript, но это самое легкое :)

2016-03-27 23:15 GMT+03:00 Бомбин Валентин <[hidden email]>:
Спасибо

--
С уважением, Бомбин Валентин
тел 79114208298


27.03.2016, 23:08, "Мохов Геннадий" <[hidden email]>:
> https://github.com/MGWL/QtE5
>
> forth.d - сам модуль форта. На его базе легко сделать DLL для C++
> forthdll.d - изготовление DLL
> и т.д....
>
> Я сейчас активно пишу связку D + Qt.5 и на примере консоли для своего форта (console5_forth.d) испытываю новые
> фишки Qt-5. Даже иногда появляются мысли, не написать ли IDE (но это скорее мечты). Сама консоль "разломана",
> так как пока только в задумках....
>
> Обращаю внимание!!! Форт работает только в 32 разрядном режиме!!! так как написан на 32 разрядном ассемблере.
> Ещё важный момент. Окружения (библиотек) НЕТ - написать или портировать не успел. Фактически нет консольного (комманднострочного) режима. Используется мной в основном, как средство изучения внутренностей Qt и работы
> с функциями Dll и so. В основном задумывался, как плагин для программ на D (C++).
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
> _______________________________________________
> Spf-dev mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/spf-dev

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev