Tema: Compiladores
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/06/2005, 00:48
Avatar de Jorgemen
Jorgemen
 
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años, 10 meses
Puntos: 1
Aqui va otro ejemplo, valida que las variables ya sean por valor o referencia empiecen siempre con una letra y que los sigueentes sean números, _ , o letras; como esta echo con clases podría reutilizarse el método verificar por ser este el mismo para ambos, solo cambiaría en si el diagrama de estados por ente el método mover
Código PHP:
<?php 
class AFN_cadena
{
    var 
$actual;//POSICION del arreglo que se esta utilizando
    
function mover($s,$c)
    {
        if(
$s==1)
        {
            if((
97<=ord($c))and(ord($c)<=122))        
                
$s=2;
            else
                
$s=3;
        }
        elseif(
$s==2)
        {
            if((
97<=ord($c))and(ord($c)<=122)or((48<=ord($c))and(ord($c)<=57))or($c=="_"))        
                
$s=2;
            else                    
                
$s=3;                        
        }
        return 
$s;
    }
    function 
verificar($cadena)
    {
        
$lon=strlen($cadena);
        
$s=1;            //inicializo el estado s en el primer estado que es 1
        
$c=$cadena[0];     //saca el primer elemento del número
        
$this->actual=0;
        
$co="";
        while ((
$co<>$cadena)and($s<>6))
        {
            
$co=$co.$c;
            
$s=$this->mover($s,$c);
            
$this->actual++;
            if (
$this->actual<$lon)
            {
                
$c=$cadena[$this->actual];
            }
        }
        if(
$s==2)
            return 
true;
        else
            return 
false;
    }
}
// fin de clase
$cadena=$_POST["edCadena"];
$afn=new AFN_cadena;
if(
$afn->verificar($cadena))
    echo 
"esta bien";
else
    echo 
"esta mal";