2009-12-01 85 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