Forth http://www.fforum.winglion.ru/ |
|
Дополнения, изменения, ошибки. http://www.fforum.winglion.ru/viewtopic.php?f=25&t=1511 |
Страница 3 из 4 |
Автор: | WingLion [ Пт июл 03, 2009 21:00 ] |
Заголовок сообщения: | |
1. FORTH(0)>help drop Ошибка: Справка по данному слову отсутсвтует! <- опечатка и как-то стремно выглядит отсутствие справок для самых "ядерных" слов типа dup drop swap и т.п. 2. Kак поменять цвета в консоли белое на черном -> черное на белом ??? 3. из лога сборки: Попытка исполнения привелигированной операции поймана <- (привИлЕгия, а не привЕлИгия) 4. Надо бы сделать, чтобы номер версии менялся не по каждому запуску make.bat, а только при некой заданной опции |
Автор: | mOleg [ Пт июл 03, 2009 21:10 ] |
Заголовок сообщения: | |
WingLion писал(а): Ошибка: Справка по данному слову отсутсвтует! <- опечатка спасибо, исправил. WingLion писал(а): и как-то стремно выглядит отсутствие справок для самых "ядерных" слов типа dup drop swap и т.п это конечно плохо, но времени набрать всю доку не хватает. Если кто возьмется помочь... формат файла справки очень прост - надо только текст набрать WingLion писал(а): 2. Kак поменять цвета в консоли белое на черном -> черное на белом ??? уф, простейший метод в свойствах окна виндовса. Сам форк не трогает цвета (либа для работы с консолью в ближайших планах). WingLion писал(а): 4. Надо бы сделать, чтобы номер версии менялся не по каждому запуску make.bat, а только при некой заданной опции
тут я не согласен. мне удобнее именно так. в крайнем случае можете руками менять номер сборки, он хранится в файле .\version.spf спасибо за помощь ! |
Автор: | WingLion [ Пт июл 03, 2009 21:14 ] |
Заголовок сообщения: | |
mOleg писал(а): это конечно плохо, но времени набрать всю доку не хватает. Если кто возьмется помочь... формат файла справки очень прост - надо только текст набрать Smile а где он описан этот формат? И список слов без описаний надо тоже иметь под рукой... имхо, было бы неплохо сделать автомат, который по словам проходится и выдает рыбу для заполнения хелпа... mOleg писал(а): тут я не согласен. мне удобнее именно так. в крайнем случае можете руками менять номер сборки, он хранится в файле .\version.spf
А сделать опцию наоборот можно? в смысле, чтобы по какому-то специальному ключу батник версию не менял... |
Автор: | mOleg [ Пт июл 03, 2009 21:23 ] |
Заголовок сообщения: | |
WingLion писал(а): а где он описан этот формат? И список слов без описаний надо тоже иметь под рукой... список слов генерится при каждой сборке и находится в файле .\names.xrf сам файл справки называется .\_\doc\glossary.txt и с его форматом, я думаю, вы очень легко разберетесь просто заглянув в него WingLion писал(а): имхо, было бы неплохо сделать автомат, который по словам проходится и выдает рыбу для заполнения хелпа... в данном случае оно не нужно (см glossary.txt) WingLion писал(а): А сделать опцию наоборот можно? в смысле, чтобы по какому-то специальному ключу батник версию не менял...
я подумаю, хотя вам оно не особо надо, собрать исполнимый файл можно один раз и больше его не делать. Версия exe-шника будет стабильной |
Автор: | вопрос [ Вс ноя 01, 2009 17:10 ] |
Заголовок сообщения: | |
Ошибка в samples pp2.fts - \ 19.02.2009 ~mOleg \ æopyright [C] 2009 mOleg mininoleg@yahoo.com \ преобразование префиксной (не инфиксной?) записи в постфиксную запускаем форк Код: mOleg kernel fork(mininoleg@yahoo.com). build from SPF4.17 sources.
windows Version 4.09 Build 926 at 01.Nov.2009 fork.ini included FORTH(0)>samples/pp2.fts a+b+c+d == a b + c + d + a+ b+c+d == a b + c + d + a +b+c+d == a b + c + d + a + b+c+d == a b + c + d + (a+b+c)+d == a b + c + d + a+(b+c)+d == a b c + + d + a=b+c*d&e == a b c d e AND * + = a&b*c+d=e == a b AND c * d + e = a:b+(c*d) == a b c d * + ! [base+index*n]>0 == base index n * + @ 0 > Ok FORTH(0)> Ok FORTH(0)>expr a + b * ( a * ( c + d ) ) a + b * ( a * ( c + d ) ) == a b a c d + * Ok FORTH(0)> Как видим, собственные тесты код проходит благополучно, а на введенной вручную формуле спотыкается expr a + b * ( a * ( c + d ) ) a + b * ( a * ( c + d ) ) == a b a c d + * Ok теряются все операторы за скобками |
Автор: | mOleg [ Пт ноя 06, 2009 11:29 ] |
Заголовок сообщения: | |
ок, обязательно посмотрю. сейчас уже много правок от последней версии, при первой возможности выложу пока туго с инетом... да, когда один операнд перед операцией а другой после, то называется это инфиксной, если перед, как в лиспе, то префиксной, а если после, как обычно, то постфиксной. |
Автор: | _Harry [ Вт авг 17, 2010 18:03 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
Если транслируется файл Код: Cr_ PARSE test Перепрыгивает на другую строку и дает строку такую же как - s" \rtest" Надо как то поправить |
Автор: | mOleg [ Вт авг 17, 2010 19:16 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
_Harry писал(а): Перепрыгивает на другую строкуи дает строку такую же как - s" \rtest"Надо как то поправить достаточно написать Lf_ PARSE дело в том, что следующий за PARSE символ (символ разделитель) автоматически пропускается. Это действительно для всех фортов, так что исправлять нечего (правда, отличие будет в том, что текст загружается обычно построчно, в форке же он целиком в памяти). Либо, как вариант, за PARSE оставлять хотя бы пробел |
Автор: | _Harry [ Вт авг 17, 2010 23:55 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
mOleg писал(а): за PARSE оставлять хотя бы пробел Ну да а редактор их удалит и правильно сделает mOleg писал(а): достаточно написать Ну а Cr_ значит самому удалять кстати его может и не быть т.е.Lf_ PARSE надо еще и проверку делать Ну только как обходной вариант пойдет. mOleg писал(а): дело в том, что следующий за PARSE символ (символ разделитель) автоматически пропускается. Это действительно для всех фортов, А в описании об этом сказано?Помоему это пример "плохой автоматики"! Почему собственно надо пропускать первый символ? mOleg писал(а): так что исправлять нечего Как минимум надо поправить описание PARSE. Ну или привести в соответствие с описанием поведение.
|
Автор: | вопрос [ Ср авг 18, 2010 00:27 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
Не пойму в чём проблема - перенос строки не рассматривается как разделитель? |
Автор: | _Harry [ Ср авг 18, 2010 03:00 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
вопрос писал(а): Не пойму в чём проблема mOleg писал(а): следующий за PARSE символ (символ разделитель) автоматически пропускается. А его на самом деле нет и поэтому переход на следующую строкуперескакивает т.е. находится на 1 строку позже см. пример выше. |
Автор: | mOleg [ Ср авг 18, 2010 09:58 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
_Harry писал(а): А его на самом деле нет и поэтому переход на следующую строкуперескакивает т.е. находится на 1 строку позже см. пример выше. это не проблема, точнее надуманная проблема. Реально, либо сначала ищется конец строки и потом отдельно "разбирается строка", такие примеры в форке есть, либо после PARSE (либо использующего PARSE слова) находится хотя бы одна лексема. _Harry писал(а): mOleg писал(а):за PARSE оставлять хотя бы пробел Ну да а редактор их удалит и правильно сделает да, это так, можно защищаться от редактирования таким образом _Harry писал(а): Ну а Cr_ значит самому удалять кстати его может и не быть т.е.надо еще и проверку делать удалять не надо ничего. Собственно, я так понимаю, ты хочешь, чтобы у тебя текст типа: #define bla #define lala something не приводил к "побочному эффекту"? в данном случае можно так: CharAddr <C C@ Cr_ = IF ." пустая строка" ELSE ." непустая строка" THEN _Harry писал(а): А в описании об этом сказано?Помоему это пример "плохой автоматики"! Почему собственно надо пропускать первый символ? Нет, но я и не видел, чтобы где-нибудь это было описано Тем не менее замечание правильное, дополнения в доку внесу. а вообще естественно: ты выбираешь строку до указанного разделителя, после чего, разделитель тебе уже не нужен, возьми тот же пример с ." " ,где [CHAR] " PARSE если бы PARSE не пропускало разделительную " , то дальше бы вылазила ошибка. Вобщем, это не баг - это фича |
Автор: | _Harry [ Ср авг 18, 2010 15:05 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
mOleg писал(а): Вобщем, это не баг - это фича Хм ну да все вроде так но какой то неприятный "осадок" от этого остается.mOleg писал(а): в данном случае можно так: Попробую так
CharAddr <C C@ Cr_ = IF ." пустая строка" ELSE ." непустая строка" THEN |
Автор: | mOleg [ Ср авг 18, 2010 15:23 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
_Harry писал(а): Хм ну да все вроде так но какой то неприятный "осадок" от этого остается. ну, осадка быть не должно, по крайней мере альтернативное поведение разбора будет гораздо хуже, т.к. в куче мест придется править привычный сложившийся код, причем, поведение ведь вполне логичное, я лично не могу представить почему у тебя получается обсуждаемая проблема. |
Автор: | _Harry [ Ср авг 18, 2010 18:04 ] |
Заголовок сообщения: | Re: Дополнения, изменения, ошибки. |
mOleg писал(а): я лично не могу представить почему у тебя получается обсуждаемая проблема. Потому что это не форт а Си (не к ночи будь помянут...)Код: #define __name__ Очень распространеная вещь#ifdef __name__ ... ... #else ... ... #endif Просто определяется то или иное имя без соответствующей строки. и используется для условной компиляции. |
Страница 3 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |