Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт сен 20, 2018 08:45

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: О расцветке Форт-исходников на форуме
СообщениеДобавлено: Вт май 08, 2007 20:55 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Начинаю попытку делать расцветку для форт-исходников на форуме.

Поэтому здесь попрошу постить правила расцветки.

Пока напишу те, которые будуе делать для начала.

1. начало расцветки - тег : [colorer]
2. окончание расцветки - тег: [/colorer]

внутри тегов правила подсветки такие:

1. Коментарий, начинающийся с одиночного слеша / до конца строки
2. Коментарий, начинающийся с одиночной скобки ( до последующей закрывающий скобки
(цвет коментариев - оранжевый(?))

3. слова немедленного исполнения (список слов этих слов еще надо составить) выделяются цветом (каким именно?)

4. Стандартные Форт-Определения, начинающиеся с : и заканчивающиеся ; выделяются цветом (каким именно?)

5. Прошу расписать, какие еще нужны правила расцветки?

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт май 08, 2007 21:05 
Цитата:
Стандартные Форт-Определения, начинающиеся с : и заканчивающиеся ; выделяются цветом (каким именно?)

Не, скорее, нужно выделять только название.

Числа. Строки.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт май 08, 2007 21:10 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
название чего именно?

Нужны конкретные примеры, чтобы понять!

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт май 08, 2007 21:13 
: название
ля ля тополя
123 \ комментарий
S" строка"
;


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт май 08, 2007 21:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
примерно понял, что надо, буду думать, как это на php сделать...

начал делать php-функцию. Пока она вот такая:
Код:
function colorer($text){
// immediate слова
$immediate[0] = "IF";
$immediate[] = "THEN";
$immediate[] = "ELSE";

// начало расцветки
   $text = str_replace('[colorer]','<pre>',$text);
// конец расцветки
   $text = str_replace('[/colorer]','</pre>',$text);
// проверки на правильную последовательность тегов - пока нету

// цикл с выделением IMMEDIATE слов
$i = 0;
while (isset($immediate[$i])){
   $text =
// заменить все вхождения слова $immediate[$i] на подсвеченные
str_replace($immediate[$i],'[color=red]'.$immediate[$i].'[/color]',$text);
$i++;
}

return ($text);};


_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт май 08, 2007 23:32 
Вот. Список слов по категориям. Всё остальное в схеме расцветок Colorer'а распознаётся регулярными выражениями.
Код:
forWord
CLOSE-FILE CREATE-FILE-SHARED CREATE-FILE DELETE-FILE FILE-POSITION FILE-SIZE FORTH-WORDLIST GET-CURRENT GET-ORDER INCLUDE-FILE OPEN-FILE-SHARED OPEN-FILE READ-FILE READ-LINE REPOSITION-FILE RESIZE-FILE SEARCH-WORDLIST SET-CURRENT SET-ORDER SOURCE-ID TO-LOG WRITE-FILE WRITE-LINE
forWord
0</ 0<>/ 0= 0! << >> -> 1+ 2+ 1- 2- D+ D. D0= D< D>S S>D C! C, C/L C@ C@ >BODY >IN >NUMBER >R -ROT -TRAILING <# <> +! ", */ #>
forWord
#S #TIB */MOD /MOD 2/ 2>R FM/MOD R/O R/W SM/REM U>D UM/MOD W/O
forWord
! .S # (.") (ABORT") * + , - . .0 ?COMP 2DROP 2DUP 2LITERAL 2OVER 2R> 2R@ 2SWAP < = > ?DUP @ ABORT ABS ACCEPT ALIGN ALIGNED ALLOCATE ALLOT ALSO AND ASCIIZ> AT BASE BETWEEN BL BLK BUFFER: BYE CATCH CELL CELL+ CELL- CELLS CHAR CHAR+ CHARS CLITERAL CMOVE CMOVE> COMPARE CONTEXT COUNT CR CURRENT DABS DECIMAL DEFER DEFINITIONS DEPTH DIGIT DNEGATE DP DROP DUMP DUP EKEY EKEY? EMIT ENVIRONMENT? END-CODE ERASE EXECUTE EXIT EVALUATE FALSE FIELD FILL FIND FORTH FREE HANDLER HEADER HERE HEX HIDE HLD HOLD IMMEDIATE INCLUDED INTERPRET INVERT IS KEY KEY? LATEST LEAVE LITERAL LSHIFT M* MAX MIN MOD MOVE NAME> NEGATE NIP NLIST NOOP NOT ONLY OR ORDER OVER PAD PARSE PICK PREVIOUS QUIT R0 ROLL R> R@ RDROP RECURSE REFILL RESIZE ROT RP! RP@ RSHIFT S0 SEARCH SIGN SKIP SLITERAL SMUDGE SOURCE SP! SP@ SPACE SPACES STATE SWAP THROW TIB TRUE TUCK TYPE U. U/ U< U> UM* UMOD W! W, W@ WARNING WITHIN WORD WORDLIST WORDS XOR COMPILE INCLUDE VOCS NextWord SFIND HALT OK LT LTL
forWord
F! F* F+ F. F, F- F/ F< F= F> F@ FABORT FABS FALIGN FALIGNED FDEPTH FDROP FDUP FEXP FLN FLG FLITERAL FLOATS FMAX FMIN FNEGATE FSWAP
forExtWords
!nt @nt br+ br- br0 ddo decode-2int decode-int decode-phys decode-string device-name DICTLIST encode+ encode-2int encode-bytes encode-int encode-phys encode-string end0 end1 ex ex+ ex- ex0 external finish-device headers if+ if- if0 my-self NAMEBASE new-device PROPERTY rp TVOCABULARY
forResWord
OF ENDOF CASE END-CASE ENDCASE IF ELSE THEN BEGIN WHILE REPEAT BEGIN UNTIL AGAIN RECURSE ?DO DO +LOOP LOOP UNLOOP I J LEAVE DOES> {{ }}
forWord
: ' ... WINAPI: CREATE VARIABLE USER CONSTANT VOCABULARY VECT VALUE FVALUE -- CODE REQUIRE


(что такое forWord -- не знаю, за что купил.. В смысле что выдрал из xml-ки)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О расцветке Форт-исходников на форуме
СообщениеДобавлено: Ср май 09, 2007 08:15 
Не в сети

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
WingLion писал(а):
Начинаю попытку делать расцветку для форт-исходников на форуме.

учитывая один из базовых принцпов кодинга на Форте -- расширение до задаче-ориентированного языка -- сделать подцветку нереально :-)

