WsParser_VS/libSyntax/ast_novel.h

126 lines
3.8 KiB
C
Raw Normal View History

2024-03-17 07:58:28 +00:00
#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 AbstractImpl :
public ast_basic::ExpressionElement, public ast_gen::SyntaxElement {
2024-03-17 07:58:28 +00:00
private:
std::shared_ptr<const SyntaxElement> parent_store = nullptr;
2024-03-17 07:58:28 +00:00
public:
explicit AbstractImpl(std::shared_ptr<const lib_syntax::ExpressionRule> rule_bind);
2024-03-17 07:58:28 +00:00
// ͨ<><CDA8> SyntaxElement <20>̳<EFBFBD>
virtual std::shared_ptr<const ast_basic::Expression> bindExpression() const override;
QString path() const override;
virtual std::shared_ptr<const ast_gen::SyntaxElement> parent() const override;
virtual void setParent(std::shared_ptr<const ast_gen::SyntaxElement> inst) override;
virtual QList<std::shared_ptr<const ast_gen::TokenAccess>> selfTokens() const override;
};
2024-03-17 07:58:28 +00:00
class LIBSYNTAX_EXPORT TextSection : public AbstractImpl {
2024-03-17 07:58:28 +00:00
public:
TextSection(std::shared_ptr<const lib_syntax::ExpressionRule> rule_bind);
2024-03-17 07:58:28 +00:00
QString content() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString signature() const override;
};
class LIBSYNTAX_EXPORT FragmentRefers : public AbstractImpl {
2024-03-17 07:58:28 +00:00
public:
FragmentRefers(std::shared_ptr<const lib_syntax::ExpressionRule> rule_bind);
2024-03-17 07:58:28 +00:00
QString storyRefer() const;
QString fragmentRefer() const;
2024-03-31 05:59:17 +00:00
QString referSignature() const;
2024-03-17 07:58:28 +00:00
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString signature() const override;
};
class LIBSYNTAX_EXPORT FragmentDefine : public AbstractImpl {
2024-03-17 07:58:28 +00:00
public:
FragmentDefine(std::shared_ptr<const lib_syntax::ExpressionRule> rule_bind);
2024-03-17 07:58:28 +00:00
QString name() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString signature() const override;
};
class LIBSYNTAX_EXPORT ArticleDefine : public AbstractImpl{
2024-03-17 07:58:28 +00:00
public:
ArticleDefine(std::shared_ptr<const lib_syntax::ExpressionRule> rule_bind);
2024-03-17 07:58:28 +00:00
QString name() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString signature() const override;
};
class LIBSYNTAX_EXPORT VolumeDefine : public AbstractImpl {
2024-03-17 07:58:28 +00:00
public:
VolumeDefine(std::shared_ptr<const lib_syntax::ExpressionRule> rule_bind);
2024-03-17 07:58:28 +00:00
QString name() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString signature() const override;
};
class LIBSYNTAX_EXPORT StoryDefine : public AbstractImpl {
2024-03-17 07:58:28 +00:00
public:
StoryDefine(std::shared_ptr<const lib_syntax::ExpressionRule> rule_bind);
2024-03-17 07:58:28 +00:00
QString name() const;
int sort() const;
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString signature() const override;
};
class LIBSYNTAX_EXPORT Document : public AbstractImpl {
2024-03-17 07:58:28 +00:00
public:
Document(std::shared_ptr<const lib_syntax::ExpressionRule> rule_bind);
2024-03-17 07:58:28 +00:00
// SyntaxElement interface
public:
virtual int typeMark() const override;
virtual bool isAnonymous() const override;
virtual QString signature() const override;
};
}