Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 13:19

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: гипер-расширяемость до других языков...
СообщениеДобавлено: Пн авг 04, 2008 08:41 
Не в сети

Зарегистрирован: Пт авг 01, 2008 02:20
Сообщения: 33
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
были такие програмулины - yacc, bison; цель которых облегчать программирование синтаксиса языков. В среднем смысл их был таков:

Код:
CODE: CMD CODE | CMD ;
CMD: (NAME ":=")? EXPR ";";
EXPR: NAME
       | EXPR "*" EXPR
       | EXPR "+" EXPR
       | EXPR "/" EXPR
       |...;


и таким образом описываются все структуры языка. Любой структурный (вроде так это называется) язык можно описать за пару часов со всеми его нюансами (насколько его знаешь).
Вопрос: почему под форт такой вещи нету (я не видел упоминания), хотя форт отчасти позиционируется под замещение других языков?
да и многие другие решило бы моменты, которые сейчас делаются более сложными вещами.

пусть есть
S" описание языка Х" APPLYLANGUAGE
и дальше программируем на описаном языке.
или
S" описание языка Х" S" подпрограмма на языке Х" RUNLANGUAGE

Как это должно выполняться: в указанный синтаксис делаются вставки типа

NAME: {pos_parse @} "[a-z_][a-z0-9_]*" {OVER -} ;
/ в результате в стеке получаем указатель на имя и его длину

весь шаблон компилится в байт-код (компиляция этой штуки во многом похожа на компиляцию регулярных выражений), после применяется к коду языка Х, тоже подобно рег.выражениям. В результате применения формируется список из фортовских вставок, которые последовательно выполняются, перед выполнением каждой вставки перемещаем pos_parse на нужную позицию.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: гипер-расширяемость до других языков...
СообщениеДобавлено: Пн авг 04, 2008 09:14 
victor79 писал(а):
были такие програмулины - yacc, bison; цель которых облегчать программирование синтаксиса языков.

Вопрос: почему под форт такой вещи нету (я не видел упоминания), хотя форт отчасти позиционируется под замещение других языков?
да и многие другие решило бы моменты, которые сейчас делаются более сложными вещами.

.


Для Форта тоже есть:) И ищется по двум ключевым словам BNF Forth
Например в gforth ecть BNF парсер gray5

P.S. Не хватает, возможно, продукта для пользователя подобного ANTLR, Gold Parser
и др.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 04, 2008 09:38 
Не в сети

Зарегистрирован: Пт авг 01, 2008 02:20
Сообщения: 33
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
а что за продукты ANTLR и Gold Parser в двух словах?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 04, 2008 11:44 
victor79 писал(а):
а что за продукты ANTLR и Gold Parser в двух словах?


Генераторы парсеров.

P.S. Поисковик может дать больше информации.
Граматики разбора можно отлаживать и визуализировать.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 04, 2008 13:06 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
victor79 писал(а):
Код:

CODE: CMD CODE | CMD ;
CMD: (NAME ":=")? EXPR ";";
EXPR: NAME
| EXPR "*" EXPR
| EXPR "+" EXPR
| EXPR "/" EXPR
|...;


и таким образом описываются все структуры языка.


Во первы это описывает только синтаксис, нужно като задать семантику.
Может это описание достаточно наглядно, но наглядность вещь субъективная.
Жесткое описание не самое компактное. Его можно сократить за счет избыточных возможностей.
(эти возможности могут оказаться полезными).
На пример мое расширение Форта для применения инфиксной со скобками записи

http://spf.cvs.sourceforge.net/spf/deve ... iew=markup

выражение
Код:
_INF_  { 1+2*(1+TTT) } .

можно заменить на
Код:
_INF_  { 1+ 2 (1 TTT +)*  } .


Но пользователю этого можно и не знать.

Обрати внимание на размер текста infix.f, при том, что определения SCAN PASS\N MTOKEN
могут иметь общее назначение (могут применяться в других программых).

