WsParser_VS/libSyntax/ast_novel.h

184 lines
6.6 KiB
C++

#pragma once
#include "ast_gen.h"
namespace example_novel
{
enum class NovelNode {
TextSection = 1,
FragmentRefer = 2,
FragmentDefine = 3,
StoryDefine = 4,
Document = 5,
ArticleDefine = 6,
VolumeDefine = 7,
};
class LIBSYNTAX_EXPORT TokenSL {
private:
QList<std::shared_ptr<const ast_gen::TokenAccess>> tokens_store;
public:
virtual void appendDefinedTokens(std::shared_ptr<const ast_gen::SyntaxElement> elm, QList<std::shared_ptr<const lib_token::Token> > tokens);
virtual QList<std::shared_ptr<const ast_gen::TokenAccess>> selfTokens() const;
};
class LIBSYNTAX_EXPORT TextSection : public ast_gen::SyntaxElement, public TokenSL {
private:
QString content_store;
QString file_path;
std::shared_ptr<const SyntaxElement> pnode_store;
public:
TextSection(const QString& text, const QString path, std::shared_ptr<const SyntaxElement> parent);
QString content() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString path() const override;
virtual QString signature() const override;
virtual std::shared_ptr<const ast_gen::SyntaxElement> parent() const override;
virtual QList<std::shared_ptr<const ast_gen::TokenAccess> > selfTokens() const override;
};
class LIBSYNTAX_EXPORT FragmentRefers : public ast_gen::SyntaxElement, public TokenSL {
private:
QString story_ref;
QString fragm_ref;
QString path_store;
std::shared_ptr<const SyntaxElement> pnode_store;
public:
FragmentRefers(const QString& story, const QString& fragment, const QString& path, std::shared_ptr<const SyntaxElement> parent);
QString storyRefer() const;
QString fragmentRefer() const;
QString referSignature() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString path() const override;
virtual QString signature() const override;
virtual std::shared_ptr<const ast_gen::SyntaxElement> parent() const override;
virtual QList<std::shared_ptr<const ast_gen::TokenAccess> > selfTokens() const override;
};
class LIBSYNTAX_EXPORT FragmentDefine : public ast_gen::SyntaxElement, public TokenSL {
private:
QString name_store;
QString path_store;
std::shared_ptr<const SyntaxElement> pnode_store;
public:
FragmentDefine(const QString& name, const QString& path, std::shared_ptr<const SyntaxElement> parent);
QString name() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString path() const override;
virtual QString signature() const override;
virtual std::shared_ptr<const ast_gen::SyntaxElement> parent() const override;
virtual QList<std::shared_ptr<const ast_gen::TokenAccess> > selfTokens() const override;
};
class LIBSYNTAX_EXPORT ArticleDefine : public ast_gen::SyntaxElement, public TokenSL {
private:
QString name_store;
QString path_store;
std::shared_ptr<const SyntaxElement> pnode_store;
public:
ArticleDefine(const QString& name, const QString& path, std::shared_ptr<const SyntaxElement> parent);
QString name() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString path() const override;
virtual QString signature() const override;
virtual std::shared_ptr<const ast_gen::SyntaxElement> parent() const override;
virtual QList<std::shared_ptr<const ast_gen::TokenAccess> > selfTokens() const override;
};
class LIBSYNTAX_EXPORT VolumeDefine : public ast_gen::SyntaxElement, public TokenSL {
private:
QString name_store;
QString path_store;
std::shared_ptr<const SyntaxElement> pnode_store;
public:
VolumeDefine(const QString& name, const QString& path, std::shared_ptr<const SyntaxElement> parent);
QString name() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString path() const override;
virtual QString signature() const override;
virtual std::shared_ptr<const ast_gen::SyntaxElement> parent() const override;
virtual QList<std::shared_ptr<const ast_gen::TokenAccess> > selfTokens() const override;
};
class LIBSYNTAX_EXPORT StoryDefine : public ast_gen::SyntaxElement, public TokenSL {
private:
QString name_store;
int sort_index;
QString path_store;
std::shared_ptr<const SyntaxElement> pnode_store;
public:
StoryDefine(const QString name, int sort, const QString path, std::shared_ptr<const SyntaxElement> parent);
QString name() const;
int sort() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString path() const override;
virtual QString signature() const override;
virtual std::shared_ptr<const ast_gen::SyntaxElement> parent() const override;
virtual QList<std::shared_ptr<const ast_gen::TokenAccess> > selfTokens() const override;
};
class LIBSYNTAX_EXPORT Document : public ast_gen::SyntaxElement {
private:
QString path_store;
std::shared_ptr<const ast_gen::SyntaxElement> pnode_store;
public:
Document(const QString& path, std::shared_ptr<const ast_gen::SyntaxElement> pnode);
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString path() const override;
virtual QString signature() const override;
virtual std::shared_ptr<const ast_gen::SyntaxElement> parent() const override;
virtual QList<std::shared_ptr<const ast_gen::TokenAccess>> selfTokens() const override;
};
class LIBSYNTAX_EXPORT NovelExprsVisitor : public ast_gen::ExprVisitor {
// ExprVisitor interface
public:
virtual std::shared_ptr<const ast_gen::SyntaxElement> visit(std::shared_ptr<const ast_basic::ExprNode> expr, std::shared_ptr<const ast_gen::SyntaxElement> pnode) const override;
};
}