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);
?>

 

posted @ 2017-06-25 12:18  未命名blogs  阅读(216)  评论(0编辑  收藏  举报