From 4a57a9e502ca02f81b358f3e7df4405c675796fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Sun, 22 Apr 2018 21:10:20 +0200 Subject: [PATCH] =?UTF-8?q?Prefix=20integer=20variables=20with=20=E2=80=9C?= =?UTF-8?q?N=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of suffixing integer variables with ā€œi,ā€ this prefixes them with ā€œNā€ instead to make it consistent with common mathematical notations. --- include/anthem/Utils.h | 1 + include/anthem/output/AST.h | 22 +++++----------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/include/anthem/Utils.h b/include/anthem/Utils.h index cc81102..f708186 100644 --- a/include/anthem/Utils.h +++ b/include/anthem/Utils.h @@ -13,6 +13,7 @@ namespace anthem constexpr const auto HeadVariablePrefix = "V"; constexpr const auto BodyVariablePrefix = "X"; constexpr const auto UserVariablePrefix = "U"; +constexpr const auto IntegerVariablePrefix = "N"; //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/include/anthem/output/AST.h b/include/anthem/output/AST.h index 15f91c7..26398f9 100644 --- a/include/anthem/output/AST.h +++ b/include/anthem/output/AST.h @@ -35,6 +35,7 @@ struct PrintContext std::map userVariableIDs; std::map headVariableIDs; std::map bodyVariableIDs; + std::map integerVariableIDs; const Context &context; }; @@ -322,22 +323,6 @@ inline output::ColorStream &print(output::ColorStream &stream, const Variable &v inline output::ColorStream &print(output::ColorStream &stream, const VariableDeclaration &variableDeclaration, PrintContext &printContext, bool) { - const auto domainSuffix = - [&variableDeclaration]() - { - switch (variableDeclaration.domain) - { - case Domain::Unknown: - return ""; - case Domain::Noninteger: - return "n"; - case Domain::Integer: - return "i"; - } - - return ""; - }; - const auto printVariableDeclaration = [&](const auto *prefix, auto &variableIDs) -> output::ColorStream & { @@ -350,11 +335,14 @@ inline output::ColorStream &print(output::ColorStream &stream, const VariableDec matchingVariableID = emplaceResult.first; } - const auto variableName = std::string(prefix) + std::to_string(matchingVariableID->second) + domainSuffix(); + const auto variableName = std::string(prefix) + std::to_string(matchingVariableID->second); return (stream << output::Variable(variableName.c_str())); }; + if (variableDeclaration.domain == Domain::Integer) + return printVariableDeclaration(IntegerVariablePrefix, printContext.integerVariableIDs); + switch (variableDeclaration.type) { case VariableDeclaration::Type::UserDefined: