Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Igor Plekhov                         2:5020/400     05 Nov 2002  11:15:55
 To : Pertzel Family
 Subject : Re: FLEX в многопоточном окружении
 -------------------------------------------------------------------------------- 
 
 On Fri, 1 Nov 2002 09:43:22 +0000 (UTC), Pertzel Family <voldemar@relhum.org>
 wrote:
 
 > 
 > > Интересует следующий вопрос : насколько возможно использование flex  в
 > > многопоточном окружении. Hеобходимо поместить парсер в DLL, из которой его
 > > могут вызвать множество клиентов.
 > 
 > flex, собака, использует глобальные переменные,
 > причем, принципиально важные, вроде YYTEXT.
 > При необходимости создания нескольких
 > независимых парсеров, используется опция -P,
 > которая переименовывает глобальные переменные
 > в сгенерированном Ц-шном коде.
 
 это в данном случае не поможет.  такое переименование полезно, когда нужно
 иметь много разных анализаторов.  а тут нужен один анализатор для многих
 клиентов.
 
 > Если клиенты при обращении к парсеру всегда
 > начинают и заканчивают работу по точной границе
 > лексемы и не оставляют в буффере ввода flex
 > (речть о flex -- у lex отдельного буфера нет),
 > то проблем никаких просто не будет. Если же
 > ситуация не такова, да еще при асинхронной
 > работе, flex в чистом виде непригоден. *По*
 > *слухам* для этого есть в самом пакете добавка
 > -- flex++, которой я сам не пользовался.
 
 flex может делать C++ scanner class:
 
        You  can  also  use  flex to generate a C++ scanner class,
        using the -+ option (or, equivalently, %option c++), which
        is  automatically  specified  if the name of the flex exe-
        cutable ends in a '+', such as flex++.   When  using  this
        option,  flex  defaults  to  generating the scanner to the
        file lex.yy.cc instead of lex.yy.c.  The generated scanner
        includes  the  header  file FlexLexer.h, which defines the
        interface to two C++ classes.
 
        ...
 
        Note that a yyFlexLexer object contains its  entire  scan-
        ning state.  Thus you can use such objects to create reen-
        trant scanners.  You can instantiate multiple instances of
        the  same yyFlexLexer class, and you can also combine mul-
        tiple C++ scanner classes together  in  the  same  program
        using the -P option discussed above.
 
 не знаю, что есть из доков под виндой, а в юниксовом мане всё описано.
 я сам этой штукой не пользовался.
 
 Игорь
 -- 
 Registered Linux User #124759
 Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spread!
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 FLEX в многопоточном окружении   Yuri Muhitov   31 Oct 2002 17:21:47 
 Re: FLEX в многопоточном окружении   Pertzel Family   01 Nov 2002 13:43:22 
 Re[2]: FLEX в многопоточном окружении   Alexey Krasnov   01 Nov 2002 22:24:58 
 Re: FLEX в многопоточном окружении   Igor Plekhov   05 Nov 2002 11:15:55 
Архивное /ru.algorithms/149009305d282.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional