史上最简单好用的代码生成器

<meta charset="utf-8">
<form action=‘‘ method=‘post‘>
<!--判断i->显示错误:等于0
判断i->显示Helloworld:等于1-->
<!--
Init->显示 Helloworld:1
-->
<!--
判断i->显示错误:等于0
判断i->显示Helloworld:等于1
-->

<!--
判断i->显示错误:等于0
判断i->显示错误:等于-1
-->
<!--
显示 Helloworld->结束:i=1
-->
<!--
显示 Helloworld->结束:
-->
<textarea name="content" style="width:100%; height:30%">
显示 Helloworld->结束:
</textarea>
<input type="submit" value="提交" />
</from>
<?php
if( !isset($_POST[‘content‘]) ) exit;
$content = $_POST[‘content‘];
if( !isset($content) ) exit;
//状态表
$状态表 = array();
$状态关系表 = array();

 $arrContent = explode("\r\n", $content);
 $arrTemplate=array();

  $code="";
 for($i=0;$i<sizeof( $arrContent );$i++ )
 {
	$strLine = trim($arrContent[$i]);
	if( !$strLine ) continue;

	$n1 = strpos($strLine,"->");
	$n2 = strpos($strLine,":");

	$strState1 = trim(substr($strLine,0,$n1));
	$strState2 = trim(substr($strLine,$n1+2,$n2-$n1-2));

	$strEvent = trim(substr($strLine,$n2+1));

	if( $strState1!="" )
	{
		$pos1=搜索数组($strState1,$状态表);
		if( $pos1<0  )
		{
			$pos1=array_push($状态表,$strState1)-1;
		}

	}
	if( $strState2!="" )
	{
		$pos2=搜索数组($strState2,$状态表);
		if( $pos2<0 )
			$pos2=array_push($状态表,$strState2)-1;
	}

	$arr = array();
	array_push($arr,$pos1);
	array_push($arr,$pos2);
	array_push($arr,$strEvent);
	$状态关系表=添加到状态关系表($状态关系表,$arr);

}

$code = 获取代码($状态关系表,$状态表);

 //echo "<pre>";
  //var_dump($状态表);
 // var_dump($状态关系表);

 //echo "</pre>";
?>

<canvas id="c" width="300" height="<?php echo sizeof($状态表)*140?>"></canvas>
<script>
<?php

for($i=0;$i<sizeof($状态表);$i++)
{
	$state1 = $状态表[$状态关系表[$i][0]];
	$state2 = $状态表[$状态关系表[$i][1]];
	?>

	var c=document.getElementById("c");
	var ctx=c.getContext("2d");
	ctx.rect(20,20+120*<?php echo $i?>,150,100);
	ctx.stroke();

	<?php 

}
?>
</script>

<textarea id="code" style="width:100%; height:30%">
<?php echo $code?>
</textarea>
<?php
function 搜索数组($str,$arr)
{

	for($i=0;$i<sizeof($arr);$i++)
	{
		if( $arr[$i]==$str )
		{
			return $i;
		}
	}

	return -1;
}
function 搜索状态关系表($str,$arr)
{

	for($i=0;$i<sizeof($arr);$i++)
	{
		if( $arr[$i][0]==$str )
		{
			return $i;
		}
	}

	return -1;
}
function 添加到状态关系表($arr,$arrEvent)
{
	$arrState = array();

	$pos= 搜索状态关系表($arrEvent[0],$arr);
	$newArrEvent = array();
		array_push($newArrEvent,$arrEvent[1]);
		if( $arrEvent[2] )
			array_push($newArrEvent,$arrEvent[2]);
	if( $pos >= 0 )
	{
		//累加
		array_push($arr[$pos][1],$newArrEvent);
	}
	else
	{
		$arrEventParent = array();
		array_push($arrEventParent,$newArrEvent);

		array_push($arrState,$arrEvent[0]);
		array_push($arrState,$arrEventParent);
		//新增
		array_push($arr,$arrState);
	}

	 return $arr;
}
function 获取代码($状态关系表,$状态表)
{
	$str="";

	for($i=0;$i<sizeof($状态关系表);$i++)
	{
		if(sizeof($状态关系表[$i][1])>0&&sizeof($状态关系表[$i][1][0])<2)
			$template=file_get_contents("0.txt");
		else
			$template=file_get_contents(sizeof($状态关系表[$i][1]).".txt");
		$template=str_replace("{state}",$状态表[$状态关系表[$i][0]],$template);

		for( $j=0;$j<sizeof($状态关系表[$i][1]);$j++ )
		{
			$template=str_replace("{state".$j."}",$状态表[ $状态关系表[$i][1][$j][0] ],$template);
			if( sizeof($状态关系表[$i][1][$j])>1)
				$template=str_replace("{case".$j."}", $状态关系表[$i][1][$j][1] ,$template);
		}

	}
	$str=$template;
	return $str;
}
?>

