#ifndef STORYCONCEPTDOCUMENTPARSER_H
#define STORYCONCEPTDOCUMENTPARSER_H

#include "ParseFrame.h"
#include "SyntaxBase.h"
#include "XSyntaxBase.h"

namespace Parse {

    class NodeStoryConcept : public Result::NamedNode
    {
    public:
        NodeStoryConcept(const QString &name, Result::DocCore *doc);

        // DesNode interface
    public:
        virtual bool check(QList<ErrorMessage> &reasons) const override;
        virtual QString toString() const override;
    };

    class NodeStoryConceptParser : public Syntax::XSyntaxBase
    {
    public:
        NodeStoryConceptParser(Result::ParseCore *core);

    private:
        Result::ParseCore *const core;
    };


    class NodeStoryStrongPoint : public Result::NamedNode
    {
    public:
        NodeStoryStrongPoint(NodeStoryConcept *parent, const QString &name);

        // DesNode interface
    public:
        virtual bool check(QList<ErrorMessage> &reasons) const override;
        virtual QString toString() const override;

        // NamedNode interface
    public:
        virtual QList<QString> name() const override;

    private:
        NodeStoryConcept *const concept_point;
    };


    class NodeStoryStrongPointParser : public Syntax::XSyntaxBase
    {
    public:
        NodeStoryStrongPointParser(NodeStoryConceptParser *pparser);

    };



    class StoryConceptDocumentParser : public Syntax::ParseFrame
    {
    public:
        StoryConceptDocumentParser(Result::ParseCore *core);
    };

}















#endif // STORYCONCEPTDOCUMENTPARSER_H
