diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-03-04 14:38:04 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2015-03-04 14:38:04 +0100 |
commit | 2714f95ab3c8632686d24ff8d2abfc1f35dc5dd7 (patch) | |
tree | 96a2d75546be1aa0499f6e3bb4e8237897bb1192 /src/core/parser/stack/OntologyHandler.hpp | |
parent | 0a05765f86271743a6fa9b79036f56240b8c3c06 (diff) |
Added parsing of the generic syntax description
Diffstat (limited to 'src/core/parser/stack/OntologyHandler.hpp')
-rw-r--r-- | src/core/parser/stack/OntologyHandler.hpp | 133 |
1 files changed, 127 insertions, 6 deletions
diff --git a/src/core/parser/stack/OntologyHandler.hpp b/src/core/parser/stack/OntologyHandler.hpp index fd62f78..0203805 100644 --- a/src/core/parser/stack/OntologyHandler.hpp +++ b/src/core/parser/stack/OntologyHandler.hpp @@ -145,11 +145,6 @@ public: } }; -class OntologyParent : public Node { -public: - using Node::Node; -}; - class OntologyParentHandler : public StaticHandler { public: using StaticHandler::StaticHandler; @@ -187,6 +182,97 @@ public: } }; +class OntologySyntaxHandler : public StaticHandler { +public: + using StaticHandler::StaticHandler; + + bool startCommand(Variant::mapType &args) override; + void end() override; + + static Handler *create(const HandlerData &handlerData) + { + return new OntologySyntaxHandler{handlerData}; + } +}; + +class OntologyOpenCloseShortHandler : public StaticHandler { +public: + TokenDescriptor *descr; + + OntologyOpenCloseShortHandler(const HandlerData &handlerData); + + bool startCommand(Variant::mapType &args) override; + bool data() override; + void end() override; + + static Handler *create(const HandlerData &handlerData) + { + return new OntologyOpenCloseShortHandler{handlerData}; + } +}; + +class OntologySyntaxTokenHandler : public StaticHandler { +public: + using StaticHandler::StaticHandler; + + bool startCommand(Variant::mapType &args) override; + + static Handler *create(const HandlerData &handlerData) + { + return new OntologySyntaxTokenHandler{handlerData}; + } +}; + +class OntologySyntaxWhitespaceHandler : public StaticHandler { +public: + OntologySyntaxWhitespaceHandler(const HandlerData &handlerData); + + Variant whitespaceModeStr; + + bool startCommand(Variant::mapType &args) override; + bool data() override; + void end() override; + + static Handler *create(const HandlerData &handlerData) + { + return new OntologySyntaxWhitespaceHandler{handlerData}; + } +}; + +/* Internally used dummy node classes */ + +class ParserOntologyParentNode : public Node { +public: + using Node::Node; +}; + +class ParserSyntaxNode: public Node { +public: + using Node::Node; +}; + +class ParserSyntaxTokenNode: public Node { +public: + TokenDescriptor *descr; + + ParserSyntaxTokenNode(Manager &mgr, TokenDescriptor *descr); +}; + +class ParserSyntaxOpenNode: public ParserSyntaxTokenNode { +public: + using ParserSyntaxTokenNode::ParserSyntaxTokenNode; +}; + +class ParserSyntaxCloseNode: public ParserSyntaxTokenNode { +public: + using ParserSyntaxTokenNode::ParserSyntaxTokenNode; +}; + +class ParserSyntaxShortNode: public ParserSyntaxTokenNode { +public: + using ParserSyntaxTokenNode::ParserSyntaxTokenNode; +}; + namespace States { /** * State representing a "ontology" struct. @@ -247,11 +333,46 @@ extern const State OntologyStructParentField; * State representing a "fieldRef" tag within a "parent" tag. */ extern const State OntologyStructParentFieldRef; + +/** + * State representing a "syntax" tag within a structure, annotation or field. + */ +extern const State OntologySyntax; + +/** + * State representing a "open" tag within a "syntax" tag. + */ +extern const State OntologySyntaxOpen; + +/** + * State representing an "close" tag within a "syntax" tag. + */ +extern const State OntologySyntaxClose; + +/** + * State representing a "short" tag within a "syntax" tag. + */ +extern const State OntologySyntaxShort; + +/** + * State representing a "whitespace" tag within a "syntax" tag. + */ +extern const State OntologySyntaxWhitespace; + +/** + * State representing a token within a "start", "end" or "short" tag. + */ +extern const State OntologySyntaxToken; } } namespace RttiTypes { -extern const Rtti OntologyParent; +extern const Rtti ParserOntologyParentNode; +extern const Rtti ParserSyntaxNode; +extern const Rtti ParserSyntaxTokenNode; +extern const Rtti ParserSyntaxOpenNode; +extern const Rtti ParserSyntaxCloseNode; +extern const Rtti ParserSyntaxShortNode; } } #endif /* _OUSIA_ONTOLOGY_HANDLER_HPP_ */ |