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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Сб май 30, 2015 12:18 
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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Вс май 31, 2015 10:42 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 891
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
Продолжение развития темы ИИ от Wormball
Искусственная_жизнь_по-русски

P.S. Может в этих материалах Форта больше без Форта? :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Вс май 31, 2015 11:10 
KPG писал(а):
...
И опять Вы со своим вечным "Я видел там слово Forth!". Хорошо, хоть не порно...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Вс май 31, 2015 11:24 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 891
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
gudleifr писал(а):
KPG писал(а):
...
И опять Вы со своим вечным "Я видел там слово Forth!". Хорошо, хоть не порно...

Это Вы ничего не поняли пока :)
(самого себя цитировать в сообщении и самому себе же отвечать на вопрос ... и на форуме никак не посвященном бэйсику и перлу)

P.S. Почему это не в личном блоге?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Вс май 31, 2015 11:35 
KPG писал(а):
...
Т.е. Вы просто не видите связи того, о чем я пишу, с Forth и поэтому забиваете тему мусором? Вместо того, чтобы спросить?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Вс май 31, 2015 11:43 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 891
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
gudleifr писал(а):
KPG писал(а):
...
Т.е. Вы просто не видите связи того, о чем я пишу, с Forth и поэтому забиваете тему мусором? Вместо того, чтобы спросить?

Форт "метод" лучше иллюстрируется техниками использования в Бейсик или Perl языках? А может Tcl|Tk или других?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Вс май 31, 2015 11:51 
KPG писал(а):
Форт "метод" лучше иллюстрируется техниками использования в Бейсик или Perl языках? А может Tcl|Tk или других?
Очевидно, это зависит от того, какой из аспектов FORTH-метода Вас интересует.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Пн июн 01, 2015 01:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6418
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
KPG писал(а):
Может в этих материалах Форта больше без Форта?

Там из Форта только ссылка на википедию. Это опять попытка встать с плакатом "да здравствует Форт!" в надежде, что сейчас набегут программисты и начнут наперебой рассказывать, как Форт им помог в жизни.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH без FORTH
СообщениеДобавлено: Ср июн 03, 2015 16:53 
Кстати, из раздела юмора. Эти "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).
Пока удобно...


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

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


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

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


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

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