php对nesc编译后的文件处理
<?php $f_output = fopen("app_out.c","w"); $f_input = fopen("app.c","r"); while (!feof($f_input)) while (!feof($f_input)) { $next_match = 1; $line = fgets($f_input); // 1、代码位置信息(如:# 19 、#line 22) $pattern = '/(^(#line\s\d+))|(^(#\s\d+)(.*))/'; // $replacement = '// ${0}'; $replacement = ''; $r = preg_match($pattern, $line); if($r ) { $line = preg_replace($pattern, $replacement, $line); break; } // 2、内联函数标志信息(如: inline ) $pattern = '/(\b__inline\b)|(__inline\b)/'; // $replacement = '/* ${0} */'; // $replacement = 'inline'; $replacement = ''; $r = preg_match($pattern, $line); if($next_match && $r ) { $line = preg_replace($pattern, $replacement, $line); $next_match = 0; } // 3、$符号的处理 $contents = $line; $pattern = '/(\w+)(\$)(\w+)/'; $replacement = '${1}__${3}'; $matchCount = 0; while($next_match) { $r = preg_match($pattern, $contents); if($r ) { $matchCount++; $contents = preg_replace($pattern, $replacement, $contents); } else { if( $matchCount == 0 ) { break; } $line = $contents; $next_match = 0; break; } } fputs($f_output,$line); } fclose($f_input); fclose($f_output); ?>
联系方式:heshengjun@tinywsn.com