假設我想用boost正則表達式解析簡單的編程語言。Boost.Regex解析
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);
}
};
現在我需要你的幫助來定義函數解析器::接下來的(常量正則表達式&)。 我不清楚如何通過std :: string迭代boost正則表達式。
我希望有人能幫助我!