001
18.06.2004, 18:05 Uhr
0xdeadbeef
Gott (Operator)
|
Kuck dir mal boost::spirit an: www.boost.org
Update: So, jetzt ists fertig. [code C++] #include <fstream> #include <iostream> #include <iterator> #include <string>
#include <boost/spirit/core.hpp> #include <boost/spirit/utility/confix.hpp> #include <boost/spirit/utility/escape_char.hpp>
using namespace boost::spirit;
template<typename _t> class put_to_stream_a { std::ostream &os; public: put_to_stream_a(std::ostream &o) : os(o) {}
void operator()(_t data) const { os << data << std::flush; }
void operator()(const _t* b, const _t* e) const { std::copy(b, e, std::ostream_iterator<char>(os, "")); } };
int main(int argc, char *argv[]) { std::ifstream fin(argv[1]); std::string s; put_to_stream_a<char> to_cout(std::cout);
while(fin) s += fin.get(); parse(s.c_str(), *(confix_p('"', *c_escape_ch_p, '"')[to_cout] | comment_p("/*", "*/") | comment_p("//") | anychar_p[to_cout]), nothing_p); return 0; } [/cpp] Das Forum stellt das mit Syntax-Highlighting nicht richtig dar, deswegen jetzt in schwarz/weiß. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 18.06.2004 um 18:55 Uhr von 0xdeadbeef editiert. |