重构,组织解析类
This commit is contained in:
parent
477aa07f13
commit
53afe58730
|
@ -8,7 +8,7 @@ CONFIG -= app_bundle
|
||||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
LexicalBase.cpp \
|
LexFoundation.cpp \
|
||||||
ParseFrame.cpp \
|
ParseFrame.cpp \
|
||||||
StoryChainDocumentParser.cpp \
|
StoryChainDocumentParser.cpp \
|
||||||
StoryUnitDocumentParser.cpp \
|
StoryUnitDocumentParser.cpp \
|
||||||
|
@ -28,7 +28,7 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||||
!isEmpty(target.path): INSTALLS += target
|
!isEmpty(target.path): INSTALLS += target
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
LexicalBase.h \
|
LexFoundation.h \
|
||||||
ParseFrame.h \
|
ParseFrame.h \
|
||||||
StoryChainDocumentParser.h \
|
StoryChainDocumentParser.h \
|
||||||
StoryUnitDocumentParser.h \
|
StoryUnitDocumentParser.h \
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#include "LexicalBase.h"
|
#include "LexFoundation.h"
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
using namespace Lex;
|
using namespace Lex;
|
||||||
|
|
||||||
LexicalBase::LexicalBase(QList<LexUnit> seqence, const QString UnknownToken)
|
LexFoundation::LexFoundation(QList<LexDef> seqence, const QString UnknownToken)
|
||||||
: unknown_token(UnknownToken), lexical_seq(seqence)
|
: unknown_token(UnknownToken), lexical_seq(seqence)
|
||||||
{
|
{
|
||||||
empty_seq << '\t' << '\b' << ' ' << '\r' << EOF;
|
empty_seq << '\t' << '\b' << ' ' << '\r' << EOF;
|
||||||
|
@ -12,7 +12,7 @@ LexicalBase::LexicalBase(QList<LexUnit> seqence, const QString UnknownToken)
|
||||||
typedef int lexunit_index;
|
typedef int lexunit_index;
|
||||||
typedef int match_start;
|
typedef int match_start;
|
||||||
|
|
||||||
QList<LexResult> LexicalBase::push(int row, int col, const QChar w)
|
QList<LexResult> LexFoundation::push(int row, int col, const QChar w)
|
||||||
{
|
{
|
||||||
QList<LexResult> result;
|
QList<LexResult> result;
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ QList<LexResult> LexicalBase::push(int row, int col, const QChar w)
|
||||||
return mid_result;
|
return mid_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<LexResult> LexicalBase::lexical_parse(const QString & segment)
|
QList<LexResult> LexFoundation::lexical_parse(const QString & segment)
|
||||||
{
|
{
|
||||||
// 获取匹配词法分析
|
// 获取匹配词法分析
|
||||||
QList<LexResult> result;
|
QList<LexResult> result;
|
|
@ -4,12 +4,12 @@
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
namespace Lex {
|
namespace Lex {
|
||||||
class LexicalBase;
|
class LexFoundation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 解析基准定义单元.
|
* 解析基准定义单元.
|
||||||
*/
|
*/
|
||||||
struct LexUnit
|
struct LexDef
|
||||||
{
|
{
|
||||||
QString TokenType; // Token字符
|
QString TokenType; // Token字符
|
||||||
QString RegExpression; // 词法解析表达式
|
QString RegExpression; // 词法解析表达式
|
||||||
|
@ -24,7 +24,7 @@ namespace Lex {
|
||||||
QString Text; // 内容
|
QString Text; // 内容
|
||||||
int StartRow, StartCol, EndRow, EndCol; // 波及范围
|
int StartRow, StartCol, EndRow, EndCol; // 波及范围
|
||||||
|
|
||||||
friend class LexicalBase;
|
friend class LexFoundation;
|
||||||
private:
|
private:
|
||||||
int index_at_segment;
|
int index_at_segment;
|
||||||
};
|
};
|
||||||
|
@ -48,11 +48,11 @@ namespace Lex {
|
||||||
/**
|
/**
|
||||||
* 基础词法分析器.
|
* 基础词法分析器.
|
||||||
*/
|
*/
|
||||||
class LexicalBase
|
class LexFoundation
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit LexicalBase(QList<LexUnit> seqence, const QString UnknownToken);
|
explicit LexFoundation(QList<LexDef> seqence, const QString UnknownToken);
|
||||||
virtual ~LexicalBase() = default;
|
virtual ~LexFoundation() = default;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 词法分析器累积解析单个字符流.
|
* 词法分析器累积解析单个字符流.
|
||||||
|
@ -69,7 +69,7 @@ namespace Lex {
|
||||||
QList<QChar> empty_seq;
|
QList<QChar> empty_seq;
|
||||||
|
|
||||||
QList<XChar> code_acc;
|
QList<XChar> code_acc;
|
||||||
QList<LexUnit> lexical_seq;
|
QList<LexDef> lexical_seq;
|
||||||
|
|
||||||
QList<LexResult> lexical_parse(const QString &segment);
|
QList<LexResult> lexical_parse(const QString &segment);
|
||||||
};
|
};
|
|
@ -2,17 +2,19 @@
|
||||||
#include "WordsPeak.h"
|
#include "WordsPeak.h"
|
||||||
|
|
||||||
using namespace Parse;
|
using namespace Parse;
|
||||||
|
using namespace Parse::Result;
|
||||||
|
using namespace Syntax;
|
||||||
using namespace Lex;
|
using namespace Lex;
|
||||||
|
|
||||||
Parse::ParseFrame::ParseFrame() {}
|
ParseFrame::ParseFrame() {}
|
||||||
|
|
||||||
QList<DesNode*> Parse::ParseFrame::analysis(DocCore*doc, const QString & path)
|
QList<DesNode*> ParseFrame::analysis(DocCore*doc, const QString & path)
|
||||||
{
|
{
|
||||||
ForwardStream stream;
|
ExStream stream;
|
||||||
if (stream.initSource(path))
|
if (stream.initSource(path))
|
||||||
return QList<DesNode*>();
|
return QList<DesNode*>();
|
||||||
|
|
||||||
LexicalBase token_s(this->token_seqs, this->unknown_token);
|
LexFoundation token_s(this->token_seqs, this->unknown_token);
|
||||||
|
|
||||||
QList<LexResult> lex_seqence;
|
QList<LexResult> lex_seqence;
|
||||||
std::tuple<int, int, QChar> temp;
|
std::tuple<int, int, QChar> temp;
|
||||||
|
@ -42,18 +44,18 @@ QList<DesNode*> Parse::ParseFrame::analysis(DocCore*doc, const QString & path)
|
||||||
return xrets;
|
return xrets;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parse::ParseFrame::appendTokensDefine(QList<LexUnit> seqs, const QString & unknown_token)
|
void ParseFrame::appendTokensDefine(QList<LexDef> seqs, const QString & unknown_token)
|
||||||
{
|
{
|
||||||
this->unknown_token = unknown_token;
|
this->unknown_token = unknown_token;
|
||||||
token_seqs.append(seqs);
|
token_seqs.append(seqs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parse::ParseFrame::appendParser(SyntaxParser * u)
|
void ParseFrame::appendParser(SyntaxParser * u)
|
||||||
{
|
{
|
||||||
cascade_parsers << u;
|
cascade_parsers << u;
|
||||||
}
|
}
|
||||||
|
|
||||||
Parse::ParseResult Parse::ParseFrame::inner_parse(QList<LexResult> &lex_seqence, QList<SyntaxParser*> parsers, QList<DesNode*> &nodes_out)
|
ParseResult ParseFrame::inner_parse(QList<LexResult> &lex_seqence, QList<SyntaxParser*> parsers, QList<DesNode*> &nodes_out)
|
||||||
{
|
{
|
||||||
QList<DesNode*> nodes;
|
QList<DesNode*> nodes;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include "SyntaxBase.h"
|
#include "SyntaxBase.h"
|
||||||
|
|
||||||
namespace Parse
|
namespace Syntax
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 基础解析器框架.
|
* 基础解析器框架.
|
||||||
|
@ -14,17 +14,19 @@ namespace Parse
|
||||||
explicit ParseFrame();
|
explicit ParseFrame();
|
||||||
virtual ~ParseFrame() = default;
|
virtual ~ParseFrame() = default;
|
||||||
|
|
||||||
QList<DesNode*> analysis(DocCore *doc, const QString &path);
|
QList<Parse::Result::DesNode*> analysis(Parse::Result::DocCore *doc, const QString &path);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void appendTokensDefine(QList<Lex::LexUnit> seqs, const QString &unknown_token);
|
void appendTokensDefine(QList<Lex::LexDef> seqs, const QString &unknown_token);
|
||||||
void appendParser(SyntaxParser* u);
|
void appendParser(Syntax::SyntaxParser* u);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString unknown_token;
|
QString unknown_token;
|
||||||
QList<Lex::LexUnit> token_seqs;
|
QList<Lex::LexDef> token_seqs;
|
||||||
QList<SyntaxParser*> cascade_parsers;
|
QList<SyntaxParser*> cascade_parsers;
|
||||||
|
|
||||||
Parse::ParseResult Parse::ParseFrame::inner_parse(QList<Lex::LexResult> &lex_seqence, QList<SyntaxParser*> parsers, QList<DesNode*> &nodes_out);
|
ParseResult ParseFrame::inner_parse(QList<Lex::LexResult> &lex_seqence,
|
||||||
|
QList<Syntax::SyntaxParser*> parsers,
|
||||||
|
QList<Parse::Result::DesNode*> &nodes_out);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ using namespace Parse;
|
||||||
using namespace Lex;
|
using namespace Lex;
|
||||||
using namespace Syntax;
|
using namespace Syntax;
|
||||||
using namespace Syntax::Defines;
|
using namespace Syntax::Defines;
|
||||||
|
using namespace Parse::Result;
|
||||||
|
|
||||||
// storychain 解析器================================================
|
// storychain 解析器================================================
|
||||||
NodeStoryChainParser::NodeStoryChainParser(ProjectCore *core)
|
NodeStoryChainParser::NodeStoryChainParser(ProjectCore *core)
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Parse
|
||||||
/**
|
/**
|
||||||
* 故事脉络节点定义.
|
* 故事脉络节点定义.
|
||||||
*/
|
*/
|
||||||
class NodeStoryChain : public NamedNode
|
class NodeStoryChain : public Result::NamedNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -25,7 +25,7 @@ namespace Parse
|
||||||
*
|
*
|
||||||
* \param src_path 源文件路径
|
* \param src_path 源文件路径
|
||||||
*/
|
*/
|
||||||
explicit NodeStoryChain(DocCore *doc, const QString &name);
|
explicit NodeStoryChain(Result::DocCore *doc, const QString &name);
|
||||||
virtual ~NodeStoryChain() = default;
|
virtual ~NodeStoryChain() = default;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -41,7 +41,7 @@ namespace Parse
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
virtual QString name() const override;
|
virtual QString name() const override;
|
||||||
virtual DocCore * document() const override;
|
virtual Result::DocCore * document() const override;
|
||||||
virtual int typeValue() const override;
|
virtual int typeValue() const override;
|
||||||
virtual DesNode * parent() const override;
|
virtual DesNode * parent() const override;
|
||||||
virtual void appendChild(DesNode * ins) override;
|
virtual void appendChild(DesNode * ins) override;
|
||||||
|
@ -50,7 +50,7 @@ namespace Parse
|
||||||
virtual QString toString() const override;
|
virtual QString toString() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DocCore *const doc_store;
|
Result::DocCore *const doc_store;
|
||||||
QString name_store;
|
QString name_store;
|
||||||
QList<DesNode*> children_nodes;
|
QList<DesNode*> children_nodes;
|
||||||
};
|
};
|
||||||
|
@ -61,19 +61,19 @@ namespace Parse
|
||||||
class NodeStoryChainParser : public Syntax::XSyntaxBase
|
class NodeStoryChainParser : public Syntax::XSyntaxBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NodeStoryChainParser(ProjectCore *core);
|
NodeStoryChainParser(Result::ProjectCore *core);
|
||||||
virtual ~NodeStoryChainParser() = default;
|
virtual ~NodeStoryChainParser() = default;
|
||||||
|
|
||||||
ProjectCore* project() const;
|
Result::ProjectCore* project() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ProjectCore *pjt_ref;
|
Result::ProjectCore *pjt_ref;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 故事节点.
|
* 故事节点.
|
||||||
*/
|
*/
|
||||||
class NodeStoryPoint : public NamedNode
|
class NodeStoryPoint : public Result::NamedNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit NodeStoryPoint(NodeStoryChain *chain, const QString &name);
|
explicit NodeStoryPoint(NodeStoryChain *chain, const QString &name);
|
||||||
|
@ -90,7 +90,7 @@ namespace Parse
|
||||||
inline virtual int depth() const override {
|
inline virtual int depth() const override {
|
||||||
return chain_store->depth() + 1;
|
return chain_store->depth() + 1;
|
||||||
}
|
}
|
||||||
virtual DocCore * document() const override;
|
virtual Result::DocCore * document() const override;
|
||||||
virtual int typeValue() const override;
|
virtual int typeValue() const override;
|
||||||
virtual DesNode * parent() const override;
|
virtual DesNode * parent() const override;
|
||||||
virtual void appendChild(DesNode * ins) override;
|
virtual void appendChild(DesNode * ins) override;
|
||||||
|
@ -115,7 +115,7 @@ namespace Parse
|
||||||
virtual ~NodeStoryPointParser() = default;
|
virtual ~NodeStoryPointParser() = default;
|
||||||
|
|
||||||
NodeStoryChainParser* storyChainParser() const;
|
NodeStoryChainParser* storyChainParser() const;
|
||||||
virtual DocCore* docRef() const override;
|
virtual Result::DocCore* docRef() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NodeStoryChainParser *const parent_parser;
|
NodeStoryChainParser *const parent_parser;
|
||||||
|
@ -124,7 +124,7 @@ namespace Parse
|
||||||
/**
|
/**
|
||||||
* 节点描述内容节点.
|
* 节点描述内容节点.
|
||||||
*/
|
*/
|
||||||
class NodeStoryDesGroup : public DesNode
|
class NodeStoryDesGroup : public Result::DesNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NodeStoryDesGroup(DesNode *parent_refer);
|
NodeStoryDesGroup(DesNode *parent_refer);
|
||||||
|
@ -134,7 +134,7 @@ namespace Parse
|
||||||
inline virtual int depth() const override {
|
inline virtual int depth() const override {
|
||||||
return parent_refer->depth() + 1;
|
return parent_refer->depth() + 1;
|
||||||
}
|
}
|
||||||
virtual DocCore * document() const override;
|
virtual Result::DocCore * document() const override;
|
||||||
virtual int typeValue() const override;
|
virtual int typeValue() const override;
|
||||||
virtual DesNode * parent() const override;
|
virtual DesNode * parent() const override;
|
||||||
virtual void appendChild(DesNode * ins) override;
|
virtual void appendChild(DesNode * ins) override;
|
||||||
|
@ -160,7 +160,7 @@ namespace Parse
|
||||||
/**
|
/**
|
||||||
* 描述内容文字块.
|
* 描述内容文字块.
|
||||||
*/
|
*/
|
||||||
class NodeStoryDesBlock : public DesNode
|
class NodeStoryDesBlock : public Result::DesNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit NodeStoryDesBlock(DesNode *parent_node, const QString &text);
|
explicit NodeStoryDesBlock(DesNode *parent_node, const QString &text);
|
||||||
|
@ -170,7 +170,7 @@ namespace Parse
|
||||||
inline virtual int depth() const override {
|
inline virtual int depth() const override {
|
||||||
return parent_refer->depth() + 1;
|
return parent_refer->depth() + 1;
|
||||||
}
|
}
|
||||||
virtual DocCore * document() const override;
|
virtual Result::DocCore * document() const override;
|
||||||
virtual int typeValue() const override;
|
virtual int typeValue() const override;
|
||||||
virtual DesNode * parent() const override;
|
virtual DesNode * parent() const override;
|
||||||
virtual void appendChild(DesNode * ins) override;
|
virtual void appendChild(DesNode * ins) override;
|
||||||
|
@ -183,10 +183,10 @@ namespace Parse
|
||||||
QString text_block;
|
QString text_block;
|
||||||
};
|
};
|
||||||
|
|
||||||
class StoryChainDocumentParser : public ParseFrame
|
class StoryChainDocumentParser : public Syntax::ParseFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoryChainDocumentParser(ProjectCore *pjt);
|
StoryChainDocumentParser(Result::ProjectCore *pjt);
|
||||||
virtual ~StoryChainDocumentParser() = default;
|
virtual ~StoryChainDocumentParser() = default;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "StoryUnitDocumentParser.h"
|
#include "StoryUnitDocumentParser.h"
|
||||||
|
|
||||||
using namespace Parse;
|
using namespace Parse;
|
||||||
|
using namespace Parse::Result;
|
||||||
using namespace Lex;
|
using namespace Lex;
|
||||||
using namespace Syntax;
|
using namespace Syntax;
|
||||||
using namespace Syntax::Defines;
|
using namespace Syntax::Defines;
|
||||||
|
@ -95,7 +96,7 @@ QString NodeStoryFragment::toString() const
|
||||||
QString rets = QString(depth(), ' ') + "#情节 " + name() + "{";
|
QString rets = QString(depth(), ' ') + "#情节 " + name() + "{";
|
||||||
for (auto cin : children_nodes)
|
for (auto cin : children_nodes)
|
||||||
rets += "\n" + QString(depth(), ' ') + cin->toString();
|
rets += "\n" + QString(depth(), ' ') + cin->toString();
|
||||||
return rets + "}";
|
return rets + "\n"+QString(depth(), ' ') + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
QString NodeStoryFragment::name() const
|
QString NodeStoryFragment::name() const
|
||||||
|
|
|
@ -7,10 +7,10 @@ namespace Parse {
|
||||||
/**
|
/**
|
||||||
* 故事单元.
|
* 故事单元.
|
||||||
*/
|
*/
|
||||||
class NodeStoryUnit : public NamedNode
|
class NodeStoryUnit : public Result::NamedNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit NodeStoryUnit(DocCore *doc, const QString &name);
|
explicit NodeStoryUnit(Result::DocCore *doc, const QString &name);
|
||||||
virtual ~NodeStoryUnit() = default;
|
virtual ~NodeStoryUnit() = default;
|
||||||
|
|
||||||
// 通过 NamedNode
|
// 通过 NamedNode
|
||||||
|
@ -20,7 +20,7 @@ namespace Parse {
|
||||||
inline virtual int depth() const override {
|
inline virtual int depth() const override {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
virtual DocCore * document() const override;
|
virtual Result::DocCore * document() const override;
|
||||||
virtual int typeValue() const override;
|
virtual int typeValue() const override;
|
||||||
virtual DesNode * parent() const override;
|
virtual DesNode * parent() const override;
|
||||||
virtual void appendChild(DesNode * ins) override;
|
virtual void appendChild(DesNode * ins) override;
|
||||||
|
@ -29,7 +29,7 @@ namespace Parse {
|
||||||
virtual QString toString() const override;
|
virtual QString toString() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DocCore *doc_ref;
|
Result::DocCore *doc_ref;
|
||||||
QString name_store;
|
QString name_store;
|
||||||
|
|
||||||
QList<DesNode*> children_nodes;
|
QList<DesNode*> children_nodes;
|
||||||
|
@ -39,18 +39,18 @@ namespace Parse {
|
||||||
class NodeStoryUnitParser : public Syntax::XSyntaxBase
|
class NodeStoryUnitParser : public Syntax::XSyntaxBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NodeStoryUnitParser(ProjectCore *core);
|
NodeStoryUnitParser(Result::ProjectCore *core);
|
||||||
|
|
||||||
ProjectCore* project() const;
|
Result::ProjectCore* project() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ProjectCore *const pjt_core;
|
Result::ProjectCore *const pjt_core;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 故事情节节点.
|
* 故事情节节点.
|
||||||
*/
|
*/
|
||||||
class NodeStoryFragment : public NamedNode
|
class NodeStoryFragment : public Result::NamedNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit NodeStoryFragment(NodeStoryUnit* unit, const QString &name);
|
explicit NodeStoryFragment(NodeStoryUnit* unit, const QString &name);
|
||||||
|
@ -60,7 +60,7 @@ namespace Parse {
|
||||||
inline virtual int depth() const override {
|
inline virtual int depth() const override {
|
||||||
return unit_ins->depth() + 1;
|
return unit_ins->depth() + 1;
|
||||||
}
|
}
|
||||||
virtual DocCore * document() const override;
|
virtual Result::DocCore * document() const override;
|
||||||
virtual int typeValue() const override;
|
virtual int typeValue() const override;
|
||||||
virtual DesNode * parent() const override;
|
virtual DesNode * parent() const override;
|
||||||
virtual void appendChild(DesNode * ins) override;
|
virtual void appendChild(DesNode * ins) override;
|
||||||
|
@ -85,7 +85,7 @@ namespace Parse {
|
||||||
NodeStoryFragmentParser(NodeStoryUnitParser *pparser);
|
NodeStoryFragmentParser(NodeStoryUnitParser *pparser);
|
||||||
|
|
||||||
NodeStoryUnitParser * nodeStoryUnitParser() const;
|
NodeStoryUnitParser * nodeStoryUnitParser() const;
|
||||||
DocCore * docRef() const;
|
Result::DocCore * docRef() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NodeStoryUnitParser *const parent_parser;
|
NodeStoryUnitParser *const parent_parser;
|
||||||
|
@ -94,7 +94,7 @@ namespace Parse {
|
||||||
/**
|
/**
|
||||||
* 故事脉络节点引用.
|
* 故事脉络节点引用.
|
||||||
*/
|
*/
|
||||||
class NodeStoryPointRefer : public DesNode
|
class NodeStoryPointRefer : public Result::DesNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit NodeStoryPointRefer(DesNode *parent, const QString &chain, const QString &point);
|
explicit NodeStoryPointRefer(DesNode *parent, const QString &chain, const QString &point);
|
||||||
|
@ -104,7 +104,7 @@ namespace Parse {
|
||||||
inline virtual int depth() const override {
|
inline virtual int depth() const override {
|
||||||
return parent_ins->depth() + 1;
|
return parent_ins->depth() + 1;
|
||||||
}
|
}
|
||||||
virtual DocCore * document() const override;
|
virtual Result::DocCore * document() const override;
|
||||||
virtual int typeValue() const override;
|
virtual int typeValue() const override;
|
||||||
virtual DesNode * parent() const override;
|
virtual DesNode * parent() const override;
|
||||||
virtual void appendChild(DesNode * ins) override;
|
virtual void appendChild(DesNode * ins) override;
|
||||||
|
@ -148,8 +148,12 @@ namespace Parse {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 故事情节有序注释,单独解析
|
* 故事情节有序注释,单独解析
|
||||||
|
* #注解 注解名 序列名 值 {
|
||||||
|
* 注解段落
|
||||||
|
* 注解段落
|
||||||
|
* }
|
||||||
*/
|
*/
|
||||||
class NodeStoryFragmentComment : public NamedNode
|
class NodeStoryFragmentComment : public Result::NamedNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NodeStoryFragmentComment(DesNode *parent, const QString &order, const QString &name);
|
NodeStoryFragmentComment(DesNode *parent, const QString &order, const QString &name);
|
||||||
|
@ -162,7 +166,7 @@ namespace Parse {
|
||||||
{
|
{
|
||||||
return parent_ins->depth() + 1;
|
return parent_ins->depth() + 1;
|
||||||
}
|
}
|
||||||
virtual DocCore * document() const override;
|
virtual Result::DocCore * document() const override;
|
||||||
virtual int typeValue() const override;
|
virtual int typeValue() const override;
|
||||||
virtual DesNode * parent() const override;
|
virtual DesNode * parent() const override;
|
||||||
virtual void appendChild(DesNode * ins) override;
|
virtual void appendChild(DesNode * ins) override;
|
||||||
|
@ -179,9 +183,9 @@ namespace Parse {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class StoryUnitDocumentParser : public ParseFrame
|
class StoryUnitDocumentParser : public Syntax::ParseFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoryUnitDocumentParser(ProjectCore *ins);
|
StoryUnitDocumentParser(Result::ProjectCore *ins);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,13 @@
|
||||||
|
|
||||||
using namespace Parse;
|
using namespace Parse;
|
||||||
using namespace Lex;
|
using namespace Lex;
|
||||||
|
using namespace Syntax;
|
||||||
|
using namespace Parse::Result;
|
||||||
|
|
||||||
class Unknown : public DesNode
|
namespace Parse {
|
||||||
{
|
class Unknown : public DesNode
|
||||||
public:
|
{
|
||||||
|
public:
|
||||||
explicit Unknown(DocCore *ins)
|
explicit Unknown(DocCore *ins)
|
||||||
: doc_store(ins) {}
|
: doc_store(ins) {}
|
||||||
|
|
||||||
|
@ -27,14 +30,14 @@ public:
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
virtual void appendChild(DesNode * ins) override
|
virtual void appendChild(DesNode *) override
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
virtual QList<DesNode*> children() const override
|
virtual QList<DesNode*> children() const override
|
||||||
{
|
{
|
||||||
return QList<DesNode*>();
|
return QList<DesNode*>();
|
||||||
}
|
}
|
||||||
virtual bool check(QList<QString>& reasons) const override
|
virtual bool check(QList<QString>&) const override
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -42,88 +45,89 @@ public:
|
||||||
{
|
{
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
DocCore *const doc_store;
|
DocCore *const doc_store;
|
||||||
};
|
};
|
||||||
|
|
||||||
Parse::Words::Words(DesNode* host, DocCore *doc, const QString & value, int row, int col)
|
}
|
||||||
: value_store(value), row_store(row), col_store(col)
|
Words::Words(Result::DesNode *host, DocCore *doc, const QString & value, int row, int col)
|
||||||
|
: value_store(value), row_store(row), col_store(col), desnode_store(host), docpresent_store(doc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int Parse::Words::row() const
|
int Words::row() const
|
||||||
{
|
{
|
||||||
return row_store;
|
return row_store;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Parse::Words::column() const
|
int Words::column() const
|
||||||
{
|
{
|
||||||
return col_store;
|
return col_store;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Parse::Words::length() const
|
int Words::length() const
|
||||||
{
|
{
|
||||||
return value_store.length();
|
return value_store.length();
|
||||||
}
|
}
|
||||||
|
|
||||||
DesNode * Parse::Words::host() const
|
DesNode * Words::host() const
|
||||||
{
|
{
|
||||||
return desnode_store;
|
return desnode_store;
|
||||||
}
|
}
|
||||||
|
|
||||||
DocCore * Parse::Words::doc() const
|
DocCore * Words::doc() const
|
||||||
{
|
{
|
||||||
return docpresent_store;
|
return docpresent_store;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Parse::Words::toString() const
|
QString Words::toString() const
|
||||||
{
|
{
|
||||||
return value_store;
|
return value_store;
|
||||||
}
|
}
|
||||||
|
|
||||||
Parse::DocCore::DocCore(ProjectCore * core, const QString & path)
|
DocCore::DocCore(ProjectCore * core, const QString & path)
|
||||||
: core_store(core), file_path_store(path), unknown_host(new Unknown(this))
|
: unknown_host(new Unknown(this)), core_store(core), file_path_store(path)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DesNode * Parse::DocCore::unknowns() const
|
DesNode * DocCore::unknowns() const
|
||||||
{
|
{
|
||||||
return unknown_host;
|
return unknown_host;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectCore * Parse::DocCore::project() const
|
ProjectCore * DocCore::project() const
|
||||||
{
|
{
|
||||||
return core_store;
|
return core_store;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parse::DocCore::rename(const QString & new_name)
|
void DocCore::rename(const QString & new_name)
|
||||||
{
|
{
|
||||||
file_path_store = new_name;
|
file_path_store = new_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Parse::DocCore::filePath() const
|
QString DocCore::filePath() const
|
||||||
{
|
{
|
||||||
return file_path_store;
|
return file_path_store;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Parse::DocCore::fileName() const
|
QString DocCore::fileName() const
|
||||||
{
|
{
|
||||||
return QFileInfo(file_path_store).fileName();
|
return QFileInfo(file_path_store).fileName();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parse::DocCore::clear()
|
void DocCore::clear()
|
||||||
{
|
{
|
||||||
nodes_store.clear();
|
nodes_store.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Parse::DocCore::append(Words * ins)
|
int DocCore::append(Words * ins)
|
||||||
{
|
{
|
||||||
nodes_store << ins;
|
nodes_store << ins;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Words * Parse::DocCore::getWords(int row, int col) const
|
Words * DocCore::getWords(int row, int col) const
|
||||||
{
|
{
|
||||||
for (auto it : nodes_store)
|
for (auto it : nodes_store)
|
||||||
if (it->row() == row && it->column() <= col && it->column() + it->length() >= col)
|
if (it->row() == row && it->column() <= col && it->column() + it->length() >= col)
|
||||||
|
|
|
@ -3,23 +3,28 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include "LexicalBase.h"
|
#include "LexFoundation.h"
|
||||||
#include "comndef.h"
|
#include "comndef.h"
|
||||||
|
|
||||||
namespace Parse
|
namespace Parse
|
||||||
{
|
{
|
||||||
class NamedNode;
|
namespace Result {
|
||||||
class DocCore;
|
|
||||||
class ProjectCore;
|
class ProjectCore;
|
||||||
class DesNode;
|
class DesNode;
|
||||||
|
class NamedNode;
|
||||||
|
class DocCore;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
namespace Result
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* 词语块,可以通过文档未知直接获取.
|
* 词语块,可以通过文档未知直接获取.
|
||||||
*/
|
*/
|
||||||
class Words
|
class Words
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit Words(DesNode* host, DocCore *doc, const QString &value, int row, int col);
|
explicit Words(Result::DesNode* host, Result::DocCore *doc, const QString &value, int row, int col);
|
||||||
virtual ~Words() = default;
|
virtual ~Words() = default;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,14 +53,14 @@ namespace Parse
|
||||||
*
|
*
|
||||||
* \return
|
* \return
|
||||||
*/
|
*/
|
||||||
virtual DesNode* host() const;
|
virtual Result::DesNode* host() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 隶属文档实例.
|
* 隶属文档实例.
|
||||||
*
|
*
|
||||||
* \return 实例
|
* \return 实例
|
||||||
*/
|
*/
|
||||||
virtual DocCore* doc() const;
|
virtual Result::DocCore* doc() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文本内容.
|
* 获取文本内容.
|
||||||
|
@ -67,8 +72,8 @@ namespace Parse
|
||||||
private:
|
private:
|
||||||
QString value_store;
|
QString value_store;
|
||||||
int row_store, col_store;
|
int row_store, col_store;
|
||||||
DesNode *desnode_store;
|
Result::DesNode *desnode_store;
|
||||||
DocCore *docpresent_store;
|
Result::DocCore *docpresent_store;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -135,10 +140,11 @@ namespace Parse
|
||||||
virtual QString toString() const = 0;
|
virtual QString toString() const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 声明描述节点.
|
* 声明描述节点.
|
||||||
*/
|
*/
|
||||||
class NamedNode : public DesNode
|
class NamedNode : public Result::DesNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~NamedNode() = default;
|
virtual ~NamedNode() = default;
|
||||||
|
@ -152,7 +158,6 @@ namespace Parse
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文档实例.
|
* 文档实例.
|
||||||
*/
|
*/
|
||||||
|
@ -167,7 +172,7 @@ namespace Parse
|
||||||
*
|
*
|
||||||
* \return
|
* \return
|
||||||
*/
|
*/
|
||||||
DesNode* unknowns() const;
|
Result::DesNode* unknowns() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目实例.
|
* 项目实例.
|
||||||
|
@ -221,7 +226,7 @@ namespace Parse
|
||||||
Words* getWords(int row, int col) const;
|
Words* getWords(int row, int col) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DesNode *const unknown_host;
|
Result::DesNode *const unknown_host;
|
||||||
ProjectCore *const core_store;
|
ProjectCore *const core_store;
|
||||||
QString file_path_store;
|
QString file_path_store;
|
||||||
QList<Words*> nodes_store;
|
QList<Words*> nodes_store;
|
||||||
|
@ -245,14 +250,14 @@ namespace Parse
|
||||||
* \param file_path 文档路径
|
* \param file_path 文档路径
|
||||||
* \return 实例
|
* \return 实例
|
||||||
*/
|
*/
|
||||||
virtual DocCore* queryDocument(const QString &file_path) const;
|
virtual Parse::Result::DocCore* queryDocument(const QString &file_path) const;
|
||||||
virtual void replaceDocument(DocCore *ins);
|
virtual void replaceDocument(Parse::Result::DocCore *ins);
|
||||||
|
|
||||||
virtual DesNode* queryChain(const QString & name) const;
|
virtual Parse::Result::DesNode* queryChain(const QString & name) const;
|
||||||
virtual DesNode* queryPoint(NamedNode* chain, const QString &name) const;
|
virtual Parse::Result::DesNode* queryPoint(Parse::Result::NamedNode* chain, const QString &name) const;
|
||||||
|
|
||||||
virtual DesNode* queryUnit(const QString &name) const;
|
virtual Parse::Result::DesNode* queryUnit(const QString &name) const;
|
||||||
virtual DesNode* queryFragment(NamedNode *unit, const QString &name) const;
|
virtual Parse::Result::DesNode* queryFragment(Parse::Result::NamedNode *unit, const QString &name) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询指定顺序下的节点序列.
|
* 查询指定顺序下的节点序列.
|
||||||
|
@ -261,10 +266,17 @@ namespace Parse
|
||||||
* \param unit 指定单元下的序列,nullptr代表全局范围
|
* \param unit 指定单元下的序列,nullptr代表全局范围
|
||||||
* \return
|
* \return
|
||||||
*/
|
*/
|
||||||
virtual QList<NamedNode*> queryFragmentsOrderby(const QString &type, NamedNode* unit = nullptr) const;
|
virtual QList<Parse::Result::NamedNode*> queryFragmentsOrderby(const QString &type, Parse::Result::NamedNode* unit = nullptr) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Syntax {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 解析结果标志.
|
* 解析结果标志.
|
||||||
*/
|
*/
|
||||||
|
@ -289,14 +301,14 @@ namespace Parse
|
||||||
*
|
*
|
||||||
* \param ins
|
* \param ins
|
||||||
*/
|
*/
|
||||||
virtual void docActive(DocCore *ins) = 0;
|
virtual void docActive(Parse::Result::DocCore *ins) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前指向的文档.
|
* 当前指向的文档.
|
||||||
*
|
*
|
||||||
* \return 文档实例
|
* \return 文档实例
|
||||||
*/
|
*/
|
||||||
virtual DocCore* docRef() const = 0;
|
virtual Parse::Result::DocCore* docRef() const = 0;
|
||||||
/**
|
/**
|
||||||
* 适配当前解析.
|
* 适配当前解析.
|
||||||
*
|
*
|
||||||
|
@ -331,7 +343,7 @@ namespace Parse
|
||||||
*
|
*
|
||||||
* \return
|
* \return
|
||||||
*/
|
*/
|
||||||
virtual DesNode* currNode() const = 0;
|
virtual Parse::Result::DesNode* currNode() const = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
#include "WordsPeak.h"
|
#include "WordsPeak.h"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
using namespace Parse;
|
using namespace Lex;
|
||||||
|
|
||||||
ForwardStream::ForwardStream() :file_target(nullptr), text_input(nullptr),
|
ExStream::ExStream() :file_target(nullptr), text_input(nullptr),
|
||||||
current_line(""), current_row(-1), current_col(0) {}
|
current_line(""), current_row(-1), current_col(0) {}
|
||||||
|
|
||||||
ForwardStream::~ForwardStream() {
|
ExStream::~ExStream() {
|
||||||
if (file_target)
|
if (file_target)
|
||||||
delete file_target;
|
delete file_target;
|
||||||
if (text_input)
|
if (text_input)
|
||||||
delete text_input;
|
delete text_input;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ForwardStream::initSource(const QString & path)
|
int ExStream::initSource(const QString & path)
|
||||||
{
|
{
|
||||||
if (file_target)
|
if (file_target)
|
||||||
delete file_target;
|
delete file_target;
|
||||||
|
@ -31,7 +31,7 @@ int ForwardStream::initSource(const QString & path)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::tuple<ForwardStream::n_row, ForwardStream::n_col, QChar> Parse::ForwardStream::read()
|
std::tuple<ExStream::n_row, ExStream::n_col, QChar> ExStream::read()
|
||||||
{
|
{
|
||||||
if (current_col >= current_line.length()) {
|
if (current_col >= current_line.length()) {
|
||||||
if (!text_input->atEnd()) {
|
if (!text_input->atEnd()) {
|
||||||
|
|
|
@ -4,14 +4,14 @@
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
namespace Parse {
|
namespace Lex {
|
||||||
class ForwardStream
|
class ExStream
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef int n_row;
|
typedef int n_row;
|
||||||
typedef int n_col;
|
typedef int n_col;
|
||||||
explicit ForwardStream();
|
explicit ExStream();
|
||||||
virtual ~ForwardStream();
|
virtual ~ExStream();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化文件指向.
|
* 初始化文件指向.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "XSyntaxBase.h"
|
#include "XSyntaxBase.h"
|
||||||
|
|
||||||
using namespace Parse;
|
using namespace Parse;
|
||||||
|
using namespace Parse::Result;
|
||||||
using namespace Syntax;
|
using namespace Syntax;
|
||||||
using namespace Lex;
|
using namespace Lex;
|
||||||
using namespace Defines;
|
using namespace Defines;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include "LexicalBase.h"
|
#include "LexFoundation.h"
|
||||||
#include "SyntaxBase.h"
|
#include "SyntaxBase.h"
|
||||||
|
|
||||||
namespace Syntax
|
namespace Syntax
|
||||||
|
@ -178,7 +178,7 @@ namespace Syntax
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ParseRule(XSyntaxBase *host, const QString &rule_name, unsigned short level,
|
ParseRule(XSyntaxBase *host, const QString &rule_name, unsigned short level,
|
||||||
std::function<Parse::ParseResult(const QList<Lex::LexResult>&, int)>);
|
std::function<ParseResult(const QList<Lex::LexResult>&, int)>);
|
||||||
virtual ~ParseRule() = default;
|
virtual ~ParseRule() = default;
|
||||||
|
|
||||||
int level() const;
|
int level() const;
|
||||||
|
@ -186,7 +186,7 @@ namespace Syntax
|
||||||
|
|
||||||
void addExpression(const QString &name, const QList<Defines::Elm> &_defines);
|
void addExpression(const QString &name, const QList<Defines::Elm> &_defines);
|
||||||
std::tuple<bool, int> tokensMatch(const QList<Lex::LexResult> &token) const;
|
std::tuple<bool, int> tokensMatch(const QList<Lex::LexResult> &token) const;
|
||||||
Parse::ParseResult syntaxTrigger(const QList<Lex::LexResult>& srcs, int count);
|
ParseResult syntaxTrigger(const QList<Lex::LexResult>& srcs, int count);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XSyntaxBase *const host_ins;
|
XSyntaxBase *const host_ins;
|
||||||
|
@ -194,7 +194,7 @@ namespace Syntax
|
||||||
QString name_store;
|
QString name_store;
|
||||||
QList<Expression*> expression_list;
|
QList<Expression*> expression_list;
|
||||||
|
|
||||||
std::function<Parse::ParseResult(const QList<Lex::LexResult>&, int)> exc_store;
|
std::function<ParseResult(const QList<Lex::LexResult>&, int)> exc_store;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ namespace Syntax
|
||||||
/**
|
/**
|
||||||
* 基础解析器模型.
|
* 基础解析器模型.
|
||||||
*/
|
*/
|
||||||
class XSyntaxBase : public Parse::SyntaxParser
|
class XSyntaxBase : public Syntax::SyntaxParser
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XSyntaxBase(const QString §ion, MatchType type = MatchType::Entirely);
|
explicit XSyntaxBase(const QString §ion, MatchType type = MatchType::Entirely);
|
||||||
|
@ -219,19 +219,19 @@ namespace Syntax
|
||||||
Element *get_element(const QString &name);
|
Element *get_element(const QString &name);
|
||||||
|
|
||||||
// 通过 Parse::SyntaxParser 继承
|
// 通过 Parse::SyntaxParser 继承
|
||||||
virtual void docActive(Parse::DocCore *ins) override;
|
virtual void docActive(Parse::Result::DocCore *ins) override;
|
||||||
virtual Parse::DocCore *docRef() const override;
|
virtual Parse::Result::DocCore *docRef() const override;
|
||||||
virtual bool applied(const QList<Lex::LexResult>& seqs) override;
|
virtual bool applied(const QList<Lex::LexResult>& seqs) override;
|
||||||
virtual void reset() override;
|
virtual void reset() override;
|
||||||
virtual Parse::ParseResult parse(QList<Lex::LexResult>& seqs) override;
|
virtual ParseResult parse(QList<Lex::LexResult>& seqs) override;
|
||||||
virtual QList<Parse::SyntaxParser*> children() const override;
|
virtual QList<Syntax::SyntaxParser*> children() const override;
|
||||||
|
|
||||||
virtual Parse::DesNode * currNode() const override;
|
virtual Parse::Result::DesNode * currNode() const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ParseRule* addRule(const QString &name, unsigned short level, std::function<Parse::ParseResult(const QList<Lex::LexResult>&, int)> exc);
|
ParseRule* addRule(const QString &name, unsigned short level, std::function<ParseResult(const QList<Lex::LexResult>&, int)> exc);
|
||||||
virtual void addChild(QList<Parse::SyntaxParser*> parsers) override;
|
virtual void addChild(QList<Syntax::SyntaxParser*> parsers) override;
|
||||||
void refocusNode(Parse::DesNode *ins);
|
void refocusNode(Parse::Result::DesNode *ins);
|
||||||
|
|
||||||
Expression* set_common_expression(const QString &name, const QList<Defines::Elm> &defines);
|
Expression* set_common_expression(const QString &name, const QList<Defines::Elm> &defines);
|
||||||
|
|
||||||
|
@ -239,12 +239,12 @@ namespace Syntax
|
||||||
MatchType target_type;
|
MatchType target_type;
|
||||||
QString section_name;
|
QString section_name;
|
||||||
int current_level;
|
int current_level;
|
||||||
Parse::DesNode *current_node;
|
Parse::Result::DesNode *current_node;
|
||||||
Parse::DocCore *src_ref;
|
Parse::Result::DocCore *src_ref;
|
||||||
|
|
||||||
QHash<QString, Element*> elements_store;
|
QHash<QString, Element*> elements_store;
|
||||||
QHash<QString, Expression*> expressions_store;
|
QHash<QString, Expression*> expressions_store;
|
||||||
QList<Parse::SyntaxParser*> child_parsers;
|
QList<Syntax::SyntaxParser*> child_parsers;
|
||||||
|
|
||||||
QHash<QString, ParseRule*> rule_collect;
|
QHash<QString, ParseRule*> rule_collect;
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "ParseFrame.h"
|
#include "ParseFrame.h"
|
||||||
|
|
||||||
using namespace Parse;
|
using namespace Parse;
|
||||||
|
using namespace Parse::Result;
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue