From a778ba4ab4c49669f8a59ef4aa7176063b590f1e Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Mon, 17 Feb 2020 17:37:58 +0100
Subject: [PATCH] fix lookbehind to handle `-` sign in substitution of dates in
 native statements

closes dynare#1708
---
 src/Statement.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/Statement.cc b/src/Statement.cc
index 888af54b..92dd8869 100644
--- a/src/Statement.cc
+++ b/src/Statement.cc
@@ -54,8 +54,8 @@ NativeStatement::writeOutput(ostream &output, const string &basename, bool minim
 {
   using namespace boost::xpressive;
   string date_regex = R"((-?\d+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4])))";
-  sregex regex_lookbehind = sregex::compile(R"((?<!\$|\d|[a-zA-Z_]|\'))" + date_regex);
-  sregex regex_dollar = sregex::compile(R"((\$))"+date_regex);
+  sregex regex_lookbehind = sregex::compile(R"((?<!\$|[a-zA-Z_]|-|'))" + date_regex);
+  sregex regex_dollar = sregex::compile(R"((\$))" + date_regex);
 
   string ns = regex_replace(native_statement, regex_lookbehind, "dates('$&')");
   ns = regex_replace(ns, regex_dollar, "$2"); //replace $DATE with DATE
-- 
GitLab