#ifndef VCZH_WORKFLOW_EXPRESSION_WFEXPRESSIONPARSER_COPY
#define VCZH_WORKFLOW_EXPRESSION_WFEXPRESSIONPARSER_COPY
#include <VlppParser.h>
#include "WfExpression_Ast.h"
namespace
{
namespace
{
namespace
{
class
:
public
{
public
:
vl
::
<
vl
::
parsing
::
>
;
};
class
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
};
class
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
WfOrderedLambdaExpression
*
,
WfOrderedLambdaExpression
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
WfTypeOfExpressionExpression
*
,
WfTypeOfExpressionExpression
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
vl
::
parsing
::
>
(
*
) =
0
;
virtual
vl
::
<
vl
::
parsing
::
>
(
*
) =
0
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
WfOrderedLambdaExpression
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
WfTypeOfExpressionExpression
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
};
class
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
WfRaiseExceptionStatement
*
,
WfRaiseExceptionStatement
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
vl
::
parsing
::
>
(
*
) =
0
;
virtual
vl
::
<
vl
::
parsing
::
>
(
*
) =
0
;
virtual
vl
::
<
vl
::
parsing
::
>
(
*
) =
0
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
WfRaiseExceptionStatement
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
};
class
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
vl
::
parsing
::
>
(
*
) =
0
;
virtual
vl
::
<
vl
::
parsing
::
>
(
*
) =
0
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
};
class
VirtualCfeDeclarationVisitor
:
public
virtual
,
public
::
{
public
:
void
(
WfAutoPropertyDeclaration
*
,
WfAutoPropertyDeclaration
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
WfCastResultInterfaceDeclaration
*
,
WfCastResultInterfaceDeclaration
*
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
void
(
WfAutoPropertyDeclaration
*
)
override
;
void
(
WfCastResultInterfaceDeclaration
*
)
override
;
};
class
VirtualCseDeclarationVisitor
:
public
virtual
,
public
::
{
public
:
void
(
WfStateMachineDeclaration
*
,
WfStateMachineDeclaration
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
void
(
WfStateMachineDeclaration
*
)
override
;
};
class
VirtualCseStatementVisitor
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
vl
::
<
>
(
vl
::
<
>
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
};
class
CoroutineStatementVisitor
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
void
(
*
)
override
;
void
(
*
)
override
;
};
class
StateMachineStatementVisitor
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
void
(
*
)
override
;
void
(
*
)
override
;
};
class
VirtualCfeExpressionVisitor
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
void
(
*
)
override
;
};
class
VirtualCseExpressionVisitor
:
public
virtual
,
public
::
{
public
:
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
WfExpectedTypeCastExpression
*
,
WfExpectedTypeCastExpression
*
);
void
(
*
,
*
);
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
virtual
vl
::
<
>
(
vl
::
<
>
) =
0
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
*
)
override
;
void
(
WfExpectedTypeCastExpression
*
)
override
;
void
(
*
)
override
;
};
class
ModuleUsingFragmentVisitor
:
public
virtual
,
public
::
{
public
:
void
(
WfModuleUsingNameFragment
*
,
WfModuleUsingNameFragment
*
);
void
(
*
,
*
);
void
(
WfModuleUsingWildCardFragment
*
,
WfModuleUsingWildCardFragment
*
);
void
(
WfModuleUsingNameFragment
*
)
override
;
void
(
WfModuleUsingWildCardFragment
*
)
override
;
};
class
:
public
,
public
,
public
,
public
,
public
VirtualCfeDeclarationVisitor
,
public
VirtualCseDeclarationVisitor
,
public
VirtualCseStatementVisitor
,
public
CoroutineStatementVisitor
,
public
StateMachineStatementVisitor
,
public
VirtualCfeExpressionVisitor
,
public
VirtualCseExpressionVisitor
,
public
ModuleUsingFragmentVisitor
{
public
:
vl
::
<
>
(
vl
::
<
>
);
void
(
*
,
*
);
void
(
*
,
*
);
void
(
*
,
*
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
>
(
vl
::
<
>
);
vl
::
<
vl
::
parsing
::
>
(
*
);
vl
::
<
vl
::
parsing
::
>
(
*
);
vl
::
<
vl
::
parsing
::
>
(
*
);
vl
::
<
vl
::
parsing
::
>
(
*
);
vl
::
<
vl
::
parsing
::
>
(
*
);
vl
::
<
vl
::
parsing
::
>
(
*
);
vl
::
<
vl
::
parsing
::
>
(
*
);
};
}
}
}
#endif