основной форум
Архив сообщений 2004-2006 года

Алгоритмы, методы, исходники


Алгоритмы >> Остальное

Страницы: 1
Ertong
новичок


Рег.: 08/07/04
Сообщений: 16
Подсветка синтаксиса изменяемого текста
      #12072 - 09/13/06 05:29 AM

Нужно подсвечивать некоторый язык (например Pascal) в режиме редактирования текста.

Как можно реализовать это без полного повторного переанализа всего текста во время ввода текста?


Операции над сообщением Печать сообщения   Добавить тему в напоминания!   Известить модератора  
kia
новичок
*****

Рег.: 06/12/06
Сообщений: 21
Re: Подсветка синтаксиса изменяемого текста [Re: Ertong]
      #12074 - 09/13/06 06:18 AM

Сделай лексический анализатор в виде автомата (т.е грубо говоря функции, у которой на входе - номер состояния и текущий символ, на выходе - номер нового состояния, и цвет которым нужно отобразить данный символ.)

Храни состояние лексического анализатора, например, в начале каждой строки. Тогда, после изменения текста нужно будет переанализировать только кусок текста начиная со строки, где произошло изменение, до той строки после конца измененного текста, где новое состояние анализатора станет равным ранее вычисленному (или до конца области просмотра)


Операции над сообщением Печать сообщения   Добавить тему в напоминания!   Известить модератора  
Ertong
новичок


Рег.: 08/07/04
Сообщений: 16
Re: Подсветка синтаксиса изменяемого текста [Re: kia]
      #12077 - 09/13/06 07:18 PM

Я думал об этом варианте. Скорее всего, что не получиться сделать посимвольный вывод, т.к. можно еще не знать, что нужно выводить.

Например: "fp()"

Когда пользователь набрал только "f", то она должна отличатся по цвету, от случая, когда есть вся конструкция. А если удалит "(", то цвет должен поменятся у всей кострукции.

Т.е. логично использовать буфер какой-нибуть для не полностью определенных участков кода.

Таким образом уже не получится сохранять состояния автомата построчно (уже как минимум - поблочно(т.е. между освобождениями буфера)).

А блоки могут быть достаточно большими (например, если помудрить с выделением фигурных скобок в каком-нибудь С).


Операции над сообщением Печать сообщения   Добавить тему в напоминания!   Известить модератора  
Страницы: 1



Дополнительная информация
0 зарегистрированных и 416 анонимных пользователей просматривают этот форум.

Модератор:  Илья Кантор, PAV, Sergeyev 

Распечатать тему

Права
      Вы не можете создавать новые темы
      Вы не можете отвечать на сообщения
      HTML выключен
      UBBCode включен

Рейтинг:
Просмотры темы: 8027

Rate this topic

Переход в