Que tal? en la materia de Traductores y Compiladores necesito crear un Pseudo Interprete basico on-line no se si el mejor lenguaje es PHP o me recomiendan algun otro? No soy experto en PHP y ya me tope con mi primer problema, este pseudo lenguaje acepta operaciones basicas
(como: Mover, Asignación, Sumar, restar, Multiplicar, Dividir, Elevar al cuadrado, Sacar raiz cuadrada, Comparar por igual, Comparar por diferente, Comparar por mayor, Comparar por menor, Extraer elemento i de un vector, Poner un valor en la posición i de un vector, Incremente i y pruebe, Lectura desde teclado, Impresión a pantalla, stop y Definición zonas)de acuerdo a una sintaxis definida, mi problema se da especificamente en la accion de ingresar un dato por teclado ya que no se como traducirlo a PHP para que funcione, se me ocurre un formulario con un campo... pero el problema es que inicialmente lo habia pensado en traducir todo el codigo en el psudo lenguaje a PHP y grabarlo en un archivo para que luego este sea ejecutado por el interprete PHP, pero al grabarlo en un solo archivo PHP como procesaria el formulario? Seria mejor crear 2 archivos? alguna funcion?. Me dan alguna idea para resolver este problema? o alguna guia?
Al momento tengo es codigo:
Código PHP:
<?
$archivo = file("prog.txt");
$lineas = count($archivo);
$contenido = "<?\n";
for($i=0; $i < $lineas; $i++)
{
$codigo[] = explode ("\t", $archivo[$i]);
$operacion = $codigo[$i][1][0].$codigo[$i][1][1];
$op1 = $codigo[$i][1][2].$codigo[$i][1][3].$codigo[$i][1][4];
$op2 = $codigo[$i][1][5].$codigo[$i][1][6].$codigo[$i][1][7];
$op3 = $codigo[$i][1][8].$codigo[$i][1][9].$codigo[$i][1][10];
if (eregi("^[+]", $operacion))
{
echo "Operador +";
switch ($operacion[1])
{
case 0:
$contenido .= '$var_' . "$op3=$op1;\n";
print " <i>Mover</i>";
break;
case 1:
print " <i>Sumar</i>";
break;
case 2:
print " <i>Multiplicar</i>";
break;
case 3:
print " <i>Elevar al cuadrado</i>";
break;
case 4:
print " <i>Comparar por igual</i>";
break;
case 5:
print " <i>Comparar por mayor</i>";
break;
case 6:
print " <i>Extraer elemento i de un vector</i>";
break;
case 7:
print " <i>Incremente i y pruebe</i>";
break;
case 8:
$contenido .= "?><form action=\"\"><input type=text name=\"\$var_$op3\"></input> </form>\n<?";
print " <i>Lectura desde teclado</i>";
break;
case 9:
print " <i>Stop</i>";
break;
default:
print " <i>ERROR</i>";
}
}
elseif (eregi("^[-]", $operacion))
{
echo "Operador -";
switch ($operacion[1])
{
case 0:
$contenido .= '$var_' . $codigo[$i][0] . "=$op1$op2$op3;\n";
print " <i>Asignar</i>";
break;
case 1:
print " <i>Restar</i>";
break;
case 2:
print " <i>Dividir</i>";
break;
case 3:
print " <i>Sacar raiz cuadrada</i>";
break;
case 4:
print " <i>Comparar por diferente</i>";
break;
case 5:
print " <i>Comparar por menor</i>";
break;
case 6:
print " <i>Poner un valor en la posicion i de un vector</i>";
break;
case 7:
print " <i>No definido</i>";
break;
case 8:
print " <i>Impresion en pantalla</i>";
break;
case 9:
print " <i>Definicion de zonas</i>";
break;
default:
print " <i>ERROR</i>";
}
}
else
{
echo "ERROR OPERADOR NO VALIDO";
}
echo "<br>";
}
$contenido .= "?>\n";
$fp = fopen("traycomp.php","w+");
fwrite($fp, $contenido);
fclose($fp);
?>
Subi estos dos archivos para la mejor comprension:
Tabla de como funciona el psuedo lenguaje:
http://descargas.portalquito.com/tablapsc.doc
Programa ejemplo escrito es el pseudo lenguaje:
http://descargas.portalquito.com/prog.txt
Espero su ayuda. Gracias!