1
나는 boost :: proto를 사용하여 매우 제한된 파서 연결자 라이브러리를 정의하려고 시도하고 있으며, 기본이 아닌 기본 proto 터미널을 정의 할 수 있는지 궁금해하고있다. 내가 프로토 식의 부스트 프로토 터미널로 사용하려는기본이 아닌 boost :: proto 터미널을 구축했다
struct symbol
{
symbol(const string &str): str_(str) {}
bool operator()(const string &str) const {
return (str == str_);
}
string str_;
};
:
는이 같은 구조를 가지고있다. 나는 BOOST_PROTO_DEFINE_OPERATORS
의 도움으로 작동하도록 얻을 수 있었다, 그러나 나는 자주 프로토 식 내부 proto::lit()
에 포장해야하는 것이 다소 불편 찾을 :
match(symbol("abc") >> (proto::lit(symbol("xyz")) | symbol("klm")))
나는 프로토 터미널을 만들 수 있는지 궁금 해서요
proto::terminal<symbol>::type sym;
문자열 인수를 받아서 symbol 생성자에 전달할 수 있습니다
참고 : 성령에 대해 알고 있지만 제 컴파일러가이를 잘 지원하지 않습니다!
많은lit
같은
proto::terminal<symbol>::type sym(std::string const& s)
{ return { symbol(s) }; }
터미널로의 매개 변수를 켤 수있는 기능 템플릿은 다음과 같습니다
바로! 얼마나 어리석은 나를 :) 감사합니다! –