Как добавить Regex в класс C ++? - PullRequest
0 голосов
/ 09 апреля 2020

Я работал над первой частью лексера для пользовательского языка программирования и получаю эту ошибку каждый раз, когда пытаюсь запустить его:

lexer.cpp:8:17: error: expected identifier before string constant
   std::regex re("print[(]([0-9]+)[)];");
                 ^~~~~~~~~~~~~~~~~~~~~~
lexer.cpp:8:17: error: expected ‘,’ or ‘...’ before string constant
lexer.cpp: In member function ‘std::__cxx11::string Lexer::lex(std::__cxx11::string)’:
lexer.cpp:12:31: error: invalid use of non-static member function ‘std::__cxx11::regex Lexer::re(int)’
     std::regex_search(s, m, re);
                               ^
lexer.cpp:8:14: note: declared here
   std::regex re("print[(]([0-9]+)[)];");
              ^~

Это мой код:

#include <iostream>
#include <regex>


class Lexer {
  public:
  std::regex re("print[(]([0-9]+)[)];");
  std::smatch m;

  std:: string lex(std::string s) {
    std::regex_search(s, m, re);
    return m[1];
  }
};
int main()
{
    // Target sequence
    std::string s;
    Lexer lexer;

    while(true){
      std::cin >> s;
      std::cout << lexer.lex(s);
    // for each loop

    }
    return 0;
}

Я знаю, что это не полный лексер или даже близко, но я был бы очень благодарен, если бы вы помогли. Спасибо!

...