File Index Symbol Index

/*********************************************************************** This file is generated by: Vczh Parser Generator From parser definition:GuiInstanceQuery_Parser.parser.txt Licensed under https://github.com/vczh-libraries/License ***********************************************************************/
#ifndef VCZH_PRESENTATION_REFLECTION_INSTANCEQUERY_GUIINSTANCEQUERY_PARSER_AST
#define VCZH_PRESENTATION_REFLECTION_INSTANCEQUERY_GUIINSTANCEQUERY_PARSER_AST
#include <VlppParser.h>
namespace
vl
{
namespace
presentation
{
/// <summary>Token types. Values of enum items will be used in <see cref="vl::regex::RegexToken::token"/>.</summary>
enum
class
GuiIqParserTokenIndex
{
/// <summary>Token INDIRECT: ////</summary>
INDIRECT
=
0
,
/// <summary>Token DIRECT: //</summary>
DIRECT
=
1
,
/// <summary>Token NAME: [a-zA-Z_][a-zA-Z0-9]*</summary>
NAME
=
2
,
/// <summary>Token WILDCARD: /*</summary>
WILDCARD
=
3
,
/// <summary>Token OPEN: /(</summary>
OPEN
=
4
,
/// <summary>Token CLOSE: /)</summary>
CLOSE
=
5
,
/// <summary>Token XOR: /^</summary>
XOR
=
6
,
/// <summary>Token INTERSECT: /*</summary>
INTERSECT
=
7
,
/// <summary>Token UNION: /+</summary>
UNION
=
8
,
/// <summary>Token SUBSTRACT: -</summary>
SUBSTRACT
=
9
,
/// <summary>Token ATTRIBUTE: @</summary>
ATTRIBUTE
=
10
,
/// <summary>Token COLON: :</summary>
COLON
=
11
,
/// <summary>Token DOT: .</summary>
DOT
=
12
,
/// <summary>Discardable token SPACE: /s+</summary>
SPACE
=
13
, };
class
GuiIqQuery
;
class
GuiIqPrimaryQuery
;
class
GuiIqCascadeQuery
;
class
GuiIqSetQuery
;
class
GuiIqQuery
abstract
:
public
vl
::
parsing
::
ParsingTreeCustomBase
,
vl
::
reflection
::
Description
<
GuiIqQuery
> {
public
:
class
IVisitor
:
public
vl
::
reflection
::
IDescriptable
,
vl
::
reflection
::
Description
<
IVisitor
> {
public
:
virtual
void
Visit
(
GuiIqPrimaryQuery
*
node
)=
0
;
virtual
void
Visit
(
GuiIqCascadeQuery
*
node
)=
0
;
virtual
void
Visit
(
GuiIqSetQuery
*
node
)=
0
; };
virtual
void
Accept
(
GuiIqQuery
::
IVisitor
*
visitor
)=
0
; };
enum
class
GuiIqNameOption
{
Specified
,
Any
, };
enum
class
GuiIqChildOption
{
Direct
,
Indirect
, };
class
GuiIqPrimaryQuery
:
public
GuiIqQuery
,
vl
::
reflection
::
Description
<
GuiIqPrimaryQuery
> {
public
:
GuiIqChildOption
childOption
;
GuiIqNameOption
attributeNameOption
;
vl
::
parsing
::
ParsingToken
attributeName
;
GuiIqNameOption
typeNameOption
;
vl
::
parsing
::
ParsingToken
typeName
;
vl
::
parsing
::
ParsingToken
referenceName
;
void
Accept
(
GuiIqQuery
::
IVisitor
*
visitor
)
override
;
static
vl
::
Ptr
<
GuiIqPrimaryQuery
>
Convert
(
vl
::
Ptr
<
vl
::
parsing
::
ParsingTreeNode
>
node
,
const
vl
::
collections
::
List
<
vl
::
regex
::
RegexToken
>&
tokens
); };
class
GuiIqCascadeQuery
:
public
GuiIqQuery
,
vl
::
reflection
::
Description
<
GuiIqCascadeQuery
> {
public
:
vl
::
Ptr
<
GuiIqQuery
>
parent
;
vl
::
Ptr
<
GuiIqQuery
>
child
;
void
Accept
(
GuiIqQuery
::
IVisitor
*
visitor
)
override
;
static
vl
::
Ptr
<
GuiIqCascadeQuery
>
Convert
(
vl
::
Ptr
<
vl
::
parsing
::
ParsingTreeNode
>
node
,
const
vl
::
collections
::
List
<
vl
::
regex
::
RegexToken
>&
tokens
); };
enum
class
GuiIqBinaryOperator
{
ExclusiveOr
,
Intersect
,
Union
,
Substract
, };
class
GuiIqSetQuery
:
public
GuiIqQuery
,
vl
::
reflection
::
Description
<
GuiIqSetQuery
> {
public
:
vl
::
Ptr
<
GuiIqQuery
>
first
;
vl
::
Ptr
<
GuiIqQuery
>
second
;
GuiIqBinaryOperator
op
;
void
Accept
(
GuiIqQuery
::
IVisitor
*
visitor
)
override
;
static
vl
::
Ptr
<
GuiIqSetQuery
>
Convert
(
vl
::
Ptr
<
vl
::
parsing
::
ParsingTreeNode
>
node
,
const
vl
::
collections
::
List
<
vl
::
regex
::
RegexToken
>&
tokens
); }; } }
namespace
vl
{
namespace
reflection
{
namespace
description
{
#ifndef VCZH_DEBUG_NO_REFLECTION
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
void
Visit
(
vl
::
presentation
::
GuiIqPrimaryQuery
*
node
)
override
{ }
void
Visit
(
vl
::
presentation
::
GuiIqCascadeQuery
*
node
)
override
{ }
void
Visit
(
vl
::
presentation
::
GuiIqSetQuery
*
node
)
override
{ }
#endif #endif
/// <summary>Load all reflectable AST types, only available when <b>VCZH_DEBUG_NO_REFLECTION</b> is off.</summary>
/// <returns>Returns true if this operation succeeded.</returns>
extern
bool
GuiIqLoadTypes
(); } } }
#endif