#include "RegexWriter.h"
namespace
{
namespace
{
using
namespace
vl
::
regex_internal
;
::
(
vl
::
regex_internal
::
::
)
:expression(
)
{
}
::
()
const
{
return
(
1
, -
1
);
}
::
()
const
{
return
(
0
, -
1
);
}
::
()
const
{
return
(
0
,
1
);
}
::
(
,
)
const
{
*
=
new
;
target
->
=
;
target
->
=
;
target
->
=
true
;
target
->
;
return
(
target
);
}
::
(
)
const
{
return
(
, -
1
);
}
::
(
const
&
)
const
{
*
=
new
;
target
->
;
target
->
.
;
return
(
target
);
}
::
(
const
&
)
const
{
*
=
new
;
target
->
;
target
->
.
;
return
(
target
);
}
::
()
const
{
*
=
new
;
target
->
;
return
(
target
);
}
::
()
const
{
*
=
new
;
target
->
;
return
(
target
);
}
::
()
const
{
*
=
dynamic_cast
<
*>(
.
());
CHECK_ERROR(source, L"RegexNode::operator!()#operator ! can only applies on charset expressions.");
do
{
if
(!(
source
))
throw
(
L"RegexNode::operator!()#operator ! can only applies on charset expressions."
);}
while
(
0
);
<
>
=
new
;
(
target
,
source
->
);
target
=!
source
->
;
return
(
target
);
}
::
(
const
&
)
const
{
*
=
dynamic_cast
<
*>(
.
());
*
=
dynamic_cast
<
*>(
.
.
());
CHECK_ERROR(left && right && !left->reverse && !right->reverse, L"RegexNode::operator%(const RegexNode&)#operator % only connects non-reverse charset expressions.");
do
{
if
(!(
left
&&
right
&& !
left
->
&& !
right
->
))
throw
(
L"RegexNode::operator%(const RegexNode&)#operator % only connects non-reverse charset expressions."
);}
while
(
0
);
<
>
=
new
;
target
=
false
;
(
target
,
left
->
);
for
(
=
0
;
i
<
right
->
.
();
i
++)
{
if
(!
target
(
right
->
i
]))
{
CHECK_ERROR(false, L"RegexNode::operator%(const RegexNode&)#Failed to create charset expression from operator %.");
do
{
if
(!(
false
))
throw
(
L"RegexNode::operator%(const RegexNode&)#Failed to create charset expression from operator %."
);}
while
(
0
);
}
}
return
(
target
);
}
(
const
&
,
const
&
)
{
*
=
new
;
target
->
;
target
->
.
;
return
(
target
);
}
(
const
&
)
{
*
=
new
;
target
->
;
return
(
target
);
}
(
const
&
,
)
{
*
=
new
;
target
->
;
target
->
=
;
return
(
target
);
}
(
)
{
*
=
new
;
target
->
=
;
return
(
target
);
}
()
{
return
(
new
);
}
()
{
return
(
new
);
}
(
wchar_t
,
wchar_t
)
{
if
(!
)
=
;
*
=
new
;
target
->
=
false
;
target
->
(
(
,
));
return
(
target
);
}
()
{
return
(
L'0'
,
L'9'
);
}
()
{
return
(
L'a'
,
L'z'
)
(
L'A'
,
L'Z'
)
(
L'_'
);
}
()
{
return
(
L'0'
,
L'9'
)
(
L'a'
,
L'z'
)
(
L'A'
,
L'Z'
)
(
L'_'
);
}
()
{
return
(
1
,
65535
);
}
}
}