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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 148 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10  След.
Автор Сообщение
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пн июл 12, 2010 14:52 
Не в сети
Moderator
Moderator
Аватара пользователя

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пн июл 12, 2010 17:51 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Рановато я обрадовался.
Еще какой то странный глюк обнаружился.
Хотел сделать чтобы часть операторов просто вызывала ошибку.
Ну например так:
Код:
\ ---------Это в конце списка операторов ---------------
: ,  ERROR" Ошибка!!!"
; Теперь в консоли набираем
Код:
s" 1 ,  2"  >postfix TYPE
получаем дергающуюся надпись :hey;
что то про "неправильный дескриптор" . Т.е. она циклически выводится видимо и система висит.
Если эта же строка в файле то ошибка обрабатывается.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пн июл 12, 2010 19:20 
Не в сети
Moderator
Moderator
Аватара пользователя

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

очень интересно! занимаюсь

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Вт июл 13, 2010 17:45 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
очень интересно! занимаюсь

А вот это тоже интересно
Код:
s" -1" >postfix TYPE
1 -  ok (0)
s" 2 + -1" >postfix TYPE
2     + 1 -  ok (0)

Так то вот >postfix понимает отрицательные числа
Чего то надо с этим делать :hey;


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
_Harry писал(а):
А вот это тоже интересно Код:s" -1" >postfix TYPE1 -  ok (0)s" 2 + -1" >postfix TYPE2     + 1 -  ok (0)Так то вот >postfix понимает отрицательные числа

гм, ну, тут достаточно понятно. На сколько помню, запись типа a+-б не встречается, а встречается a+(-б).
За разбор лексем отвечает:
: GetOp ( --> operand 0 | addr true ) separators xWord DUP IFNOT DDROP GetSep THEN ?operator ;
кстати, для того, чтобы отловить подобную ситуацию, необходимо анализировать предыдущий символ, либо использовать другой символ, например: a+!b ;)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Вт июл 13, 2010 20:50 
Не в сети
Moderator
Moderator
Аватара пользователя

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

проблема локализована и исправлена, берем последнюю сборочку;

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Вт июл 13, 2010 22:30 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
На сколько помню, запись типа a+-б не встречается, а встречается a+(-б).

Хм а как вам это покажется: :wink:
#define NegConst -1500
вполне себе возможная ситуация.
Другой так же вполне возможный вариант:
#define ЧегоТоТам что_Ни_будь * -40
Скобки совсем не обязательны если отрицательное число отделено пробелом.
mOleg писал(а):
либо использовать другой символ, например: a+!b

Это чисто теоретический вариант меня же интересует трансляция готовых файлов с определенным синтаксисом.

А по сему
mOleg писал(а):
необходимо анализировать предыдущий символ

Это в точку! Но я пока не придумал как.


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

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

Достаточно преобразовать файл, поделав пробелы перед минусами в случае сдвоенных операторов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Ср июл 14, 2010 00:47 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
вопрос писал(а):
Достаточно преобразовать файл, поделав пробелы перед минусами в случае сдвоенных операторов

Если бы все было так просто :roll:
Пока что >postfix этого не понимает см. скриншоты выше


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Ср июл 14, 2010 03:51 
Не в сети
Moderator
Moderator
Аватара пользователя

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

ну, тут достаточно все просто:

CharAddr \ вернет адрес текущего символа (т.е. первого неразобранного)
<C \ позволит сместиться на один символ назад (точнее получить его адрес)
правда, нужно еще будет предусмотреть невыход за пределы буфера ввода.
SOURCE \ возвращает адрес начала буфера и его длину

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Ср июл 14, 2010 10:15 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
_Harry писал(а):
Хм а как вам это покажется: #define NegConst -1500 вполне себе возможная ситуация.

кстати, если подумать, то не так уж и серьезно оно, точнее, оно все интересно:

s" -1500" >postfix TYPE
выдаст 1500 - , что вобщем-то верно!
то есть, если это самое 1500 - попадет в код, то результат будет в ряде случаев верен ;)

вобщем, по большому счету надо писать 2*(-3) и смотреть есть ли после скобки знак числа и само число!

кстати, если: 3*(-a) , то уже не знак числа, а операция над 'a' будет, т.е. приходим таки к: '0 a -' или '!a'.

Такие вот мысли

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Ср июл 14, 2010 10:29 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
mOleg писал(а):
_Harry писал(а):
Хм а как вам это покажется: #define NegConst -1500 вполне себе возможная ситуация.

кстати, если подумать, то не так уж и серьезно оно, точнее, оно все интересно:

s" -1500" >postfix TYPE
выдаст 1500 - , что вобщем-то верно!
то есть, если это самое 1500 - попадет в код, то результат будет в ряде случаев верен ;)

вобщем, по большому счету надо писать 2*(-3) и смотреть есть ли после скобки знак числа и само число!

кстати, если: 3*(-a) , то уже не знак числа, а операция над 'a' будет, т.е. приходим таки к: '0 a -' или '!a'.

Такие вот мысли

Вобще - это ровно одно ветвление - если операторы подряд, то пытаемся распознать число как отрицательное, если не распознаётся - ошибка
ИМХО


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Ср июл 14, 2010 11:10 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
вопрос писал(а):
то есть, если это самое 1500 - попадет в код, то результат будет в ряде случаев верен

И самое "хорошее" что в большинстве случаев неверен.
вопрос писал(а):
Вобще - это ровно одно ветвление - если операторы подряд, то пытаемся распознать число как отрицательное, если не распознаётся - ошибка

Все было бы хорошо, если бы небыло так плохо.
Вобщем вывод такой >postfix это только набросок, практически в готовом виде использовать нельзя.
Потому как еще один недостаток виден операторы считаются разделителями а они в xWord.fts могут быть только
односимвольными :!:
В реальных синтаксисах есть и многосимвольные операторы например:
>> << => <=
Т. е. начинать надо с этого, а ситуацию обработки знака числа отлавливать отдельно. Мне видится несколько способов,
так что это не проблема.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Ср июл 14, 2010 11:18 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Все было бы хорошо, если бы небыло так плохо.
Вобщем вывод такой >postfix это только набросок, практически в готовом виде использовать нельзя.
Потому как еще один недостаток виден операторы считаются разделителями а они в xWord.fts могут быть только
односимвольными
В реальных синтаксисах есть и многосимвольные операторы например:
>> << => <=
тогда смотрим моё решение (оно самое первое) - может быть удастся его использовать - оно как-раз заготовка к реальной программе и работает при самых рапзных образцах строк (ошибки тоже распознаёт)

Я вспомнил, что там есть проблемы и описание моё ... хм, несколько сложновато
на самом деле
задаём две строки - пользуемся
а я на страницу...
но при желании всё можно понять

и файл, положенный на onlinedisk
исчез, :o :(
но там всё понятно


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Так :idea: >postfix от mOleg-а переделал на многосимвольные операторы.
Надо еще решить прамблему со знаком числа и тогда выложу, дабы каждый мог ногами попинать :cry: .
Но сегодня от этой жары мозги отказываются работать напрочь.


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

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


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

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


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

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