_________________
http://akps.ssau.ru/forth/


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

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
WingLion писал(а):
примерно понял, что надо, буду думать, как это на php сделать...

учитывая популярность этого форумного движка (phpbb если не ошибаюсь), разве еще не сделали автоколорер для тега code ?

_________________
http://akps.ssau.ru/forth/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 09, 2007 08:58 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
forth@km.ru писал(а):
учитывая один из базовых принцпов кодинга на Форте -- расширение до задаче-ориентированного языка -- сделать подцветку нереально Smile


Tak это, что, значит, бросать это "грязное дело?"

forth@km.ru писал(а):
учитывая популярность этого форумного движка (phpbb если не ошибаюсь), разве еще не сделали автоколорер для тега code ?


Не понял... А как же первое утверждeние про нереальность? :shock:

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вс окт 15, 2006 13:05
Сообщения: 149
Откуда: Украина, Киев
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
описание подключения colorer-а к форуму: http://forum.dklab.ru/about/todo/ThereIsAnIdeaToAddRaskraskuForPiecesOfACode.html
но есть один недостаток -- требует установки и запуска бинарника

Есть уже разработанный JS -скрипт который прямо в браузере выполняет подсветку синтаксиса. Пока не разбирался : http://softwaremaniacs.org/soft/highlight/ но описание заманчиво :)

поставил FF расширение, не срабатывает:
- нет Forth в списке поддерживаемых языков :(
- фрагменты кода оформлены без тегов
Код:
< pre >< code >...< /code >< /pre >
и поэтому скрипт не срабатывает...

Думаю, что использование этого скрипта -- самый оптимальный вариант.

Шо скаже шановне панство? :)


Последний раз редактировалось AlexF Ср май 09, 2007 11:06, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 09, 2007 10:58 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
с запуском бинарника - не хочется рисковать.
Мало ли чего произойдет, и выкинут с хоста из-за какого-нибудь левого бага...

