#ifndef VCZH_PARSING_PARSING
#define VCZH_PARSING_PARSING
#include "ParsingState.h"
namespace
{
namespace
{
namespace
{
class
:
public
{
protected
:
<
>
;
public
:
(
<
>
);
();
<
>
();
virtual
void
();
virtual
::
(
&
,
collections
::
<
<
>>&
)=
0
;
bool
(
&
,
ParsingTransitionProcessor
&
,
collections
::
<
<
>>&
);
<
>
(
&
,
collections
::
<
<
>>&
);
<
>
(
const
&
,
const
&
,
collections
::
<
<
>>&
,
= -
1
);
};
class
:
public
{
protected
:
virtual
bool
();
virtual
void
();
virtual
::
(
&
,
,
collections
::
<
<
>>&
);
public
:
(
<
>
=
0
);
();
::
(
&
,
collections
::
<
<
>>&
)
override
;
};
class
:
public
{
public
:
struct
{
::
*
;
;
;
;
;
()
:future(
0
)
, insertedTokenCount(
0
)
, index(-
1
)
, previousIndex(-
1
)
, nextIndex(-
1
)
{
}
};
protected
:
;
collections
::
<
>
;
;
&
(
);
&
(
,
);
bool
()
override
;
void
()
override
;
::
(
&
,
,
collections
::
<
<
>>&
)
override
;
public
:
(
<
>
=
0
,
= -
1
);
~
ParsingAutoRecoverParser
();
void
()
override
;
};
class
:
public
{
typedef
collections
::
<
::
>
;
protected
:
;
;
virtual
void
(
&
,
,
collections
::
<
::
*>&
,
&
,
&
,
collections
::
<
<
>>&
);
GetResolvableFutureLevels
(
collections
::
<
::
*>&
,
,
);
(
&
,
collections
::
<
::
*>&
,
&
,
&
,
collections
::
<
<
>>&
);
(
collections
::
<
::
*>&
);
void
(
collections
::
<
::
*>&
,
,
collections
::
<
>&
);
GetAffectedStackNodeCount
(
collections
::
<
::
*>&
,
collections
::
<
>&
);
void
(
&
,
::
*
,
lastAvailableInstructionCount
);
void
(
&
,
collections
::
<
::
*>&
,
,
,
,
collections
::
<
<
>>&
);
void
(
&
,
collections
::
<
::
*>&
,
,
,
,
collections
::
<
<
>>&
);
public
:
(
<
>
=
0
);
();
::
(
&
,
collections
::
<
<
>>&
)
override
;
void
()
override
;
};
class
ParsingAutoRecoverAmbiguousParser
:
public
{
protected
:
;
void
(
&
,
,
collections
::
<
::
*>&
,
&
,
&
,
collections
::
<
<
>>&
)
override
;
public
:
ParsingAutoRecoverAmbiguousParser
(
<
>
=
0
,
= -
1
);
~
ParsingAutoRecoverAmbiguousParser
();
};
extern
<
>
(
<
>
);
extern
<
>
(
<
>
);
extern
<
>
CreateBootstrapStrictParser
();
extern
<
>
CreateBootstrapAutoRecoverParser
();
}
}
}
#ifndef VCZH_DEBUG_NO_REFLECTION
namespace
{
namespace
{
namespace
{
#define PARSINGREFLECTION_TYPELIST(F)\
F(parsing::ParsingTextPos)\
F(parsing::ParsingTextRange)\
F(parsing::ParsingTreeNode)\
F(parsing::ParsingTreeToken)\
F(parsing::ParsingTreeObject)\
F(parsing::ParsingTreeArray)\
F(parsing::ParsingTreeCustomBase)\
F(parsing::ParsingToken)\
F(parsing::ParsingError)\
PARSINGREFLECTION_TYPELIST(DECL_TYPE_INFO)
template
<>
struct
<
parsing
::
>{
static
const
; };
template
<>
struct
<
parsing
::
>{
static
const
; };
template
<>
struct
<
parsing
::
>{
static
const
; };
template
<>
struct
<
parsing
::
>{
static
const
; };
template
<>
struct
<
parsing
::
>{
static
const
; };
template
<>
struct
<
parsing
::
>{
static
const
; };
template
<>
struct
<
parsing
::
>{
static
const
; };
template
<>
struct
<
parsing
::
>{
static
const
; };
template
<>
struct
<
parsing
::
>{
static
const
; };
}
}
}
#endif
namespace
{
namespace
{
namespace
{
extern
bool
();
}
}
}
#endif