2024-03-17 07:58:28 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
#include "ast_basic.h"
|
|
|
|
|
#include "libsyntax.h"
|
2025-02-08 01:06:39 +00:00
|
|
|
|
#include <QtCore/QHash>
|
|
|
|
|
#include <QtCore/QString>
|
|
|
|
|
|
|
|
|
|
namespace ast_gen {
|
|
|
|
|
class TokenAccess;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class SyntaxElement {
|
|
|
|
|
public:
|
|
|
|
|
virtual ~SyntaxElement() = default;
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽʵ<EFBFBD><EFBFBD>.
|
|
|
|
|
*
|
|
|
|
|
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽʵ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
virtual std::shared_ptr<const ast_basic::IExprInstance> bindExpression() const = 0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
virtual int typeMark() const = 0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>.
|
|
|
|
|
*
|
|
|
|
|
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
*/
|
|
|
|
|
virtual bool isAnonymous() const = 0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
virtual QString path() const = 0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Ԫ<EFBFBD><EFBFBD>ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
virtual QString signature() const = 0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
|
|
|
|
|
* @return δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>parent<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nullptr
|
|
|
|
|
*/
|
|
|
|
|
virtual std::weak_ptr<const SyntaxElement> parent() const = 0;
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD>ָ<EFBFBD><EFBFBD>.
|
|
|
|
|
*
|
|
|
|
|
* \param inst
|
|
|
|
|
*/
|
|
|
|
|
virtual void setParent(std::shared_ptr<const SyntaxElement> inst) = 0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Token<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
virtual QList<std::shared_ptr<const TokenAccess>> selfTokens() const = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽӿ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT ElementAccess {
|
|
|
|
|
private:
|
|
|
|
|
std::shared_ptr<const SyntaxElement> peers;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
ElementAccess(std::shared_ptr<const SyntaxElement> point);
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<const SyntaxElement> element() const;
|
|
|
|
|
QList<std::shared_ptr<const ElementAccess>> children() const;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Token<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
virtual QList<std::shared_ptr<const TokenAccess>> tokens() const;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief TokenԪ<EFBFBD>ط<EFBFBD><EFBFBD>ʽӿ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT TokenAccess {
|
|
|
|
|
private:
|
|
|
|
|
std::shared_ptr<const ast_gen::SyntaxElement> element_bind;
|
|
|
|
|
std::shared_ptr<const lib_token::IToken> token_store;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
TokenAccess(std::shared_ptr<const ast_gen::SyntaxElement> elm_inst, std::shared_ptr<const lib_token::IToken> token_inst);
|
|
|
|
|
virtual std::shared_ptr<const ast_gen::SyntaxElement> bind() const;
|
|
|
|
|
virtual std::shared_ptr<const lib_token::IToken> token() const;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>Ԫ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT GlobalElement : public SyntaxElement {
|
|
|
|
|
private:
|
|
|
|
|
QString names_store;
|
|
|
|
|
QHash<QString, std::shared_ptr<const SyntaxElement>> node_cache;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
static GlobalElement* UniquePtr;
|
|
|
|
|
GlobalElement(const QString& name);
|
|
|
|
|
|
|
|
|
|
virtual void clearCache();
|
|
|
|
|
virtual std::shared_ptr<const ast_gen::SyntaxElement> appendToCache(std::shared_ptr<const ast_gen::SyntaxElement> named_node);
|
|
|
|
|
/**
|
|
|
|
|
* @brief ͨ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
* @param signature <EFBFBD><EFBFBD>ȫǩ<EFBFBD><EFBFBD>
|
|
|
|
|
* @return
|
|
|
|
|
* @throws û<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>׳<EFBFBD><EFBFBD>쳣
|
|
|
|
|
*/
|
|
|
|
|
virtual std::shared_ptr<const ast_gen::SyntaxElement> getNamedNodeBy(int paramType, const QString& signature) const;
|
|
|
|
|
virtual void addChild(std::shared_ptr<ast_gen::SyntaxElement> citem);
|
|
|
|
|
|
|
|
|
|
// ParseElement interface
|
|
|
|
|
public:
|
|
|
|
|
virtual int typeMark() const override;
|
|
|
|
|
virtual bool isAnonymous() const override;
|
|
|
|
|
virtual QString signature() const override;
|
|
|
|
|
virtual QString path() const override;
|
|
|
|
|
virtual std::weak_ptr<const SyntaxElement> parent() const override;
|
|
|
|
|
virtual void setParent(std::shared_ptr<const SyntaxElement> inst) override;
|
|
|
|
|
virtual QList<std::shared_ptr<const TokenAccess>> selfTokens() const override;
|
|
|
|
|
|
|
|
|
|
// ͨ<><CDA8> SyntaxElement <20>̳<EFBFBD>
|
|
|
|
|
virtual std::shared_ptr<const ast_basic::IExprInstance> bindExpression() const override;
|
|
|
|
|
};
|
|
|
|
|
}
|
2024-03-17 07:58:28 +00:00
|
|
|
|
|
2025-02-02 14:06:49 +00:00
|
|
|
|
namespace example_novel {
|
2024-06-18 04:44:18 +00:00
|
|
|
|
enum class NovelNode {
|
2024-06-20 13:36:46 +00:00
|
|
|
|
GlobalElement = 0,
|
2024-06-18 04:44:18 +00:00
|
|
|
|
TextSection = 1,
|
2025-02-02 14:26:27 +00:00
|
|
|
|
PointRefers = 2,
|
|
|
|
|
PointDefines = 3,
|
2024-06-18 04:44:18 +00:00
|
|
|
|
StoryDefine = 4,
|
|
|
|
|
Document = 5,
|
|
|
|
|
ArticleDefine = 6,
|
|
|
|
|
VolumeDefine = 7,
|
2024-06-20 13:36:46 +00:00
|
|
|
|
RankDeclaration = 8,
|
2025-02-02 14:29:03 +00:00
|
|
|
|
FragmentSlice = 9,
|
2024-06-18 04:44:18 +00:00
|
|
|
|
};
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/*
|
|
|
|
|
GlobalElement
|
|
|
|
|
\-Document
|
|
|
|
|
|-RankDeclaration
|
|
|
|
|
|-StoryDefine
|
|
|
|
|
| |-TextSection
|
|
|
|
|
| \-FragmentSlice
|
|
|
|
|
| |-TextSection
|
|
|
|
|
| |-PointDefines
|
|
|
|
|
| | \-TextSection
|
|
|
|
|
| \-PointRefers
|
|
|
|
|
| \-TextSection
|
|
|
|
|
\-VolumeDefine
|
|
|
|
|
|-TextSection
|
|
|
|
|
\-ArticleDefine
|
|
|
|
|
|-TextSection
|
|
|
|
|
\-PointRefers
|
|
|
|
|
\-TextSection
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
template<NovelNode type, bool named>
|
|
|
|
|
class AbstractImpl : public ast_basic::ExprInstance, public ast_gen::SyntaxElement {
|
2024-06-18 04:44:18 +00:00
|
|
|
|
private:
|
2024-06-18 11:55:36 +00:00
|
|
|
|
std::weak_ptr<const SyntaxElement> parent_store;
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
|
|
|
|
public:
|
2025-02-07 15:26:20 +00:00
|
|
|
|
AbstractImpl(std::shared_ptr<const lib_syntax::ExprRule> rule_bind)
|
|
|
|
|
: ExprInstance(rule_bind) {
|
|
|
|
|
parent_store.reset();
|
|
|
|
|
}
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
|
|
|
|
// ͨ<><CDA8> SyntaxElement <20>̳<EFBFBD>
|
2025-02-07 15:26:20 +00:00
|
|
|
|
virtual int typeMark() const override {
|
|
|
|
|
return (int) type;
|
|
|
|
|
}
|
|
|
|
|
virtual bool isAnonymous() const override {
|
|
|
|
|
return !named;
|
|
|
|
|
}
|
|
|
|
|
virtual std::shared_ptr<const IExprInstance> bindExpression() const override {
|
|
|
|
|
return shared_from_this();
|
|
|
|
|
}
|
|
|
|
|
QString path() const override {
|
|
|
|
|
return ExprInstance::filePath();
|
|
|
|
|
}
|
|
|
|
|
virtual std::weak_ptr<const ast_gen::SyntaxElement> parent() const override {
|
|
|
|
|
return this->parent_store;
|
|
|
|
|
}
|
|
|
|
|
virtual void setParent(std::shared_ptr<const ast_gen::SyntaxElement> inst) override {
|
|
|
|
|
this->parent_store = inst;
|
|
|
|
|
}
|
|
|
|
|
virtual QList<std::shared_ptr<const ast_gen::TokenAccess>> selfTokens() const override {
|
|
|
|
|
auto tokensx = ExprInstance::tokens();
|
|
|
|
|
QList<std::shared_ptr<const ast_gen::TokenAccess>> values;
|
|
|
|
|
for (auto xit : tokensx) {
|
|
|
|
|
values.append(std::make_shared<ast_gen::TokenAccess>(std::dynamic_pointer_cast<const ast_gen::SyntaxElement>(shared_from_this()), xit));
|
|
|
|
|
}
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
return values;
|
|
|
|
|
}
|
|
|
|
|
};
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT TextSection : public AbstractImpl<NovelNode::TextSection, false> {
|
2024-06-18 04:44:18 +00:00
|
|
|
|
public:
|
2024-07-12 04:53:43 +00:00
|
|
|
|
TextSection(std::shared_ptr<const lib_syntax::ExprRule> rule_bind);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2024-06-18 04:44:18 +00:00
|
|
|
|
QString content() const;
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
2024-06-18 04:44:18 +00:00
|
|
|
|
virtual QString signature() const override;
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT FragmentSlice : public AbstractImpl<NovelNode::FragmentSlice, true> {
|
|
|
|
|
private:
|
|
|
|
|
QString _slice_name;
|
|
|
|
|
|
2025-02-04 14:26:34 +00:00
|
|
|
|
public:
|
2025-02-07 15:26:20 +00:00
|
|
|
|
FragmentSlice(std::shared_ptr<const lib_syntax::ExprRule> rule);
|
|
|
|
|
|
|
|
|
|
QString name() const;
|
|
|
|
|
void setName(const QString& nm);
|
|
|
|
|
|
2025-02-04 14:26:34 +00:00
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
|
|
|
|
QString signature() const override;
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT PointRefers : public AbstractImpl<NovelNode::PointRefers, false> {
|
2025-02-04 14:26:34 +00:00
|
|
|
|
private:
|
|
|
|
|
QString story_refs, slice_ref, point_ref;
|
|
|
|
|
|
2024-06-18 04:44:18 +00:00
|
|
|
|
public:
|
2025-02-02 14:29:03 +00:00
|
|
|
|
PointRefers(std::shared_ptr<const lib_syntax::ExprRule> rule_bind);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
|
|
|
|
QString storyRefer() const;
|
2025-02-02 14:06:49 +00:00
|
|
|
|
void setStoryRefer(const QString& refer);
|
2024-07-28 08:37:31 +00:00
|
|
|
|
|
2025-02-04 14:26:34 +00:00
|
|
|
|
QString sliceRefer() const;
|
|
|
|
|
void setSliceRefer(const QString& refer);
|
|
|
|
|
|
|
|
|
|
QString pointRefer() const;
|
|
|
|
|
void setPointRefer(const QString& refer);
|
2024-07-28 08:37:31 +00:00
|
|
|
|
|
2024-06-18 04:44:18 +00:00
|
|
|
|
QString referSignature() const;
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
2024-06-18 04:44:18 +00:00
|
|
|
|
virtual QString signature() const override;
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>ڵ㶨<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT PointDefines : public AbstractImpl<NovelNode::PointDefines, true> {
|
2025-02-04 14:26:34 +00:00
|
|
|
|
private:
|
|
|
|
|
QString name_store;
|
|
|
|
|
|
2024-06-18 04:44:18 +00:00
|
|
|
|
public:
|
2025-02-02 14:30:47 +00:00
|
|
|
|
PointDefines(std::shared_ptr<const lib_syntax::ExprRule> rule_bind);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
|
|
|
|
QString name() const;
|
2025-02-02 14:06:49 +00:00
|
|
|
|
void setName(const QString& nm);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
2024-06-18 04:44:18 +00:00
|
|
|
|
virtual QString signature() const override;
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>½ڶ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT ArticleDefine : public AbstractImpl<NovelNode::ArticleDefine, true> {
|
2024-06-18 04:44:18 +00:00
|
|
|
|
public:
|
2024-07-12 04:53:43 +00:00
|
|
|
|
ArticleDefine(std::shared_ptr<const lib_syntax::ExprRule> rule_bind);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
|
|
|
|
QString name() const;
|
2025-02-02 14:06:49 +00:00
|
|
|
|
void setName(const QString& nm);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
2024-06-18 04:44:18 +00:00
|
|
|
|
virtual QString signature() const override;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
QString name_store;
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT VolumeDefine : public AbstractImpl<NovelNode::VolumeDefine, true> {
|
2024-06-18 04:44:18 +00:00
|
|
|
|
public:
|
2024-07-12 04:53:43 +00:00
|
|
|
|
VolumeDefine(std::shared_ptr<const lib_syntax::ExprRule> rule_bind);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
|
|
|
|
QString name() const;
|
2025-02-02 14:06:49 +00:00
|
|
|
|
void setName(const QString& nm);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
2024-06-18 04:44:18 +00:00
|
|
|
|
virtual QString signature() const override;
|
2024-07-13 05:17:56 +00:00
|
|
|
|
|
2024-06-18 04:44:18 +00:00
|
|
|
|
private:
|
|
|
|
|
QString name_store;
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT StoryDefine : public AbstractImpl<NovelNode::StoryDefine, true> {
|
2024-06-18 04:44:18 +00:00
|
|
|
|
public:
|
2024-07-12 04:53:43 +00:00
|
|
|
|
StoryDefine(std::shared_ptr<const lib_syntax::ExprRule> rule_bind);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
|
|
|
|
|
QString name() const;
|
2025-02-02 14:06:49 +00:00
|
|
|
|
void setName(const QString& nm);
|
2024-07-28 08:37:31 +00:00
|
|
|
|
|
2024-06-20 13:36:46 +00:00
|
|
|
|
void setSort(int value);
|
2024-06-18 04:44:18 +00:00
|
|
|
|
int sort() const;
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
2024-06-18 04:44:18 +00:00
|
|
|
|
virtual QString signature() const override;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
QString name_store;
|
|
|
|
|
int sort_index;
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT RankDeclare : public AbstractImpl<NovelNode::RankDeclaration, false> {
|
2024-06-20 13:36:46 +00:00
|
|
|
|
private:
|
|
|
|
|
int page_rank = 0;
|
|
|
|
|
public:
|
2024-07-12 04:53:43 +00:00
|
|
|
|
RankDeclare(std::shared_ptr<const lib_syntax::ExprRule> rule);
|
2024-06-20 13:36:46 +00:00
|
|
|
|
|
|
|
|
|
int rankNumber() const;
|
2024-07-28 08:37:31 +00:00
|
|
|
|
void setRank(int nums);
|
2024-06-20 13:36:46 +00:00
|
|
|
|
|
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
|
|
|
|
QString signature() const override;
|
|
|
|
|
};
|
2024-07-13 05:17:56 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class LIBSYNTAX_EXPORT Document : public AbstractImpl<NovelNode::Document, false> {
|
2024-07-13 05:17:56 +00:00
|
|
|
|
public:
|
2025-02-07 15:26:20 +00:00
|
|
|
|
Document(std::shared_ptr<const lib_syntax::ExprRule> rule_bind);
|
2024-07-13 05:17:56 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
// ͨ<><CDA8> AbstractImpl <20>̳<EFBFBD>
|
|
|
|
|
virtual QString signature() const override;
|
|
|
|
|
};
|
2024-07-13 05:17:56 +00:00
|
|
|
|
|
2025-02-08 01:06:39 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief ȫ<EFBFBD>ָ<EFBFBD>Ԫ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2025-02-07 15:26:20 +00:00
|
|
|
|
class LIBSYNTAX_EXPORT NGlobalElement : public ast_basic::ExprProgram, public ast_gen::SyntaxElement {
|
|
|
|
|
public:
|
|
|
|
|
NGlobalElement(const QString &root);
|
2024-07-13 05:17:56 +00:00
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
// ͨ<><CDA8> SyntaxElement <20>̳<EFBFBD>
|
|
|
|
|
std::shared_ptr<const ast_basic::IExprInstance> bindExpression() const override;
|
|
|
|
|
int typeMark() const override;
|
|
|
|
|
bool isAnonymous() const override;
|
|
|
|
|
QString path() const override;
|
|
|
|
|
QString signature() const override;
|
|
|
|
|
std::weak_ptr<const SyntaxElement> parent() const override;
|
|
|
|
|
void setParent(std::shared_ptr<const SyntaxElement> inst) override;
|
|
|
|
|
QList<std::shared_ptr<const ast_gen::TokenAccess>> selfTokens() const override;
|
2024-07-13 05:17:56 +00:00
|
|
|
|
};
|
|
|
|
|
}
|