К тому же, мне не кажется слишком тяжелым способ раскрашивания через php-функцию.
Начало уже сделал, а дальше посмотрим.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 09, 2007 11:55 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Ерунда какя-то. Вроде, постил последний вариант функции, а моего сообщения не видно :(

последний вариант colorer.php:
Код:
<?php


function colorer($text){

// слова с < > #  = ' обрабатываются отдельно!
// слова
$words[0] = 'CLOSE-FILE CREATE-FILE-SHARED CREATE-FILE DELETE-FILE FILE-POSITION FILE-SIZE FORTH-WORDLIST GET-CURRENT GET-ORDER INCLUDE-FILE OPEN-FILE-SHARED OPEN-FILE READ-FILE READ-LINE REPOSITION-FILE RESIZE-FILE SEARCH-WORDLIST SET-CURRENT SET-ORDER SOURCE-ID TO-LOG WRITE-FILE WRITE-LINE';
$words[] = '0</ 0<>/ 0= 0! << >> -> 1+ 2+ 1- 2- D+ D. D0= D< D>S S>D C! C, C/L C@ C@ >BODY >IN >NUMBER >R -ROT -TRAILING <# <> +! ", */ #>';
$words[] = '#S #TIB */MOD /MOD 2/ 2>R FM/MOD R/O R/W SM/REM U>D UM/MOD W/O';
$words[] = '! .S (.") (ABORT") * + , - . .0 ?COMP 2DROP 2DUP 2LITERAL 2OVER 2R> 2R@ 2SWAP ?DUP @ ABORT ABS ACCEPT ALIGN ALIGNED ALLOCATE ALLOT ALSO AND ASCIIZ> AT BASE BETWEEN BL BLK BUFFER: BYE CATCH CELL CELL+ CELL- CELLS CHAR CHAR+ CHARS CLITERAL CMOVE CMOVE> COMPARE CONTEXT COUNT CR CURRENT DABS DECIMAL DEFER DEFINITIONS DEPTH DIGIT DNEGATE DP DROP DUMP DUP EKEY EKEY? EMIT ENVIRONMENT? END-CODE ERASE EXECUTE EXIT EVALUATE FALSE FIELD FILL FIND FORTH FREE HANDLER HEADER HERE HEX HIDE HLD HOLD IMMEDIATE INCLUDED INTERPRET INVERT IS KEY KEY? LATEST LEAVE LITERAL LSHIFT M* MAX MIN MOD MOVE NAME> NEGATE NIP NLIST NOOP NOT ONLY OR ORDER OVER PAD PARSE PICK PREVIOUS QUIT R0 ROLL R> R@ RDROP RECURSE REFILL RESIZE ROT RP! RP@ RSHIFT S0 SEARCH SIGN SKIP SLITERAL SMUDGE SOURCE SP! SP@ SPACE SPACES STATE SWAP THROW TIB TRUE TUCK TYPE U. U/ U< U> UM* UMOD W! W, W@ WARNING WITHIN WORD WORDLIST WORDS XOR COMPILE INCLUDE VOCS NextWord SFIND HALT OK LT LTL';
$words[] = 'F! F* F+ F. F, F- F/ F< F= F> F@ FABORT FABS FALIGN FALIGNED FDEPTH FDROP FDUP FEXP FLN FLG FLITERAL FLOATS FMAX FMIN FNEGATE';
$words[] = '!nt @nt br+ br- br0 ddo decode-2int decode-int decode-phys decode-string device-name DICTLIST encode+ encode-2int encode-bytes encode-int encode-phys encode-string end0 end1 ex ex+ ex- ex0 external finish-device headers if+ if- if0 my-self NAMEBASE new-device PROPERTY rp TVOCABULARY';
$words[] = 'OF ENDOF CASE END-CASE ENDCASE IF ELSE THEN BEGIN WHILE REPEAT BEGIN UNTIL AGAIN RECURSE ?DO DO +LOOP LOOP UNLOOP I J LEAVE DOES> {{ }}';
$words[] = ': ... WINAPI: CREATE VARIABLE USER CONSTANT VOCABULARY VECT VALUE FVALUE -- CODE REQUIRE';
$words[] = '> < = \\\' #';

// color_o[] -- открытие выделения (можно добавить не только цвет, но и bold и italic)
// color_c[] -- закрытие выделения

$color_о[0] = '<font color=#000088>';$color_c[0] = '</font>';
$color_о[] = '<font color=#008800>'; $color_c[] = '</font>';
$color_о[] = '<font color=#880000>'; $color_c[] = '</font>';
$color_о[] = '<font color=#0000FF>'; $color_c[] = '</font>';
$color_о[] = '<font color=#00FF00>'; $color_c[] = '</font>';
$color_о[] = '<font color=#FF0000>'; $color_c[] = '</font>';
$color_о[] = '<font color=#0000FF><s>'; $color_c[] = '</s></font>';
$color_о[] = '<font color=#00FF00><i>'; $color_c[] = '</i></font>';
$color_о[] = '<font color=#FFFF00><b>'; $color_c[] = '</b></font>';

// замена через через unix-регулярные выражения

// замена управляющих символов

$text = str_replace('>', '&gt;', $text);
$text = str_replace('<', '&lt;', $text);
$text = str_replace('\\'.chr(39), chr(39), $text);

// обезьянничаем regexp из ббкода
   $text = preg_replace(
      "#\[colorer\](.*?)\[/colorer\]#si",
      "<pre>\\1</pre>", $text);

// строки
$text = preg_replace("#S.\"(.*?).\"#si", "<font color=orange>S\"\\1\"</font>", $text);
$text = preg_replace("#\..\"(.*?).\"#si", "<font color=orange>.\"\\1\"</font>", $text);

// коментарий, начинающийся с /
//  $text = preg_replace("#\n\/ .* \n"#si", "<font color=darkyellow>\\1</font>", $text);


// $text = preg_replace("#(0-9A-F)#si", "<font color=green>\\1</font>", $text);
// числа (не работают нормально!)
// $text = preg_replace("#(\d|A|B|C|D|E|F).\s#si", " <font color=lightgreen>\\1</font> ", $text);

// убрать лишние слеши
$text = str_replace('\"', '"', $text);
$text = str_replace('\\\'', '\'', $text);


// собственно расцвечивание

$w=0; // номер массива слов и цвета для расцветки

while (isset($words[$w])){ // пока есть слова:
   $xx = $words[$w];
   // замена управляющих символов html в расцвечиваемых словах
   $xx = str_replace('>', '&gt;', $xx);
   $xx = str_replace('<', '&lt;', $xx);
   $mas = split((chr(32)),$xx); // вытаскиваем слова в массив
   // echo "<hr>".$mas[1].$mas[2].$mas[3];
   $i=1;
   while (isset($mas[$i])){ // пока есть слова, заменяем:
   // для слов окруженных пробелами
   $text = str_replace(" $mas[$i] "," $color_о[$w]$mas[$i]$color_c[$w] ",$text);

   // для слов в конце строки
   $text = str_replace(" $mas[$i]".'\n'," $color_о[$w]$mas[$i]$color_c[$w]".'\n',$text);
   // для слов в начале строки
   $text = str_replace('\n'."$mas[$i] ",'\n'."$color_о[$w]$mas[$i]$color_c[$w] ",$text);
   // для одиночных слов
   $text= str_replace('\n'."$mas[$i]\n",'\n'."$color_о[$w]$mas[$i]$color_c[$w]".'\n',$text);
   $i++;
   //  /^stroka$/ - строка с началом и концом
   //$text = str_replace(" $mas[$i] "," $color_о[$w]$mas[$i]$color_c[$w] ",$text);
};
$w++;
};

$text = str_replace(" CREATE "," <font color=#FF0000>CREATE</font> ",$text);

//  $text = str_replace(' # ', '<b>#</b>', $text);

return ($text);};

?>

Попробовать, как он работает, можно на http://fforum.winglion.ru/colorer/test.php

в окошко вводится тестовый код, окруженный тегами [colorer] [/colorer]
и получается некий результат

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
цвета заданы отбалды, поэтому, прошу предлагать варианты (желательно сразу с указанием RGB кодов)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 09, 2007 12:15 
AlexF
По поводу Colorer'а -- это то что мы сразу предлагали. Но Winglion описал выше почему не может так делать.

Расцвечивать JS-ом -- это не очень хорошо. А вдруг я js у себя отключу? (например именно щас так и есть)

(при этом к Сагалевской разработке отношусь строго положительно, хорошая вещь)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 09, 2007 12:21 
Цитата:
Попробовать, как он работает, можно на http://fforum.winglion.ru/colorer/test.php


Код:
[colorer]
: ^2 ( a b -- )
12 DUP * SWAP IF ROT ELSE THEN
S" gf" ;
[/colorer]

IF и ELSE синие и почему-то зачёркнуты (тэг <s>). А THEN -- чёрный.

Весь стековый комментарий не выделен. Зато внутри помечены кислотно-зелёным только "a" и "--".

По цветам -- это долгая история. Лучше сначала обеспечить само срабатывание.

(видимо, придётся во второй раз в жизни попробовать на PHP что-то сделать)


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

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


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

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


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

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