Я работал над первой частью лексера для пользовательского языка программирования и получаю эту ошибку каждый раз, когда пытаюсь запустить его:
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;
}
Я знаю, что это не полный лексер или даже близко, но я был бы очень благодарен, если бы вы помогли. Спасибо!