Смысл Форта в том, что слова-команды, из которых состоит форт-система независимы друг от друга.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 04, 2008 21:27 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
дело в том, что на самом деле так делать не дело ;)
А именно: нет необходимости в форте создавать другие языки!
Надо создавать ограниченные лексиконы, достаточные для решения задачи, спроектированные так, чтобы можно было легко расширять их функциональность.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 05, 2008 12:12 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
mOleg писал(а):
нет необходимости в форте создавать другие языки!


Если другие языки нужны, то форте-окружение их не испортит.
Дополнительные возможности не могут быть недостатками по определению.
Чем ограниченные лексиконы не другие языки?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 05, 2008 21:18 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Mihail писал(а):
mOleg писал(а):нет необходимости в форте создавать другие языки!
Если другие языки нужны, то форте-окружение их не испортит.

Согласен.

Mihail писал(а):
Дополнительные возможности не могут быть недостатками по определению.

могут. Определение тут не при чем. Слишком много "фич" тоже плохо - сложно вникать.

Mihail писал(а):
Чем ограниченные лексиконы не другие языки?

так сразу и не скажу :)
лексиконы проще других языков (обычно), лексиконы наследуют форт-идеалогию, в то время как другие языки основаны на собственной.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 05, 2008 22:47 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
mOleg писал(а):
Слишком много "фич" тоже плохо - сложно вникать.

При наличии хорошей и удобной документации это совсем не так. Пример ннкрон - более 3500 тысяч слов, реально используемых конечно несколько сотен, и документация очень хоршая.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 05, 2008 23:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
VoidVolker писал(а):
mOleg писал(а):
Слишком много "фич" тоже плохо - сложно вникать.

При наличии хорошей и удобной документации это совсем не так. Пример ннкрон - более 3500 тысяч слов, реально используемых конечно несколько сотен, и документация очень хоршая.

Речь не столько о фичах, сколько о минимально необходимом ядре языка. Если ядро развесистое и навороченное, пользоваться им неудобно, потому что надо очень много всего учесть. Особенно если язык доведен сразу до состояния бейсикосипаскальфортранолиспа - куча доступных слов будет только мешать транслятору распознать опечатку. А вот "несколько сотен реально используемых слов" из 3500 - нормальное соотношение. Это уже ядро плюс некие специализированные навороты, в которые можно углубиться при необходимости.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 06, 2008 16:33 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Хищник писал(а):
Особенно если язык доведен сразу до состояния бейсикосипаскальфортранолиспа - куча доступных слов будет только мешать транслятору распознать опечатку.


Вроде никто не предлагал валить все в одну кучу. Хотя комуто, может понадобится подобная смесь.
Следует организовать вставки других языков. Желательно, чтобы в результате компиляции новые программы
представлялись в виде словарных статей.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 06, 2008 16:46 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Mihail писал(а):
Вроде никто не предлагал валить все в одну кучу. Хотя комуто, может понадобится подобная смесь.
Следует организовать вставки других языков. Желательно, чтобы в результате компиляции новые программы
представлялись в виде словарных статей.

Только все это проходит по категории "Форт ради Форта" и никак не помогает писать эффективные программы. Введение других языков в Форт декларируется уже очень давно, без сколько-нибудь существенного полезного выхода. И дело не в том, что можно или нельзя, а в том, что сама постановка вопроса говорит о нежизнеспособности направления на практике.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: гипер-расширяемость до других языков...
СообщениеДобавлено: Пн янв 26, 2009 08:55 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
victor79 писал(а):
были такие програмулины - yacc, bison; цель которых облегчать программирование синтаксиса языков.


Для Форта grace на основе gray5 - несколько утилит и для BNF
http://www.qlikz.org/forth/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 26, 2009 20:06 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
Введение других языков в Форт декларируется уже очень давно, без сколько-нибудь существенного полезного выхода.
Концепция незавершённая, потому и ... без сколь-нибудь

_________________
понимаю некоторую бестолковость некоторых вопросов


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

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB