c - 在 Lex 的输入文件中插入文本(使用 C)

标签 c lex lexical-analysis lexical

我正试图帮助一位 friend 完成大学作业,但我有点忘记了很多 C 和 Lex。

问题是,我们正在尝试解析 HTML 和对应的 CSS 文件,并将其样式添加到标签中。

例如:

HTML

<body>
</body>

CSS

body{color:black;}

修改后的 HTML

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

所有正则表达式都已完成,宏也已完成。

问题:输入的 HTML 和修改后的 HTML 必须是同一个文件。我们尝试将 yyinyyout 重定向到同一个文件...然后使用 fputs(text, yyout);其中 text 是一个带有所有样式信息(和 style="")的 char *。它不起作用。

那么...你们能帮帮他吗?

重要的是不要丢失文件中位置的概念(因此 style=""转到正确的标签)。

谢谢

最佳答案

将 yyin 和 yyout 重定向到同一个文件将不起作用..(如您所知)。我的方法是:

  1. 创建一个临时文件
  2. yyout 写入临时文件
  3. 解析完成后,为了安全备份输入文件
  4. 用临时文件替换输入文件

没有其他办法,如果 yyout 与 yyin 相同,您的(原始输入)文本将被重叠。

关于c - 在 Lex 的输入文件中插入文本(使用 C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1823561/

相关文章:

c - 使用将空指针作为参数在 C 中有效的分配给空指针的函数是否有效?

java - 为 Windows Mobile 6.1 选项编写应用程序?

c++ - 弹性/Bison : Bad token management?

linux - 针对 lex 和 yacc 中的小错误的建议

bison - flex/bison 中的半保留字处理

java - 左递归: ANTLR

C++ 词法分析器

c - 哈希表覆盖

c - 为什么Windows和Linux有不同的strdup实现: strdup() and _strdup()?

regex - 语法分析器如何忽略输入中的空格