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);
?>
时间: 2024-11-05 10:36:05

php对nesc编译后的文件处理的相关文章

浅析Class文件反编译后的文件与源码文件大小关系

1.  编辑java文件后(有注释的情况下) 使用eclipse编译后成为.class文件后 2. 使用反编译工具编译后使用自带(Ctrl+S)的保存源码方式保存 3. 仅复制java翻译后的信息 其大小目前为149字节. 后续处理 a.      现在删除掉[第一步]源码文件中无关注释行,其大小变为118字节,但是其功能仍能实现. b.      现在将[第二步]中反编译工具保存的源码删除了无关部分,再看其大小.发现只有通过删除无关代码和空行后,才能使得其大小与第三步得到为java文件大小一致

Java类编译后Class文件概述(上)

一.Class文件 注意:每一个Class 文件都对应着唯一一个类或接口的定义信息,但是相对地,类或接口并不一定都得定义在文件里(譬如类或接口也可以通过类加载器直接生成). 二.class文件的文件结构 class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构只有两种数据类型:无符号数和表. class文件的结构描述 ClassFile { u4 magic; <span style="white-space:pre"> </span>//4位

[原]Maven项目编译后classes文件中没有.xml问题

在做spring+mybatiss时,自动扫描都配置正确了,却在运行时出现了如下错误.后来查看target/classes/.../dao/文件夹下,发现只有mapper的class文件,而没有xml文件,将对应的xml文件放到这个文件夹下运行就不会出现下面的错误.说明出现这个错误的原因是maven编译时没有将xml文件放进去. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com

转:Maven项目编译后classes文件中没有.xml问题

在做spring+mybatiss时,自动扫描都配置正确了,却在运行时出现了如下错误.后来查看target/classes/.../dao/文件夹下,发现只有mapper的class文件,而没有xml文件,将对应的xml文件放到这个文件夹下运行就不会出现下面的错误.说明出现这个错误的原因是maven编译时没有将xml文件放进去. 解决方法: 在pom.xml中添加如下代码: <build> ... <resources> <resource> <directory

恢复Reflector反编译后资源文件的办法

反编译问题: 1.路径问题:如果遇到了Path.Combine,有错误改下即可 2.资源文件问题: 在Reflector下,对左边的资源管理窗口的Resources文件夹下的资源文件,进行右键点击,选中"Save as" 选项保存即可. 例:对于项目文件夹里面的TryAssemb.Form1.resx,首先改为Form1.resx然后移动到TryAssemb目录里面 3.对窗体打开"视图设计器",发现会出现下面的错误: 修改方法就是对所有System.Windows

Maven项目编译后classes文件中没有.xml问题

在做spring+mybatiss时,自动扫描都配置正确了,却在运行时出现了如下错误.后来查看target/classes/.../dao/文件夹下,发现只有mapper的class文件,而没有xml文件,将对应的xml文件放到这个文件夹下运行就不会出现下面的错误.说明出现这个错误的原因是maven编译时没有将xml文件放进去. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com

Cocos移植Android-Android.mk编译后的文件

在以前的博客,我们使用的中年cocos工具C和C++源代码可以编译. 其实cocos工具读取<游戏project文件夹>\proj.android\jni\夹Android.mk文件,.Android.mk是一个编译文件,它是GNU Makefile的一小部分.是用来向Android NDK描写叙述C和C++源码文件的,怎样进行编译,以及打包等操作.默认的Android.mk文件内容例如以下: LOCAL_PATH := $(call my-dir) ① include $(CLEAR_VAR

Java类编译后Class文件概述(下)

具体的实例 Java文件 package com.weixuan.test; public class MyTest { private int age; private String name; public int getAge() { return age; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public void setName(String

jsp编译后的文件位置(Eclipse和tomcat)

java web开发人员都知道,jsp其实是转化成java代码,通过out.write()的方式生成页面.今天想看看转化的java源代码,通过查找发现Eclipse和tomcat的存储在不同的位置: [Eclipse] <workspace所在目录>\.metadata\.plugins\org.eclipse.wst.server.core\tmpX\work\Catalina\<项目名称> [tomcat] <tomcat所在目录>\work\Catalina\lo