Forth http://fforum.winglion.ru/ |
|
FORTH без FORTH http://fforum.winglion.ru/viewtopic.php?f=41&t=3006 |
Страница 2 из 2 |
Автор: | gudleifr [ Сб май 30, 2015 12:18 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
gudleifr писал(а): ТРЕТЬЕ ПРАВИЛО INCUBASIC: Избыточность однотипных вторичных машин может быть локализована в виде одинакового набора слов в СЛОВАРЕ Иллюстрация - попытка написать на Perl семейство автоматов, читающих тексты одного и того же формата, но обрабатывающего их по-разному. Добавляя разные массивы "p" к заранее размеченному словарю "состояние.символ", надеюсь реализовать все необходимые операции. Код: #!/usr/bin/perl
# МАШИНА: СОСТОЯНИЕ => [[СИМВОЛ, СОСТОЯНИЕ, СДВИГ], ...] %stats = (Garbage => [["^\\\\", "Path", 0], [0, 0, 1]], Path => [["^\$", "Param", 1], ["^. ", "Param", 0], ["^\\\\", 0, 1], ["^ТЕКСТ", "Text", 1], ["^ТАБЛИЦА", "Header", 1], ["^ЗАПИСИ", "Header", 1], [0, "Garbage", 0]], Header => [["^\$", "Text", 1], [0, 0, 1]], Text => [["^\$", "Param", 1], [0, 0, 1]], Param => [["^. ", 0, 1], ["^\\\\", "Path", 0], ["^\$", "Garbage", 1], [0, "Garbage", 0]]); # СЧИТЫВАНИЕ СИМВОЛА, ЕСЛИ ОН ЕЩЕ НЕ БЫЛ СЧИТАН sub ready { $reading = <FI> unless $reading; return 0 unless $reading; $reading =~ s/\s*\r?\n//; return 1 } # ОДИН ТАКТ РАБОТЫ sub step { my $l = $stats{$state}; # СОСТОЯНИЕ foreach (@$l) { my $s = $_->[0]; # СИМВОЛ if (!$s or $reading =~ /$s/) { $p->{$state . $s}() if exists $p->{$state . $s}; # ВЫВОД $state = $_->[1] if $_->[1]; # НОВОЕ СОСТОЯНИЕ $reading = 0 if $_->[2]; # СДВИГ return } } } # ФУНКЦИИ ВЫВОДА: СОСТОЯНИЕ.СИМВОЛ $p1 = {"Garbage^\\\\", sub { print "Garbage-Path:", $reading, "\n" }, "Param^\\\\", sub { print "Param-Path:", $reading, "\n" }, "Garbage0", sub { print "Garbage:", $reading, "\n" }}; # СЧИТЫВАЕМ ЛЕНТУ (ФАЙЛ) $s = shift @ARGV; $s .= ".txt"; $p = $p1; open FI, $s; $reading = 0; $state = "Garbage"; step() while ready(); close FI |
Автор: | KPG [ Вс май 31, 2015 10:42 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
Продолжение развития темы ИИ от Wormball Искусственная_жизнь_по-русски P.S. Может в этих материалах Форта больше без Форта? |
Автор: | gudleifr [ Вс май 31, 2015 11:10 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
KPG писал(а): ... И опять Вы со своим вечным "Я видел там слово Forth!". Хорошо, хоть не порно...
|
Автор: | KPG [ Вс май 31, 2015 11:24 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
gudleifr писал(а): KPG писал(а): ... И опять Вы со своим вечным "Я видел там слово Forth!". Хорошо, хоть не порно...Это Вы ничего не поняли пока (самого себя цитировать в сообщении и самому себе же отвечать на вопрос ... и на форуме никак не посвященном бэйсику и перлу) P.S. Почему это не в личном блоге? |
Автор: | gudleifr [ Вс май 31, 2015 11:35 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
KPG писал(а): ... Т.е. Вы просто не видите связи того, о чем я пишу, с Forth и поэтому забиваете тему мусором? Вместо того, чтобы спросить?
|
Автор: | KPG [ Вс май 31, 2015 11:43 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
gudleifr писал(а): KPG писал(а): ... Т.е. Вы просто не видите связи того, о чем я пишу, с Forth и поэтому забиваете тему мусором? Вместо того, чтобы спросить?Форт "метод" лучше иллюстрируется техниками использования в Бейсик или Perl языках? А может Tcl|Tk или других? |
Автор: | gudleifr [ Вс май 31, 2015 11:51 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
KPG писал(а): Форт "метод" лучше иллюстрируется техниками использования в Бейсик или Perl языках? А может Tcl|Tk или других? Очевидно, это зависит от того, какой из аспектов FORTH-метода Вас интересует.
|
Автор: | Hishnik [ Пн июн 01, 2015 01:24 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
KPG писал(а): Может в этих материалах Форта больше без Форта? Там из Форта только ссылка на википедию. Это опять попытка встать с плакатом "да здравствует Форт!" в надежде, что сейчас набегут программисты и начнут наперебой рассказывать, как Форт им помог в жизни. |
Автор: | gudleifr [ Ср июн 03, 2015 16:53 ] |
Заголовок сообщения: | Re: FORTH без FORTH |
Кстати, из раздела юмора. Эти "Perl-слова" для работы с текстом-деревом я связал через "стек". Это стек файлов: не указателей/манипуляторов/потоков, а честно файлов. На дне лежит d.txt (d - имя стека), на нем - d.txt.txt, выше - d.txt.txt.txt и т.д. SWAP организовывать не стал, добавил s2r и r2s (>R и R>), так гораздо удобнее. Основные типы "слов" на данный момент: Положить на стек пустой файл ( -- f0). Слияния ( f1,...,fn -- f). Несколько статистик ( f - f,s). И разбиений ( f,c -- f1,f2). Пока удобно... |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |