Использование GRETA (regexp) vs Visual Studio 2005 beta2
От: karamultuk  
Дата: 27.12.05 12:10
Оценка:
Здравствуйте, уважаемые.

Попытался попробовать сабжевый класс (GRETA).
Пример кода:

// greta.cpp : Defines the entry point for the console application.
//

#include <stdafx.h>
#include <iostream>
#include <string>

#include "regexpr2.h"

using namespace std;
using namespace regex;

int main() {
    match_results results1;
    subst_results results2;
    string str( "The book <COST> $12.34" );
    rpattern pat1( "\\$(\\d+)(\\.(\\d\\d))?" );  
    rpattern pat2( "<COST>", "цена");
    // Match a dollar sign followed by one or more digits,
    // optionally followed by a period and two more digits.
    // The double-escapes are necessary to satisfy the compiler.

    match_results::backref_type br = pat1.match( str, results1 );
    subst_results results = pat2.substitute( str, results2 );
    if( br.matched ) {
        cout << "match success!" << endl;
        cout << "price: " << br << endl;
    } else {
        cout << "match failed!" << endl;
    }
    return 0;
}


При попытке компиляции получаю следующую ошибку:
d:\program files\microsoft visual studio 8\!projects\example 1\greta\greta\restack.h(355) : warning C4346: 'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>::stack_node::header' : dependent name is not a type
prefix with 'typename' to indicate a type

Такое впечатление, что проблема с STL, помогите, пожалуйста разобраться.
Re: Использование GRETA (regexp) vs Visual Studio 2005 beta2
От: ioni Россия  
Дата: 27.12.05 12:25
Оценка:
K>d:\program files\microsoft visual studio 8\!projects\example 1\greta\greta\restack.h(355) : warning C4346: 'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>::stack_node::header' : dependent name is not a type
K> prefix with 'typename' to indicate a type

вообще то это warning
Re[2]: Использование GRETA (regexp) vs Visual Studio 2005 be
От: karamultuk  
Дата: 27.12.05 12:32
Оценка:
Здравствуйте, ioni, Вы писали:

K>>d:\program files\microsoft visual studio 8\!projects\example 1\greta\greta\restack.h(355) : warning C4346: 'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>::stack_node::header' : dependent name is not a type

K>> prefix with 'typename' to indicate a type

I>вообще то это warning


Ну да, промахнулся, вот такая ошибка:
d:\program files\microsoft visual studio 8\!projects\example 1\greta\greta\restack.h(355) : error C2923: 'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>::aligned_sizeof' : 'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>::stack_node::header' is not a valid template type argument for parameter 'T'
Re: Использование GRETA (regexp) vs Visual Studio 2005 beta2
От: Sergey Россия  
Дата: 27.12.05 12:32
Оценка:
> При попытке компиляции получаю следующую ошибку:
> d:\program files\microsoft visual studio 8\!projects\example 1\greta\greta\restack.h(355) : warning C4346: 'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>::stack_node::header' : dependent name is not a type
> prefix with 'typename' to indicate a type
>
> Такое впечатление, что проблема с STL, помогите, пожалуйста разобраться.

Проблема с greta — код, очевидно, заточен под VC 6, надо новую версию выкачивать.
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: Использование GRETA (regexp) vs Visual Studio 2005 beta2
От: karamultuk  
Дата: 27.12.05 12:35
Оценка:
Вообще в описании класса написано следующее:
"STL
This regular expression package makes heavy use of STL (The Standard Template Library). STL is available in VC5 and higher. If you are not currently using STL in your projects (why not?!) you may have to make some modifications to your build settings to use this package. If you are using the NT build environment, you should add the line “USE_STL=1” to your sources file. If you are building in VC, you may need to explicitly link to one of the STL libraries (msvcprt.lib or libcp.lib, or their debug equivalents)."

Может быть у меня в VC что нибудь не включено?
Также был бы признателен за рабочий пример.
Re[2]: Использование GRETA (regexp) vs Visual Studio 2005 be
От: karamultuk  
Дата: 27.12.05 12:38
Оценка:
S>Проблема с greta — код, очевидно, заточен под VC 6, надо новую версию выкачивать.

Так последнюю и скачал.
http://research.microsoft.com/projects/greta/
Re[3]: Использование GRETA (regexp) vs Visual Studio 2005 be
От: Sergey Россия  
Дата: 27.12.05 12:59
Оценка:
"karamultuk" <41473@users.rsdn.ru> wrote in message news:1564721@news.rsdn.ru...
>S>Проблема с greta — код, очевидно, заточен под VC 6, надо новую версию выкачивать.
>
> Так последнюю и скачал.
> http://research.microsoft.com/projects/greta/

