summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-04-12 15:15:35 +0200
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2016-04-25 22:24:15 +0200
commitae1b41524c89c29b47b189fd6741f3aeefeaeb50 (patch)
tree28a8f4587de4522f6de83d05949e11e2f1b5f61a /src
parentc3c092e2ee64612b50dea010cc4e1ef54d27c31e (diff)
Add a new "greedy" flag as attribute to the "short" syntax descriptor
Diffstat (limited to 'src')
-rw-r--r--src/core/parser/stack/OntologyHandler.cpp12
-rw-r--r--src/core/parser/stack/OntologyHandler.hpp1
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);