Файлы конфигурации + yacc;как на самом деле получить данные - PullRequest
0 голосов
/ 17 июля 2011

Я написал простой парсер конфигурационных файлов в yacc, который обрабатывает файлы следующим образом:

asdf=50
foobar=42

Т.е. слово = число.

Мой вопрос: как мне это интегрировать?в мою программу?В конечном счете, я хотел бы, чтобы обработанные значения сохранялись в некоторой внутренней структуре данных, к которой я могу получить доступ позже, когда захочу.В каждом примере с yacc, который я видел, просто printf () присваивает значение stdout, но в реальной программе это кажется бесполезным.

1 Ответ

1 голос
/ 20 июля 2011

Вы можете заменить эти printf на код, который вставляет данные в вашу собственную структуру данных.Примерно так:

rule: TOKEN1 TOKEN2 TOKEN3 
      {
          add_data(your_data, $1, $2, $3);
      };

, где add_data - это функция, которая добавляет данные, содержащиеся в $1, $2 и $3, в пользовательскую структуру данных, содержащуюся в переменной your_data.

Боюсь, your_data должен быть глобальным.Я копался в некоторых старых проектах yacc, которые у меня есть, и в других вопросах stackoverflow, таких как this , и я не нашел другого способа сделать это.Если кто-то знает лучший способ, пожалуйста, прокомментируйте.

Если вы отправите свой код, я могу попытаться помочь вам с подробностями.

...