esaulenka 5 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба вы считаете что монструозная sprint это попроще? :) Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас. Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт. Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас. Вы еще другие мои ф-ции не видели. Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт. Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си... я пользовался minixml парсером. он конечно написан красиво. с полным функционалом. цена - 35К. он написан под GCC. перешел на IAR - в IAR не компилируется. вот решил написать свой велосипед. а что страшного в обрамлении строки кавычками. строку по любому придется грузить в стек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас. Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт. Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си... На любом языке не просто. Но можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба а что страшного в обрамлении строки кавычками. строку по любому придется грузить в стек. Один раз или два? В текущем варианте сначала в стеке (или не в стеке, я уж не знаю, что там за пределами этой функции) оказывается вариант без кавычек, а потом в стек кладётся вариант с кавычками. Решение "найти '<', проверить, что сразу за ним нужная строка, проверить, что сразу за ним '/>' " никаких строк никуда не копирует. Но я за решение "не строить свои велосипеды". Особенно такие велосипеды, которые могут поворачивать только налево (направо не предусмотрено. или даже просто не оттестировано). Вот, к примеру, каркас для создания парсера: https://dev.yorhel.nl/yxml/man Маллоков нет, размер минимальный. Ну и mini-xml написан не под GCC, а на стандартном Си. Проще подточить под IAR, чем делать с нуля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба Один раз или два? В текущем варианте сначала в стеке (или не в стеке, я уж не знаю, что там за пределами этой функции) оказывается вариант без кавычек, а потом в стек кладётся вариант с кавычками. Решение "найти '<', проверить, что сразу за ним нужная строка, проверить, что сразу за ним '/>' " никаких строк никуда не копирует. Но я за решение "не строить свои велосипеды". Особенно такие велосипеды, которые могут поворачивать только налево (направо не предусмотрено. или даже просто не оттестировано). Вот, к примеру, каркас для создания парсера: https://dev.yorhel.nl/yxml/man Маллоков нет, размер минимальный. Я хотел работать с Yxml. он только парсит элементы. а мне нужно и добавлять. к тому же #define BUFSIZE 4096 void *buf = malloc(BUFSIZE); yxml_t x; yxml_init(&x, buf, BUFSIZE); так и я умею :) Ну и mini-xml написан не под GCC, а на стандартном Си. Проще подточить под IAR, чем делать с нуля. Да как подточить. Там инклюдиться куча системных хедеров которых в IAR не существует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться