31 lines
681 B
C
31 lines
681 B
C
|
#pragma once
|
||
|
#include <QString>
|
||
|
#include <QList>
|
||
|
#include "SyntaxBase.h"
|
||
|
|
||
|
namespace Parse
|
||
|
{
|
||
|
/**
|
||
|
* 基础解析器框架.
|
||
|
*/
|
||
|
class ParseFrame
|
||
|
{
|
||
|
public:
|
||
|
explicit ParseFrame();
|
||
|
virtual ~ParseFrame() = default;
|
||
|
|
||
|
QList<DesNode*> analysis(DocCore *doc, const QString &path);
|
||
|
|
||
|
protected:
|
||
|
void appendTokensDefine(QList<Lex::LexUnit> seqs, const QString &unknown_token);
|
||
|
void appendParser(SyntaxParser* u);
|
||
|
|
||
|
private:
|
||
|
QString unknown_token;
|
||
|
QList<Lex::LexUnit> token_seqs;
|
||
|
QList<SyntaxParser*> cascade_parsers;
|
||
|
|
||
|
Parse::ParseResult Parse::ParseFrame::inner_parse(QList<Lex::LexResult> &lex_seqence, QList<SyntaxParser*> parsers, QList<DesNode*> &nodes_out);
|
||
|
};
|
||
|
}
|