假设我想用 boost 正则表达式解析一种简单的编程语言。
import a
import b
class c
现在我想要这样的布局:
#include <string>
#include <boost/filesystem.hpp>
#include <exception>
using namespace std;
using namespace boost;
using namespace boost::filesystem;
class parser
{
string _source;
unsigned int pos;
public:
parser(const string& source) : _source(source), pos(0) {}
string expect(const regex& expr)
{
string s = next(expr)
if (s != "")
return s;
else
{
--pos;
throw exception("Expected another expression.");
}
}
string next(const regex& expr)
{
// Removing all whitespace before first non-whitespace character
// Check if characters 0 till x matches regex expr
// Return matched string of "" if not matched.
}
bool peek(const regex& expr);
parse()
{
regex identifier("\a*");
if (peek("import"))
string package = expect(identifier);
else if (peek("class"))
string classname = expect(identifier);
}
};
现在我需要你的帮助来定义函数 parser::next(const regex&)。我不清楚如何通过 std::string 使用 boost 正则表达式进行迭代。
我希望有一个人可以帮助我!