update
This commit is contained in:
parent
956bc5c85c
commit
cab9153783
|
@ -76,6 +76,10 @@
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>libWords.lib;libSyntax.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>libWords.lib;libSyntax.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
|
<ClCompile>
|
||||||
|
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||||
|
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
|
|
@ -10,11 +10,11 @@ int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QCoreApplication a(argc, argv);
|
QCoreApplication a(argc, argv);
|
||||||
|
|
||||||
QFile in(u8"D:\\Projects\\Cpp\\WsNovelParser\\CoreTest\\syntax_example.txt");
|
QFile in("D:\\Projects\\Cpp\\WsNovelParser\\CoreTest\\syntax_example.txt");
|
||||||
in.open(QIODevice::ReadOnly|QIODevice::Text);
|
in.open(QIODevice::ReadOnly|QIODevice::Text);
|
||||||
QTextStream tt(&in);
|
QTextStream tt(&in);
|
||||||
lib_words::WordReader reader;
|
lib_words::WordReader reader;
|
||||||
auto vwords = reader.wordsFrom(tt, u8"D:\\Projects\\Cpp\\WsNovelParser\\CoreTest\\syntax_example.txt");
|
auto vwords = reader.wordsFrom(tt, "D:\\Projects\\Cpp\\WsNovelParser\\CoreTest\\syntax_example.txt");
|
||||||
|
|
||||||
auto words = vwords;
|
auto words = vwords;
|
||||||
while (words) {
|
while (words) {
|
||||||
|
@ -25,7 +25,7 @@ int main(int argc, char *argv[])
|
||||||
ast_gen::SyntaxParser parser(example_novel::NovalSyntax::getSyntaxTree());
|
ast_gen::SyntaxParser parser(example_novel::NovalSyntax::getSyntaxTree());
|
||||||
auto rst = parser.parse(vwords);
|
auto rst = parser.parse(vwords);
|
||||||
for (auto one : rst) {
|
for (auto one : rst) {
|
||||||
qDebug() << u8"===================================================";
|
qDebug() << "===================================================";
|
||||||
qDebug().noquote() << one->totalErrors();
|
qDebug().noquote() << one->totalErrors();
|
||||||
auto vtoken = one->currentToken();
|
auto vtoken = one->currentToken();
|
||||||
while (vtoken) {
|
while (vtoken) {
|
||||||
|
|
|
@ -12,7 +12,7 @@ using namespace std;
|
||||||
#include "syntax_templets.h"
|
#include "syntax_templets.h"
|
||||||
using namespace lib_composit;
|
using namespace lib_composit;
|
||||||
|
|
||||||
void point_nmset(std::shared_ptr<PointDefines> inst, std::shared_ptr<const lib_token::IToken> token) {
|
void point_nm_set(std::shared_ptr<PointDefines> inst, std::shared_ptr<const lib_token::IToken> token) {
|
||||||
inst->addToken(token);
|
inst->addToken(token);
|
||||||
inst->setName(token->content());
|
inst->setName(token->content());
|
||||||
}
|
}
|
||||||
|
@ -32,15 +32,15 @@ void slice_nm_set(std::shared_ptr<FragmentSlice> inst, std::shared_ptr<const lib
|
||||||
inst->addToken(token);
|
inst->addToken(token);
|
||||||
inst->setName(token->content());
|
inst->setName(token->content());
|
||||||
}
|
}
|
||||||
void story_nmset(std::shared_ptr<StoryDefine> inst, std::shared_ptr<const lib_token::IToken> token) {
|
void story_nm_set(std::shared_ptr<StoryDefine> inst, std::shared_ptr<const lib_token::IToken> token) {
|
||||||
inst->addToken(token);
|
inst->addToken(token);
|
||||||
inst->setName(token->content());
|
inst->setName(token->content());
|
||||||
}
|
}
|
||||||
void article_nset(std::shared_ptr<ArticleDefine>inst, std::shared_ptr<const lib_token::IToken> token) {
|
void article_nm_set(std::shared_ptr<ArticleDefine>inst, std::shared_ptr<const lib_token::IToken> token) {
|
||||||
inst->addToken(token);
|
inst->addToken(token);
|
||||||
inst->setName(token->content());
|
inst->setName(token->content());
|
||||||
}
|
}
|
||||||
void volume_nset(std::shared_ptr<VolumeDefine> inst, std::shared_ptr<const lib_token::IToken> token) {
|
void volume_nm_set(std::shared_ptr<VolumeDefine> inst, std::shared_ptr<const lib_token::IToken> token) {
|
||||||
inst->addToken(token);
|
inst->addToken(token);
|
||||||
inst->setName(token->content());
|
inst->setName(token->content());
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ void rank_set(std::shared_ptr<RankDeclare> inst, std::shared_ptr<const lib_token
|
||||||
inst->setRank(token->content().toInt());
|
inst->setRank(token->content().toInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
using TextDeclsSyntaxDef = lib_composit::Multi<AnyR<TMate<TextSection, Numbers>, TMate<TextSection, NormalText>, TMate<TextSection, ReferMk>, TMate<TextSection, SplitMk>>>;
|
using TextDeclsSyntaxDef = lib_composit::Multi<AnyR<TMatch<Numbers>, TMatch<NormalText>, TMatch<ReferMk>, TMatch<SplitMk>>>;
|
||||||
class DeclSyntax : public ElementRule<TextSection, (int) NovelNode::TextSection, TextDeclsSyntaxDef> {
|
class DeclSyntax : public ElementRule<TextSection, (int) NovelNode::TextSection, TextDeclsSyntaxDef> {
|
||||||
public:
|
public:
|
||||||
DeclSyntax() : ElementRule<TextSection, (int) NovelNode::TextSection, TextDeclsSyntaxDef>("decl_section") { }
|
DeclSyntax() : ElementRule<TextSection, (int) NovelNode::TextSection, TextDeclsSyntaxDef>("decl_section") { }
|
||||||
|
@ -62,9 +62,9 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using PointSyntaxDef = lib_composit::SeqsR<TMate<PointDefines, LBracket>, TMate<PointDefines, PointWord>, TAct<PointDefines, NameText, point_nmset>,
|
using PointSyntaxDef = lib_composit::SeqsR<TMatch<LBracket>, TMatch<PointWord>, TAct<PointDefines, NameText, point_nm_set>,
|
||||||
Opt<DeclSyntax>,
|
Opt<DeclSyntax>,
|
||||||
TMate<PointDefines, RBracket>>;
|
TMatch<RBracket>>;
|
||||||
class PointSyntax : public ElementRule<PointDefines, (int) NovelNode::PointDefines, PointSyntaxDef> {
|
class PointSyntax : public ElementRule<PointDefines, (int) NovelNode::PointDefines, PointSyntaxDef> {
|
||||||
public:
|
public:
|
||||||
PointSyntax() : ElementRule<PointDefines, (int) NovelNode::PointDefines, PointSyntaxDef>("point_define") { }
|
PointSyntax() : ElementRule<PointDefines, (int) NovelNode::PointDefines, PointSyntaxDef>("point_define") { }
|
||||||
|
@ -77,9 +77,9 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using ReferSyntaxDef = lib_composit::SeqsR<TMate<PointRefers, LBracket>, TMate<PointRefers, ReferMk>, TMate<PointRefers, PointWord>, TAct<PointRefers, NameText, ref_story_set>, TMate<PointRefers, ReferMk>, TAct<PointRefers, NameText, ref_slice_set>, TMate<PointRefers, ReferMk>, TAct<PointRefers, NameText, ref_point_set>,
|
using ReferSyntaxDef = lib_composit::SeqsR<TMatch<LBracket>, TMatch<ReferMk>, TMatch<PointWord>, TAct<PointRefers, NameText, ref_story_set>, TMatch<ReferMk>, TAct<PointRefers, NameText, ref_slice_set>, TMatch<ReferMk>, TAct<PointRefers, NameText, ref_point_set>,
|
||||||
Opt<DeclSyntax>,
|
Opt<DeclSyntax>,
|
||||||
TMate<PointDefines, RBracket>>;
|
TMatch<RBracket>>;
|
||||||
class ReferSyntax : public ElementRule<PointRefers, (int) NovelNode::PointRefers, ReferSyntaxDef> {
|
class ReferSyntax : public ElementRule<PointRefers, (int) NovelNode::PointRefers, ReferSyntaxDef> {
|
||||||
public:
|
public:
|
||||||
ReferSyntax() : ElementRule < PointRefers, (int) NovelNode::PointRefers, ReferSyntaxDef>("point_refer") { }
|
ReferSyntax() : ElementRule < PointRefers, (int) NovelNode::PointRefers, ReferSyntaxDef>("point_refer") { }
|
||||||
|
@ -92,9 +92,9 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using SliceSyntaxDef = lib_composit::SeqsR<TMate<FragmentSlice, LBracket>, TMate<FragmentSlice, SliceWord>, TAct<FragmentSlice, NameText, slice_nm_set>,
|
using SliceSyntaxDef = lib_composit::SeqsR<TMatch<LBracket>, TMatch<SliceWord>, TAct<FragmentSlice, NameText, slice_nm_set>,
|
||||||
lib_composit::OptMulti<AnyR<PointSyntax, ReferSyntax, DeclSyntax>>,
|
lib_composit::OptMulti<AnyR<PointSyntax, ReferSyntax, DeclSyntax>>,
|
||||||
TMate<FragmentSlice, RBracket>>;
|
TMatch<RBracket>>;
|
||||||
class SliceSyntax : public ElementRule<FragmentSlice, (int) NovelNode::FragmentSlice, SliceSyntaxDef> {
|
class SliceSyntax : public ElementRule<FragmentSlice, (int) NovelNode::FragmentSlice, SliceSyntaxDef> {
|
||||||
public:
|
public:
|
||||||
SliceSyntax() : ElementRule<FragmentSlice, (int) NovelNode::FragmentSlice, SliceSyntaxDef>("slice_define") { }
|
SliceSyntax() : ElementRule<FragmentSlice, (int) NovelNode::FragmentSlice, SliceSyntaxDef>("slice_define") { }
|
||||||
|
@ -107,9 +107,9 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using StorySyntaxDef = lib_composit::SeqsR<TMate<StoryDefine, LBracket>, TMate<StoryDefine, StoryWord>, TAct<StoryDefine, NameText, story_nmset>,
|
using StorySyntaxDef = lib_composit::SeqsR<TMatch<LBracket>, TMatch<StoryWord>, TAct<StoryDefine, NameText, story_nm_set>,
|
||||||
lib_composit::OptMulti<AnyR<SliceSyntax, DeclSyntax>>,
|
lib_composit::OptMulti<AnyR<SliceSyntax, DeclSyntax>>,
|
||||||
TMate<StoryDefine, RBracket>>;
|
TMatch<RBracket>>;
|
||||||
class StorySyntax : public ElementRule<StoryDefine, (int) NovelNode::StoryDefine, StorySyntaxDef> {
|
class StorySyntax : public ElementRule<StoryDefine, (int) NovelNode::StoryDefine, StorySyntaxDef> {
|
||||||
public:
|
public:
|
||||||
StorySyntax() : ElementRule<StoryDefine, (int) NovelNode::StoryDefine, StorySyntaxDef>("story_define") { }
|
StorySyntax() : ElementRule<StoryDefine, (int) NovelNode::StoryDefine, StorySyntaxDef>("story_define") { }
|
||||||
|
@ -122,9 +122,9 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using ArticleSyntaxDef = lib_composit::SeqsR<TMate<ArticleDefine, LBracket>, TMate<ArticleDefine, ArticleWord>, TAct<ArticleDefine, NameText, article_nset>,
|
using ArticleSyntaxDef = lib_composit::SeqsR<TMatch<LBracket>, TMatch<ArticleWord>, TAct<ArticleDefine, NameText, article_nm_set>,
|
||||||
lib_composit::OptMulti<AnyR<ReferSyntax, DeclSyntax>>,
|
lib_composit::OptMulti<AnyR<ReferSyntax, DeclSyntax>>,
|
||||||
TMate<ArticleDefine, RBracket>>;
|
TMatch<RBracket>>;
|
||||||
class ArticleSyntax : public ElementRule<ArticleDefine, (int) NovelNode::ArticleDefine, ArticleSyntaxDef> {
|
class ArticleSyntax : public ElementRule<ArticleDefine, (int) NovelNode::ArticleDefine, ArticleSyntaxDef> {
|
||||||
public:
|
public:
|
||||||
ArticleSyntax() : ElementRule<ArticleDefine, (int) NovelNode::ArticleDefine, ArticleSyntaxDef>("article_define") { }
|
ArticleSyntax() : ElementRule<ArticleDefine, (int) NovelNode::ArticleDefine, ArticleSyntaxDef>("article_define") { }
|
||||||
|
@ -137,9 +137,9 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using VolumeSyntaxDef = lib_composit::SeqsR<TMate<VolumeDefine, LBracket>, TMate<VolumeDefine, VolumeWord>, TAct<VolumeDefine, NameText, volume_nset>,
|
using VolumeSyntaxDef = lib_composit::SeqsR<TMatch<LBracket>, TMatch<VolumeWord>, TAct<VolumeDefine, NameText, volume_nm_set>,
|
||||||
lib_composit::OptMulti<AnyR<ArticleSyntax, DeclSyntax>>,
|
lib_composit::OptMulti<AnyR<ArticleSyntax, DeclSyntax>>,
|
||||||
TMate<VolumeDefine, RBracket>>;
|
TMatch<RBracket>>;
|
||||||
class VolumeSyntax : public ElementRule<VolumeDefine, (int) NovelNode::VolumeDefine, VolumeSyntaxDef> {
|
class VolumeSyntax : public ElementRule<VolumeDefine, (int) NovelNode::VolumeDefine, VolumeSyntaxDef> {
|
||||||
public:
|
public:
|
||||||
VolumeSyntax() : ElementRule<VolumeDefine, (int) NovelNode::VolumeDefine, VolumeSyntaxDef>("volume_define") { }
|
VolumeSyntax() : ElementRule<VolumeDefine, (int) NovelNode::VolumeDefine, VolumeSyntaxDef>("volume_define") { }
|
||||||
|
@ -152,7 +152,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using RankSyntaxDef = lib_composit::SeqsR<TMate<RankDeclare, DeclareSymbo>, TMate<RankDeclare, RankWord>, TAct<RankDeclare, Numbers, rank_set>>;
|
using RankSyntaxDef = lib_composit::SeqsR<TMatch<DeclareSymbo>, TMatch<RankWord>, TAct<RankDeclare, Numbers, rank_set>>;
|
||||||
class RankSyntax : public ElementRule<RankDeclare, (int) NovelNode::RankDeclaration, RankSyntaxDef> {
|
class RankSyntax : public ElementRule<RankDeclare, (int) NovelNode::RankDeclaration, RankSyntaxDef> {
|
||||||
public:
|
public:
|
||||||
RankSyntax() : ElementRule<RankDeclare, (int) NovelNode::RankDeclaration, RankSyntaxDef>("rank_define") { }
|
RankSyntax() : ElementRule<RankDeclare, (int) NovelNode::RankDeclaration, RankSyntaxDef>("rank_define") { }
|
||||||
|
@ -218,3 +218,7 @@ public:
|
||||||
// node_register(child, next_child_items);
|
// node_register(child, next_child_items);
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
std::shared_ptr<const lib_syntax::ExprRule> example_novel::NovalSyntax::getSyntaxTree() {
|
||||||
|
return std::shared_ptr<DocumentSyntax>();
|
||||||
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace lib_composit {
|
||||||
void apntk(std::shared_ptr<ExprT> expr, std::shared_ptr<const lib_token::IToken> t) {
|
void apntk(std::shared_ptr<ExprT> expr, std::shared_ptr<const lib_token::IToken> t) {
|
||||||
expr->addToken(t);
|
expr->addToken(t);
|
||||||
}
|
}
|
||||||
template<typename E, typename T>
|
template<typename T>
|
||||||
requires std::derived_from<E, ast_basic::IExprInstance>&& std::derived_from<T, lib_token::ITokenProcess>
|
requires std::derived_from<T, lib_token::ITokenProcess>
|
||||||
class TMate : public TAct<E, T, apntk> { };
|
class TMatch : public TAct<ast_basic::IExprInstance, T, apntk<ast_basic::IExprInstance>> { };
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue