Вставьте текст во входной файл в Lex (с C) - PullRequest
1 голос
/ 01 декабря 2009

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

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

Например:

HTML

<body>
</body>

CSS

body{color:black;}

измененный HTML

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

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

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

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

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

Спасибо

1 Ответ

3 голосов
/ 01 декабря 2009

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

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

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

...