Нда, на восьмерке оно компиляется, если поменять строчку
byte_t m_buf[ aligned_sizeof<stack_node::header>::no_rtti + StaticBlockSizeT ];

на

byte_t m_buf[ aligned_sizeof<typename stack_node::header>::no_rtti + StaticBlockSizeT ];

Я даже затрудняюсь сказать, положено оно так по стандарту в данном случае или нет, но VC 8 хочет именно так.
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[4]: Использование GRETA (regexp) vs Visual Studio 2005 be
От: karamultuk  
Дата: 27.12.05 14:31
Оценка:
Точно, спасибо за ответ.

Но... все равно не компилится... теперь новая ошибка, даже несколько:

------ Build started: Project: greta, Configuration: Debug Win32 ------
Compiling...
greta.cpp
d:\program files\microsoft visual studio 8\!projects\example 1\greta\greta\greta.cpp(15) : error C2664: 'regex::basic_rpattern<IterT,SyntaxT>::basic_rpattern(const regex::basic_rpattern<IterT,SyntaxT> &)' : cannot convert parameter 1 from 'const char [19]' to 'const regex::basic_rpattern<IterT,SyntaxT> &'
with
[
IterT=std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
SyntaxT=regex::perl_syntax<regex::rechar_t>
]
Reason: cannot convert from 'const char [19]' to 'const regex::basic_rpattern<IterT,SyntaxT>'
with
[
IterT=std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
SyntaxT=regex::perl_syntax<regex::rechar_t>
]
No constructor could take the source type, or constructor overload resolution was ambiguous
d:\program files\microsoft visual studio 8\!projects\example 1\greta\greta\greta.cpp(16) : error C2664: 'regex::basic_rpattern<IterT,SyntaxT>::basic_rpattern(const std::basic_string<_Elem,_Traits,_Ax> &,regex::REGEX_FLAGS,regex::REGEX_MODE)' : cannot convert parameter 1 from 'const char [7]' to 'const std::basic_string<_Elem,_Traits,_Ax> &'
with
[
IterT=std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
SyntaxT=regex::perl_syntax<regex::rechar_t>,
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>,
_Ax=std::allocator<wchar_t>
]
and
[
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>,
_Ax=std::allocator<wchar_t>
]
Reason: cannot convert from 'const char [7]' to 'const std::basic_string<_Elem,_Traits,_Ax>'
with
[
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>,
_Ax=std::allocator<wchar_t>
]
No constructor could take the source type, or constructor overload resolution was ambiguous
Re[5]: Использование GRETA (regexp) vs Visual Studio 2005 be
От: Sergey Россия  
Дата: 27.12.05 15:00
Оценка:
> Но... все равно не компилится... теперь новая ошибка, даже несколько:

char c wchar_t поругались — Unicode для своего проекта убери. И вообще, читайте сообщения об ошибках — они рулез
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: Использование GRETA (regexp) vs Visual Studio 2005 beta2
От: anton_t Россия  
Дата: 28.12.05 07:41
Оценка:
Здравствуйте, karamultuk, Вы писали:

А вообще, уже релиз вышел
Re[6]: Использование GRETA (regexp) vs Visual Studio 2005 be
От: LMars Россия  
Дата: 28.12.05 07:51
Оценка:
>> Но... все равно не компилится... теперь новая ошибка, даже несколько:

S>char c wchar_t поругались — Unicode для своего проекта убери. И вообще, читайте сообщения об ошибках — они рулез


Лучше строки в _T() оберни. Тогда и так, и так компиляться будет.

А грету эту явно 2005й не компиляли... привыкли к особенностям шестерки.
Re[2]: Использование GRETA (regexp) vs Visual Studio 2005 be
От: karamultuk  
Дата: 28.12.05 09:57
Оценка:
Здравствуйте, anton_t, Вы писали:

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


_>А вообще, уже релиз вышел


Разве дело в релизе?
Кстати. попробовал под VC6, там ошибки посыпались уже линковке.
Re: Использование GRETA (regexp) vs Visual Studio 2005 beta2
От: Аноним  
Дата: 28.12.05 15:16
Оценка:
Не совсем по теме, но когда мне понадобились регулярные выражения я остановился на boost::regex т.к. greta уже давно не обновляется и не поддерживается
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.