реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Передача указателя в качестве аргумента.
esaulenka
сообщение Dec 21 2016, 09:37
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Jenya7 @ Dec 20 2016, 15:05) *
вы считаете что монструозная sprint это попроще? sm.gif

Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас.
Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.

Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си...


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 21 2016, 10:34
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(esaulenka @ Dec 21 2016, 15:37) *
Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас.

Вы еще другие мои ф-ции не видели.

Цитата(esaulenka @ Dec 21 2016, 15:37) *
Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.

Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си...


я пользовался minixml парсером. он конечно написан красиво. с полным функционалом. цена - 35К. он написан под GCC. перешел на IAR - в IAR не компилируется. вот решил написать свой велосипед.

а что страшного в обрамлении строки кавычками. строку по любому придется грузить в стек.
Go to the top of the page
 
+Quote Post
x893
сообщение Dec 21 2016, 10:51
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Цитата(esaulenka @ Dec 21 2016, 12:37) *
Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас.
Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.

Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си...


На любом языке не просто. Но можно.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Dec 21 2016, 12:41
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Jenya7 @ Dec 21 2016, 13:34) *
а что страшного в обрамлении строки кавычками. строку по любому придется грузить в стек.

Один раз или два? В текущем варианте сначала в стеке (или не в стеке, я уж не знаю, что там за пределами этой функции) оказывается вариант без кавычек, а потом в стек кладётся вариант с кавычками.
Решение "найти '<', проверить, что сразу за ним нужная строка, проверить, что сразу за ним '/>' " никаких строк никуда не копирует.



Но я за решение "не строить свои велосипеды". Особенно такие велосипеды, которые могут поворачивать только налево (направо не предусмотрено. или даже просто не оттестировано).

Вот, к примеру, каркас для создания парсера: https://dev.yorhel.nl/yxml/man
Маллоков нет, размер минимальный.

Ну и mini-xml написан не под GCC, а на стандартном Си. Проще подточить под IAR, чем делать с нуля.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 21 2016, 14:10
Сообщение #20


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(esaulenka @ Dec 21 2016, 17:41) *
Один раз или два? В текущем варианте сначала в стеке (или не в стеке, я уж не знаю, что там за пределами этой функции) оказывается вариант без кавычек, а потом в стек кладётся вариант с кавычками.
Решение "найти '<', проверить, что сразу за ним нужная строка, проверить, что сразу за ним '/>' " никаких строк никуда не копирует.



Но я за решение "не строить свои велосипеды". Особенно такие велосипеды, которые могут поворачивать только налево (направо не предусмотрено. или даже просто не оттестировано).

Вот, к примеру, каркас для создания парсера: https://dev.yorhel.nl/yxml/man
Маллоков нет, размер минимальный.


Я хотел работать с Yxml. он только парсит элементы. а мне нужно и добавлять.
к тому же
Код
  #define BUFSIZE 4096
  void *buf = malloc(BUFSIZE);
  yxml_t x;
  yxml_init(&x, buf, BUFSIZE);

так и я умею sm.gif
Цитата(esaulenka @ Dec 21 2016, 17:41) *
Ну и mini-xml написан не под GCC, а на стандартном Си. Проще подточить под IAR, чем делать с нуля.

Да как подточить. Там инклюдиться куча системных хедеров которых в IAR не существует.

Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 01:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016