Прочитать файл YAML, используя скрипт C - PullRequest
1 голос
/ 10 ноября 2009

Я хотел бы прочитать тонкий файл YAML, используя простую программу на Си. Я считаю, что лучший способ для этого - использовать следующую библиотеку: Pyyaml.org.

Прочитав вики-страницу, я попробую использовать несколько примеров здесь: http://pyyaml.org/browser/libyaml/branches/stable/tests/ Но для такого нуба, как я, это не очень просто понять.

Если, например, я получу этот более простой файл YAML (с именем test.yml ):

test:
  - {conf: hi}
  - {conf: test}
  - {conf: abc}

Как я могу сделать что-то вроде этого:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
  /* I do not really see how to load the file here... */

  char *conf[3] = {"hi", "test", "abc"}; /* configuration of the YAML file */

  int i;
  for (i = 0; i < 3; i++)
  {
    printf("content: %s\n", conf[i]);
  }

  return 0;
}

... но из данного файла YAML?

Большое спасибо за любые предложения!

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

libyaml, похоже, основан на событиях, что обычно означает, что он настроен на скорость и меньше для удобства использования. И таких примеров не так много (по крайней мере, для исходного кода C привязки к языку сценариев более популярны). Исходный дистрибутив содержит некоторый пример кода в каталоге tests. Наиболее полным, кажется, является пример деконструктора . Он длинный, но очень хорошо прокомментирован, поэтому за ним легко следить.

Как правило, я не уверен, насколько полезен YAML для кода C. Самым сильным преимуществом YAML является то, что он естественным образом отображается на типы данных, используемые языками сценариев, такими как Python и Perl, - списки и словари, вложенные в произвольные уровни. Возможность тривиальной сериализации таких вложенных структур в YAML делает его привлекательным. Мне любопытно, почему вам нужен YAML для кода C.

1 голос
/ 10 ноября 2009

Второй ответ на этот вопрос имеет несколько лучший пример использования библиотеки для разбора файла yaml во что-то более полезное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...