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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 16, 2009 16:59 
Не в сети

Зарегистрирован: Вс авг 16, 2009 13:05
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник
Спасибо тебе. Отлично, теперь не нужно возиться с аргументами. Это то, что я хотел. Тему можно закрывать.


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
WingLion писал(а):
Или наворачивать многопроходную компиляцию.

где-то у нас была тема, где в словах остаются пустые места, в которые потом добавляются вызовы


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

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

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
hardreset писал(а):
Цитата:
И чем не нравится явная рекурсия?

Я пишу интерпретатор лиспа на форте и неявная (перекрестная) рекурсия мне необходима.

вот интересно - это проект для чего-то (цель реализации одного языка на другом)?


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

Зарегистрирован: Вс авг 16, 2009 13:05
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
вопрос писал(а):
вот интересно - это проект для чего-то (цель реализации одного языка на другом)?

Цель: получить быстрый интерпретатор лиспа (виртуальную машину), абсолютно переносимый, маленький и красивый. Форт идеально вписывается в мои требования. Конечно, можно написать интерпретатор лиспа и на самом лиспе, но это будет медленно работать, а мне это не подходит. На Си тоже не катит, не люблю я Си, он некрасивый (имхо) и слишком сложный (на мозги давит), что не соответствует мои требованиям...

Потом (может быть), для этой виртуальной машины будет написана ОСа... И основная фишка в том, что программы (на лиспе) будут выполняться прямо из исходников, без компиляции. Поэтому мне нужна очень качественная реализация (чтоб скорость была нормальной). И еще, это будет нетривиальная реализация лиспа (надеюсь): я собираюсь выкинуть из ядра интерпретатора все особые формы (define, quote, lambda, if и т.д.) и оставить только процедуры. При этом особые формы будут доступны, но реализованы не в ядре интерпретатора...

Ой, чего-то я разговорился, извините если что.


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
я собираюсь выкинуть из ядра интерпретатора все особые формы

обращаю внимание mOleg - это лиспа форк


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

Зарегистрирован: Вс авг 16, 2009 13:05
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
вопрос писал(а):
лиспа форк

Это не форк, всё пишется с нуля.


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

Зарегистрирован: Сб янв 26, 2008 18:23
Сообщения: 71
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
компилятор не обязательно делать истинно многопроходным
достаточно - не выходя за рамки форта - изменить только обработчик исключений разбора входного потока таким образом чтобы все синтаксические ошибки запоминались в дополнительном специальном словаре до конца компиляции со всей необходимой для линковки информацией. И в конце файла необходимо чтобы вызывался редактор скомпилированных словарных статей который бы определил была ли это ошибка, косвенная рекурсия или раннее объявление..


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Jelsay писал(а):
достаточно - не выходя за рамки форта - изменить только обработчик исключений разбора входного потока таким образом чтобы все синтаксические ошибки запоминались

Недостаточно! Есть еще и восстановление после ошибок, которое в общем случае нетривиально. :(

_________________
With best wishes, in4.


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

Зарегистрирован: Сб янв 26, 2008 18:23
Сообщения: 71
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
in4 писал(а):
Недостаточно!

ну хорошо.. а что бы предложили Вы?

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


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Jelsay писал(а):
ну хорошо.. а что бы предложили Вы?
Можно сказать, Форт - язык для создания языков. Поэтому можно, оставаясь в рамках Форт-синтаксиса (слова разделены пробелами, табуляциями и переводами строк), работать с довольно сложными языками предметной области.
Есть некоторые неудобства - запись становится разреженная. Я пока на такой и остановился. Если интересно, можно об этом поговорить. ;)

Для работы со взаимными рекурсиями есть VECT, стек компиляции, бэктрекинг и можно добавить собственные конструкции! ;)

Jelsay писал(а):
решал задачу классической компиляции моего варианта форта к 83-му стандарту
Мне интересно взглянуть на исходный вариант, может, найду что новое для себя... ;)
Желательно также пояснения, почему были выбраны именно такие решения по исходному синтаксису. Свои решения я объяснить могу. ;)

Форт ориентирован на инкрементальную разработку (постепенное развитие с использованием ранее сделанного) и последовательную интерактивную отладку (тесное взаимодействие с программистом). Поэтому я не вижу большого смысла в многопроходной компиляции. Если есть ошибка, ее желательно быстро исправить, а не ждать, покаааа докомпилируется остальное, ведь там наверняка будут еще и наведенные ошибки. Такой подход упрощает (и ускоряет) компилятор! :)
Как вариант - можно на Форте написать конвертор (программа, преобразующая исходник на одном языке программирования в исходник на другом языке программирования) и работать с учетом этого. Хотя я предпочитаю отладку в терминах предметной области... ;)

_________________
With best wishes, in4.


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

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

замечательно! а можно про это рассказать на форуме (если можно то и с исходниками). Тема очень интересная, и для нее не жаль отдельную ветку обсуждения завести.

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


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

Зарегистрирован: Сб янв 26, 2008 18:23
Сообщения: 71
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
эх..если бы у меня остались исходники.. но увы..

могу только вспомнить общий смысл - как всегда решений было куча: от вполне фортовского перехвата фрагмента входного потока и разбора его в служебном буфере, который потом отдавался на "растерзание" Interpret-у. - до написания отдельной служебной утилиты которая конвертировала мой исходный текст в нечто съедобное ларионовскому gp-forthy - первому который мне попался для i8086 после ДВК.

P.S.
кстати этот ларионовский форт ещё запомнился тем что был первым моим кряком - там защита была дурацкая которая заставляла таскать за компилятором весь пакет файлов включая *.doc, а дискеты то были по 360 кБ..


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
in4 писал(а):
Форт ориентирован на инкрементальную разработку (постепенное развитие с использованием ранее сделанного) и последовательную интерактивную отладку (тесное взаимодействие с программистом). Поэтому я не вижу большого смысла в многопроходной компиляции. Если есть ошибка, ее желательно быстро исправить, а не ждать, покаааа докомпилируется остальное, ведь там наверняка будут еще и наведенные ошибки. Такой подход упрощает (и ускоряет) компилятор!


С некоторых пор, я ассемблеры делаю 2 проходными, именно ради упрощения.
При этом для ссылок вперед по сути являются векторными переменными.
Однако, многие языки в рамках Форта, хотелось бы иметь в виде конвертеров в польскую запись.
Причем, результат обработки очередной (каждой) строки можно подать на вход интерпретатору (команде EVALUATE).
Т.е. целесообразность применения многопроходности зависит от реализуемого языка.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Jelsay писал(а):
лично я, забодавшись с некоторыми особенностями форта

Если нетрудно, напишите - с какими?

_________________
С уважением, chess


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

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


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

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


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

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