Write matchers using C++ regex to match (and test the match) for C++ - style doubles and identifiers Using the template

Business, Finance, Economics, Accounting, Operations Management, Computer Science, Electrical Engineering, Mechanical Engineering, Civil Engineering, Chemical Engineering, Algebra, Precalculus, Statistics and Probabilty, Advanced Math, Physics, Chemistry, Biology, Nursing, Psychology, Certifications, Tests, Prep, and more.
Post Reply
answerhappygod
Site Admin
Posts: 899604
Joined: Mon Aug 02, 2021 8:13 am

Write matchers using C++ regex to match (and test the match) for C++ - style doubles and identifiers Using the template

Post by answerhappygod »

Write matchers using C++ regex to match (and test the match) for
C++ - style doubles and identifiers Using the template below.
//Begin of code
// Goal - match C++ decimal (base 10) integer strings.
// Digit = r(0|..|9)
// PositiveDigit=r(1|..|9)
// Decimal = r(0|(PositiveDigit((|')Digit)*))
#include "gtest/gtest.h"
#include <regex>
#include <string>
using namespace std;
bool IsDecimal(const std::string &candidate) {
regex
matcher("(-?(0|([1-9]('?[0-9])*))|\\((0|([1-9]('?[0-9])*))\\))");
return regex_match(candidate,matcher);
}
bool IsDouble(const std::string &candidate) {
return true;
}
bool IsIdentifier(const std::string &candidate) {
return true;
}
TEST(RegEx,DecimalInteger) {
ASSERT_TRUE(IsDecimal("0"));
ASSERT_TRUE(IsDecimal("1"));
ASSERT_TRUE(IsDecimal("1'2'3"));
ASSERT_TRUE(IsDecimal("1'000'000"));
ASSERT_TRUE(IsDecimal("-0"));
ASSERT_TRUE(IsDecimal("-1"));
ASSERT_TRUE(IsDecimal("-1'2'3"));
ASSERT_TRUE(IsDecimal("-1'000'000"));
ASSERT_FALSE(IsDecimal("-"));
ASSERT_FALSE(IsDecimal("00"));
ASSERT_FALSE(IsDecimal("00"));
ASSERT_FALSE(IsDecimal("0001"));
ASSERT_FALSE(IsDecimal("1''000''000"));
ASSERT_FALSE(IsDecimal(".20"));
ASSERT_FALSE(IsDecimal("20."));
}
TEST(RegEx,Double) {
}
TEST(RegEx,Identifier) {
}
#end of code
Join a community of subject matter experts. Register for FREE to view solutions, replies, and use search function. Request answer by replying!
Post Reply