![]() |
|
Модераторы: Vitalik |
![]()
|
|
| Barracuda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
Народ, подскажите, как быть!
Пишу лексический анализатор в Delphi с подсветкой синтаксиса. Что хочу сделать: - чтобы лексема каждого типа (идентификатор, константа, служебное слово и др.) имела свой стиль текста и цвет; - чтобы вся эта красота могла выводиться как “на лету”, т.е. во время ввода, как в редакторе Delphi или Builder’а, так и при загрузке файла с текстом программы; - чтобы была возможность красить фон в свой цвет. Вопрос. Подойдёт ли для этого SynEdit? Какой версии? И напишите, пожалуйста, ссылочки, как работать с SynEdit’ом. |
|||
|
||||
| Barracuda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
На предыдущий вопрос можно забить, объясните хотя бы как красить и присваивить свой стиль динамически идентификаторам и константам?
|
|||
|
||||
| Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 9 Всего: 12 |
Здравствуй, Barracuda. Объясни, пожалуйста, подробнее суть проблемы. Что считать идентификатором и константой? Как определить, что именно является идентификатором? Это просто любая последовательность алфавитно-цифровых символов? А что подразумеваешь под константой? Числовые и строковые константы? Добавлено @ 03:04 Если я правильно тебя понял, то тебе подойдёт любой SynEdit с любой подсветкой (либо стандартная, либо наша универсальная) |
|||
|
||||
| Barracuda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
Vitalik, здравствуй! Суть вот в чём: идентификаторы определяются по следующему правилу:
1-й символ - символ из множества ['A'..'Z','a'..'z']; остальные символы - из множества ['0'..'9','A'..'Z','a'..'z']. Константы - набор символов из множества ['0'..'9'].
С энтой штукой разобрался, использую SynEdit вер. 2.0.1 + UniHighLighter 1.8. Рульная весчь! Работает быстро, зарезервированные слова шпарит цветом, каким хочу, стилем, каким хочу! Осталось разобраться только с идентификаторами... |
|||
|
||||
| Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 9 Всего: 12 |
Barracuda, по поводу идентификаторов есть половинчатое решение. Создай правило Set (набор символов) со значением '_ABC...XYZabc...xyz0123...789'. А "Константы" - это Set со значением '0123456789'.
Единственная недоработка, так это то, что такие строки, как '123xyz' тоже будут считаться идентификаторами... Но я думаю, что это не страшно, так как в реальных исходниках такой нонсенс все равно не встречается |
|||
|
||||
| Barracuda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
Всё сделал. Работает!!! ОГРОМНОЕ спасибо!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |