Re[3]: Подствека синтаксиса
От: Кодт Россия  
Дата: 31.08.04 15:35
Оценка: 8 (2)
Здравствуйте, DemAS, Вы писали:

DAS>Здравствуйте, alku, Вы писали:


A>>маленьки примерчик: /* new object() */ — но сначало это коментарий!!! а слова в середине тогда теряют свое назначение


DAS> Что посоветуешь ? Конечные автоматы ?


Твоя задача — это ровно то, что делает лексический анализатор любого языка. А они, как правило, построены на автоматных грамматиках.
Так что — конечный автомат, без сомнения, тебя удовлетворит.
Причём автомат должен выдавать результаты (скажем, строку </span><span class=keyword> ) при смене состояний, а не пребывая в состояниях.
То есть, по сути, это автомат Милли. Он описывается множеством четвёрок (state,input,next,output), где output не пуст, в случае, если автомат проходит через границу лексемы. В грубом виде, значение output — это
  • "<span class='$next'>' если state==BEGIN
  • "</span><span class='$next'>" если state!=next
  • "</span>" если next==END
  • "" если state==next.
    Хотя, конечно, по хорошему нужно различать границы лексем, принадлежащих одному классу. (Мало ли, захочется бордюр рисовать вокруг каждой из них). Пример: строка <<<<< на С++ будет разбита на 3 лексемы << << <
  • Перекуём баги на фичи!
    Re: Подствека синтаксиса
    От: alku  
    Дата: 31.08.04 11:52
    Оценка: 6 (1)
    Здравствуйте, DemAS, Вы писали:

    DAS> Добрый день.


    DAS> На первый взгляд — все просто, но чуствую есть подводные камни, которых я не учел. Что скажете ?


    маленьки примерчик: /* new object() */ — но сначало это коментарий!!! а слова в середине тогда теряют свое назначение
    Re[5]: Подствека синтаксиса
    От: Flamer Кипр http://users.livejournal.com/_flamer_/
    Дата: 31.08.04 13:50
    Оценка: 3 (1)
    Здравствуйте, DemAS, Вы писали:

    []

    DAS> Хочу конвертер — на вход txt, на выходе расцвеченный html.

    DAS> А что есть из готовых либ.... ?

    Я когда-то писал и даже запостил в форум "Исходники" набор компонентов для дебилдера, предназначенных как раз для расцветки исходного кода в HTML. Конфигурится там цвет, шрифт и пр. по мелочи. При желании можно написать свой компонент, основываясь на том, что есть.

    Вот, в общем: http://www.rsdn.ru/Forum/Message.aspx?mid=544934
    Автор: Flamer
    Дата: 19.02.04
    Подствека синтаксиса
    От: DemAS http://demas.me
    Дата: 31.08.04 11:43
    Оценка:
    Добрый день.

    Нужно реализовать подсветку синтаксиса. Интересует алгоритм.

    Вот что я придумал:

    1) Сканируем текст посимовольно до тех пор пока не следующий симовол не входит в множество [a..z, A..Z, 0..9]
    2) Получившееся слово ищем в списке ключевых слов
    3) Если находим — обрамляем его тэгами

    На первый взгляд — все просто, но чуствую есть подводные камни, которых я не учел. Что скажете ?
    ... << RSDN@Home 1.1.4 @@subversion >>
    Re[2]: Подствека синтаксиса
    От: DemAS http://demas.me
    Дата: 31.08.04 12:37
    Оценка:
    Здравствуйте, alku, Вы писали:

    A>маленьки примерчик: /* new object() */ — но сначало это коментарий!!! а слова в середине тогда теряют свое назначение


    Что посоветуешь ? Конечные автоматы ?
    ... << RSDN@Home 1.1.4 @@subversion >>
    Re[3]: Подствека синтаксиса
    От: alku  
    Дата: 31.08.04 13:33
    Оценка:
    Здравствуйте, DemAS, Вы писали:

    DAS>Здравствуйте, alku, Вы писали:


    A>>маленьки примерчик: /* new object() */ — но сначало это коментарий!!! а слова в середине тогда теряют свое назначение


    DAS> Что посоветуешь ? Конечные автоматы ?


    смотря что хотиш:
    — если расчет на то что надо в рантайме менять конфигурацию рассветки, то прийдеться повозиться самому
    — если просто под определнный язык надо сделать, то тогда надо смотреть в сторону уже готовых либ...

    зайди на форум посвещенный r# — там вроде эта тема подымалась и обсуждаласть...
    Re: Подствека синтаксиса
    От: jhfrek Россия  
    Дата: 31.08.04 13:36
    Оценка:
    Здравствуйте, DemAS, Вы писали:

    DAS> Добрый день.

    DAS> Нужно реализовать подсветку синтаксиса. Интересует алгоритм.

    а чем тот же SynEdit не удовлетворяет? http://synedit.sourceforge.net
    Re[4]: Подствека синтаксиса
    От: DemAS http://demas.me
    Дата: 31.08.04 13:41
    Оценка:
    Здравствуйте, alku, Вы писали:

    A>смотря что хотиш:

    A>- если расчет на то что надо в рантайме менять конфигурацию рассветки, то прийдеться повозиться самому
    A>- если просто под определнный язык надо сделать, то тогда надо смотреть в сторону уже готовых либ...


    Хочу конвертер — на вход txt, на выходе расцвеченный html.
    А что есть из готовых либ.... ?

    Язык довольно специфичен и либу именно под этот язык найти не удастся, поэтому надо искать нечто очень конфигурабельное.
    Например, если есть строка — 'stri\'ng' — то это должно подсветиться одной строкой, так как вторая ' — экранируется слешем.
    ... << RSDN@Home 1.1.4 @@subversion >>
    Re[5]: Подствека синтаксиса
    От: korzhik Россия  
    Дата: 31.08.04 13:47
    Оценка:
    Здравствуйте, DemAS, Вы писали:

    DAS> Хочу конвертер — на вход txt, на выходе расцвеченный html.

    DAS> А что есть из готовых либ.... ?

    DAS> Язык довольно специфичен и либу именно под этот язык найти не удастся, поэтому надо искать нечто очень конфигурабельное.

    DAS> Например, если есть строка — 'stri\'ng' — то это должно подсветиться одной строкой, так как вторая ' — экранируется слешем.

    посмотри boost/spirit и пример к нему cpp_to_html.
    Может поможет.
    Re[5]: Подствека синтаксиса
    От: antonme Россия http://setia.ru
    Дата: 31.08.04 14:55
    Оценка:
    Здравствуйте, DemAS, Вы писали:

    DAS>Здравствуйте, alku, Вы писали:


    A>>смотря что хотиш:

    A>>- если расчет на то что надо в рантайме менять конфигурацию рассветки, то прийдеться повозиться самому
    A>>- если просто под определнный язык надо сделать, то тогда надо смотреть в сторону уже готовых либ...


    DAS> Хочу конвертер — на вход txt, на выходе расцвеченный html.

    DAS> А что есть из готовых либ.... ?

    DAS> Язык довольно специфичен и либу именно под этот язык найти не удастся, поэтому надо искать нечто очень конфигурабельное.

    DAS> Например, если есть строка — 'stri\'ng' — то это должно подсветиться одной строкой, так как вторая ' — экранируется слешем.

    В примерах к Boost'овскому regex'у есть такая штука — лежит в boost/libs/regex/example/snippets/regex_merge_example.cpp. Превращает cpp в подсвеченный html. Очень простая и меняется очень легко.
    Re[4]: Подствека синтаксиса
    От: Hunta Украина http://dr-leafsey.livejournal.com
    Дата: 01.09.04 12:26
    Оценка:
    К>Твоя задача — это ровно то, что делает лексический анализатор любого языка.

    А что можно почитать в инете по этому поводу?
    Поступай так, чтобы максима своей воли в любое время могла стать принципом всеобщего законодательства.
    Re[5]: Подствека синтаксиса
    От: DoС  
    Дата: 17.09.04 14:45
    Оценка:
    Здравствуйте, DemAS, Вы писали:


    DAS> Хочу конвертер — на вход txt, на выходе расцвеченный html.

    DAS> А что есть из готовых либ.... ?

    посмотри http://colorer.sourceforge.net/
    ... << RSDN@Home 1.1.4 @@subversion >>
    Re[6]: Подствека синтаксиса
    От: wildwind Россия  
    Дата: 20.09.04 08:23
    Оценка:
    Здравствуйте, DoС, Вы писали:

    DoС>посмотри http://colorer.sourceforge.net/


    Точно. Из готовых либ — это Colorer.
    2 Кодт: Подсветка синтаксиса — это не обязательно лексический анализ. Colorer например работает на регэкспах.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.