{state}();
 0.txt 

{state}();
if( {case0} )
	{state0}();
 1.txt 

switch( {state}() )
{
    case {case0}:
    {state0}();
    break;
    case {case1}:
    {state1}();
    break;
}
2.txt

  

时间: 2024-07-30 10:08:36

史上最简单好用的代码生成器的相关文章

史上最简单的个人移动APP开发入门--jQuery Mobile版跨平台APP开发

书是人类进步的阶梯. ——高尔基 习大大要求新新人类要有中国梦,鼓励大学生们一毕业就创业.那最好的创业途径是什么呢?就是APP.<构建跨平台APP-jQuery Mobile移动应用实战>就是一本写给没钱没身份没资历的创业小白看的APP书,看完这本书你可以拥有自己的一个APP,不用花钱就能移植到其他移动平台,支持iOS,Android,Windows Phone!!!!!!!!找个最便宜的来练手吧!  小白APP交流Q群:  348632872 清华大学出版社推出的<构建跨平台APP:j

史上最简单的 Spring MVC 教程(十)

1 前言 在史上最简单的 Spring MVC 教程(九)中,咱们已经实现了图片的上传及显示功能,那么接下来,在本篇博文中,咱们更进一步,以实体类(Person)中的字段"name"和控制器(PersonController)中的方法 updatePersonList 为例,实现参数的校验功能. 2 注解示例 - 参数校验 老规矩,首先给出项目结构图: 在给出代码之前, 咱们先明确参数校验的步骤: 导入参数校验的 jar 包: 在实体上配置需要校验的属性: 在控制器的方法中用注解 @V

史上最简单的带流控功能的http server

s.py import time import SimpleHTTPServer import SocketServer BYTES_PER_SECOND=160*1024 class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): """Serve a GET request.""" f = self.send_head() i

史上最简单的软件破解——5行脚本代码完美破解99%的过期软件

如果你看到了这篇博文,绝对保证不虚此行.仅仅5行脚本代码,即可破解99%的过期软件. 这件事的背景:最近在找了一些学习资料,其中有Rational Rose画的图,好久没用过它了.今天安装好,导入许可文件,结果问题出现了,提示没有激活.怎么回事??仔细一看,原来许可文件到2013年12月份就过期了(乌鸦飘过...) 在网上找了半天也没有找到一个新的许可文件,结果一狠心,手动改了一下日期,再启动,ok了,把时间再改回来.本来事儿到这儿就完了.但是结果光今天一天就手动改了好几次系统时间,这就太让人无

Android 自定义控件打造史上最简单的侧滑菜单

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39185641 ,本文出自[张鸿洋的博客] 侧滑菜单在很多应用中都会见到,最近QQ5.0侧滑还玩了点花样~~对于侧滑菜单,一般大家都会自定义ViewGroup,然后隐藏菜单栏,当手指滑动时,通过Scroller或者不断的改变leftMargin等实现:多少都有点复杂,完成以后还需要对滑动冲突等进行处理~~今天给大家带来一个简单的实现,史上最简单有点夸张,但是的确是我目前遇到过的最

史上最简单的 MyBatis 教程

1 前言 MyBatis 源于 Apache 的一个开源项目 iBatis,而 iBatis 一词则来源于"internet"和"abatis"的组合,2010年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为MyBatis ,2013年11月其又迁移到 Github.MyBatis 是一个基于 Java 的支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,相比于基于面向对象使用 HQL 语言的

史上最简单,一步集成侧滑(删除)菜单,高仿QQ、IOS。

重要的话 开头说,not for the RecyclerView or ListView, for the Any ViewGroup. 本控件不依赖任何父布局,不是针对 RecyclerView.ListView,而是任意的ViewGroup里的childView都可以使用侧滑(删除)菜单.支持任意ViewGroup.0耦合.史上最简单. 概述 本控件从撸出来在项目使用至今已经过去7个月,距离第一次将它push至github上,也已经2月+.(之前,我发表过一篇文章.传送门:http://b

Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现

本文首发于CSDN博客,转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8714621 人人客户端有一个特效还是挺吸引人的,在主界面手指向右滑动,就可以将菜单展示出来,而主界面会被隐藏大部分,但是仍有左侧的一小部分同菜单一起展示. 据说人人客户端的这个特效是从facebook客户端模仿来的,至于facebook是不是又从其它地方模仿来的就不得而知了.好,今天我们就一起来实现这个效果,总之我第一次看到这个特效是在人人客户端看到的,我

史上最简单的 SpringCloud 教程 | 终章

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. 目录(?)[+] 转载请标明出处: http://blog.csdn.net/forezp/article/details/70148833 本文出自方志朋的博客 错过了这一篇,你可能再也学不会 Spring Cloud 了!Spring Boot做为下一代 web 框架,Spring Cloud 作为最新最火的微服务的翘楚,你还有什么理由拒绝.赶快上船吧,老