QtNovelUI/libParse/SyntaxBase.h

78 lines
1.7 KiB
C
Raw Normal View History

2022-11-17 08:26:05 +00:00
#ifndef SYNTAXBASE_H
#define SYNTAXBASE_H
#include "libParse.h"
2023-03-25 02:10:32 +00:00
#include "lex_foundation.h"
2022-11-17 08:26:05 +00:00
namespace Syntax {
/**
* .
*/
class SyntaxParser
{
public:
virtual ~SyntaxParser() = default;
/**
* Doc实例.
*
* \param ins
*/
virtual void docActive(Parse::Result::DocCore *ins) = 0;
/**
* .
*
* \return
*/
virtual Parse::Result::DocCore* docRef() const = 0;
/**
* .
*
* \param seqs
* \return
*/
2023-03-25 02:10:32 +00:00
virtual bool applied(const QList<Lex::Token>& seqs) = 0;
2022-11-17 08:26:05 +00:00
/**
*
*/
virtual void reset() = 0;
/**
* Token序列
*
* \param seqs
* \param next_ps
* \return
*/
2023-03-25 02:10:32 +00:00
virtual ParseResult parse(QList<Lex::Token>& seqs)= 0;
2022-11-17 08:26:05 +00:00
/**
* .
*
* \return
*/
virtual QList<SyntaxParser*> children() const = 0;
/**
* .
*
* \return
*/
virtual Parse::Result::DesNode* currNode() const = 0;
protected:
/**
* .
*
* \param parsers
*/
virtual void addChild(QList<SyntaxParser*> parsers) = 0;
};
}
#endif // SYNTAXBASE_H