Вставить текст во входной файл в Lex (с C)

Я пытаюсь помочь другу с заданием в колледже, но я немного забыл C an Lex.

Дело в том, что мы пытаемся разобрать HTML и соответствующий файл CSS и добавить к тегу его стиль.

Eg:

HTML

<body>
</body>

CSS

body{color:black;}

измененный HTML

<body style="color:black;">
</body>

Все регулярные выражения выполнены и макросы тоже.

Проблема: исходный HTML и измененный HTML должны быть одним и тем же файлом. Мы попытались перенаправить и yyin, и yyout в один и тот же файл... а затем использовать fputs(text, yyout); где text — это char * со всей информацией о стиле (и style=""). Это не работает.

Итак... Ребята, вы можете ему помочь?

важно не потерять понятие местоположения в файле (поэтому стиль = "" идет к правильному тегу).

Спасибо


person Mario Cesar    schedule 01.12.2009    source источник


Ответы (1)


перенаправить yyin и yyout в один и тот же файл не получится.. (как вы уже знаете). Мой подход был бы таким:

  1. Создать временный файл
  2. yyout пишет во временный файл
  3. когда синтаксический анализ закончен, сделайте резервную копию входного файла для безопасности
  4. заменить входной файл временным файлом

Другого пути нет, если yyout совпадает с yyin, ваш (исходный ввод) текст будет перекрываться.

person empc    schedule 01.12.2009
comment
Спасибо. Другой вопрос: можем ли мы открыть файл css для анализа и сохранить позицию, в которой мы находимся, в файле html? я ищу yypos, но его не существует... Еще раз спасибо - person Mario Cesar; 01.12.2009