首页 > 其他 > 详细

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

时间:2014-12-15 08:54:46      阅读:249      评论:0      收藏:0      [点我收藏+]
<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 

  

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

原文:http://www.cnblogs.com/Lancoder/p/4164075.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!