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

发布于 2024-08-13 00:13:00 字数 658 浏览 11 评论 0原文

我正在尝试帮助一位朋友完成大学作业,但我忘记了很多 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="" 会转到正确的标签)。

谢谢

I'm trying to help a friend in a college assignment, but i kind of forgot a lot of C an Lex.

The thing is, we are trying to parse a HTML and a correspondent CSS file and add to a tag it's style.

Eg:

HTML

<body>
</body>

CSS

body{color:black;}

modified HTML

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

All the regex are done and the Macros too.

Problem: The input HTML and modified HTML gotta be the same file. We tried redirect both yyin and yyout to the same file... and then use the fputs(text, yyout); where text is a char * with all the style information (and style=""). It doesn't work.

So... Can you guys help him?

its important not to lose the notion of location in the file (so the style="" goes to the right tag).

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红墙和绿瓦 2024-08-20 00:13:00

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

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

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

redirect yyin and yyout to the same file will not work.. ( as you already know ) . My approach would be:

  1. Create a temp file
  2. yyout writes to temp file
  3. when parsing is finish, backup input file for safety
  4. replace input file with the temp file

There is no other way, if yyout is the same as yyin your (original input) text will be overlaped.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文