wxLexer и Boost::Spirit

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

wxLexer и Boost::Spirit

Post by borr_1 » Sat Mar 07, 2009 7:39 am

Нашел тут упоминание о парсере wxLexer
http://www.xs4all.nl/~jorgb/components/lexer/help/

И все он вообще существует? Где можно взять? Я так и не понял.

И второй вопрос если тут кто-нибудь работал с Boost::Spirit помогите разобраться
Если у меня есть такая строка
wxT("name:Pole1|Pole2|Pole3;Label:Поле1|Поле2|Поле3;key:Pole1")
Ее надо разобрать и заполнить такой вектор
struct fields{
wxString name;
wxString label;
bool key;
};
std::vector<fields> table;

Как это сделать? А то по примеру в википедии и у них на сайте я не понял.

Kolya
Experienced Solver
Experienced Solver
Posts: 85
Joined: Mon Dec 11, 2006 11:35 am
Location: /dev/null

Re: wxLexer и Boost::Spirit

Post by Kolya » Sat Mar 07, 2009 12:46 pm

borr_1 wrote:Нашел тут упоминание о парсере wxLexer
wxLexer как я понимаю писал Jorg - админ этого форума. Можно спросить у него в англоязычной части или по почте. Но четырехлетняя давность документации говорит не в пользу wxLexer.

В wx есть простенький класс wxStringTokenizer с похожими функциями, может он подойдет. Как работает можно посмотреть в модульных тестах и примерах.
borr_1 wrote:И второй вопрос если тут кто-нибудь работал с Boost::Spirit помогите разобраться
В spirit есть достаточно хорошие примеры, начать можно, например с boost/libs/spirit/example/fundamental/calc_plain.cpp
Задается грамматика и на нее невешиваются действия. Довольно мощный инструмент получается, если грамматика сложная.
borr_1 wrote:wxT("name:Pole1|Pole2|Pole3;Label:Поле1|Поле2|Поле3;key:Pole1")
Но в данном случае она простая, но запутанная. я, чесно говоря, даже затрудняюсь понять ее.
Если есть возможность, то лучше сразу перевести все в XML:

Code: Select all

<fields>
  <field name="Pole1" label="Поле1" key="true"/>
  <field name="Pole2" label="Поле2" />
  <field name="Pole3" label="Поле3" />
</fields>
Тогда ее можно будет легко парсить с использованием eXpat-a или юзать wxXmlDocument

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Sun Mar 08, 2009 7:51 am

Я сейчас и разбираю эту свою строку по средством wxStringTokenizer, но меня очень интересует Spirit. Про examples спасибо. По поводу XML не хотелось бы, т.к. эту страку нужно будет прописывать вручную, хотелось чего то более простого (как мне кажется)

Post Reply