diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/parser/stack/OntologyHandler.cpp | 12 | ||||
-rw-r--r-- | src/core/parser/stack/OntologyHandler.hpp | 1 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/core/parser/stack/OntologyHandler.cpp b/src/core/parser/stack/OntologyHandler.cpp index 0cd8140..c153316 100644 --- a/src/core/parser/stack/OntologyHandler.cpp +++ b/src/core/parser/stack/OntologyHandler.cpp @@ -337,7 +337,7 @@ enum class TokenType { OPEN, CLOSE, SHORT }; OntologyOpenCloseShortHandler::OntologyOpenCloseShortHandler( const HandlerData &handlerData) - : StaticHandler(handlerData), descr(nullptr) + : StaticHandler(handlerData), descr(nullptr), greedy(true) { } @@ -464,6 +464,14 @@ bool OntologyOpenCloseShortHandler::startCommand(Variant::mapType &args) scope().push(new ParserSyntaxShortNode(manager(), descr)); break; } + + // Read the "greedy" attribute (default values is "true"). The + // TokenDescriptor is updated accordingly in the "end()" method. + auto it = args.find("greedy"); + if (it != args.end()) { + greedy = it->second.asBool(); + } + return true; } @@ -730,7 +738,7 @@ const State OntologySyntaxShort = .parent(&OntologySyntax) .createdNodeType(&RttiTypes::ParserSyntaxShortNode) .elementHandler(OntologyOpenCloseShortHandler::create) - .arguments(Arguments{}); + .arguments({Argument::Bool("greedy", true)}); const State OntologySyntaxWhitespace = StateBuilder() diff --git a/src/core/parser/stack/OntologyHandler.hpp b/src/core/parser/stack/OntologyHandler.hpp index b91e594..be3fae7 100644 --- a/src/core/parser/stack/OntologyHandler.hpp +++ b/src/core/parser/stack/OntologyHandler.hpp @@ -198,6 +198,7 @@ public: class OntologyOpenCloseShortHandler : public StaticHandler { public: TokenDescriptor *descr; + bool greedy; OntologyOpenCloseShortHandler(const HandlerData &handlerData); |