2009-12-01 106 views
1

我试图帮助一个朋友在大学任务中,但我有点忘记了很多C和Lex。在Lex输入文件中插入文本(使用C)

问题是,我们试图解析一个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 =“”转到正确的标记)。

感谢

回答

3

重定向yyin中和yyout相同的文件将无法正常工作。(因为你已经知道了)。我的做法是:

  1. 创建一个临时文件
  2. yyout写入到临时文件
  3. 解析是完成,备份输入文件安全
  4. 更换输入文件,临时文件

没有其他办法,如果yyout和yyin一样,你的(原始输入)文本将被重叠。

+0

谢谢。其他问题:我们可以打开css文件进行解析并保存我们在html文件中的位置吗?我寻找yypos,但它不存在... 再次感谢 – 2009-12-01 12:26:43

+0

yylineno持有行号.. – empc 2009-12-01 15:18:39