Sei sulla pagina 1di 9

Diana Marcela Jiménez Cod.

902021

Jenny Priscilla Pérez Cod. 904042

BITACORA 4

Durante esta semana se trabajó en la inicialización y validación de datos,


lecturas de memoria para llevar el CH maquina a ejecución, asignación de
memoria principal y la memoria del núcleo del programa. En general validación
de parámetros.

Adjuntamos el código:

<?php function cargadorArchivos () { ?>

<h1>Cargar Ch programas </h1>

<form action="paso2.php" method="post" enctype="multipart/form-


data">

<input type="file" name="archivo" />

<input type="submit" />

</form>

<?php }

// Evalúa que no se metan números de memoria inválidos

function evaluarMemorias ($principal,$operativo) {

$error = FALSE;

if ($principal <= 0) {

echo "Error, la memoria no puede valer 0 <br />";

$error = TRUE;

if ($principal >= 99999) {

echo "La memoria principal es demasiado grande <br />";

$error = TRUE;

}
if ($operativo <= 0) {

echo "El núcleo del sistema operativo no puede ser menor o igual
a 0 <br />";

$error = TRUE;

if ($operativo >= $principal) {

echo "La memoria del núcleo del sistema no debe ser mayor que
la memoria principal <br />";

$error = TRUE;

return $error;

function puedeSerVariable($operadores,$linea,$renglon) {

$encontrado = false;

if ($linea != null){

foreach ($operadores as $posicion => $operador) {

if ($operador == $linea) {

$encontrado = true;

break;

else {

return "No hay ningun operador";

}
if ($encontrado) {

return "se encontró un nombre de variable inválido en la línea ".


$renglon;

else {

return;

function existeVariable($linea){

foreach($_SESSION['tmp_variables'] as $variable) {

if ($variable == $linea) {

return true;

return false;

function compilador($linea,$renglon) {

$encontrado = false; // se vuelve true si se encuentra los operadores de


abajo

//lista de opreadores

$operadores = array ( 'cargue',

'almacene',

'vaya',

'vayasi',
'nueva',

'etiqueta',

'lea',

'sume',

'reste',

'multiplique',

'divida',

'potencia',

'modulo',

'muestre',

'imprima',

'retorne');

// comentarios

if (strpos($linea,"//") != 0) {

//ERROR: comentario mal puesto

$error = "comentario mal puesto en la línea ".$renglon ;

//Correcto

elseif (strpos($linea,"//") == false) {

//dividir línea en espacios y ponerla en minúscula

$linea = explode(" ",trim(strtolower($linea)));

// evaluar que el primer término sea un operador

foreach ($operadores as $posicion => $operador) {


if ($operador == $linea[0]) {

$encontrado = true;

break;

// Se encontró un operador en la primera parte, en posición tendré


que operador está

if ($encontrado) {

// de un solo operador ************* LISTO CARGUE Y


ALMACENE *************

if ($posicion == 0 || $posicion == 1 || $posicion == 2) {

// verifico que en $linea[1] no haya ninguna variable

$error = puedeSerVariable($operadores,$linea[1],
$renglon);

if (!$error)

{ if ($linea[2] != null) {

$error = "Demasiados parámetros en la línea ".


$renglon;

else

return;

if ($posicion == 3) {

if ($linea[1] == null || $linea[2] == null) return "Muy


pocos parámetros en la línea $renglon";

else {

$error = puedeSerVariable($operadores,
$linea[1],$renglon);
if (!$error) {

$error = puedeSerVariable($operadores,
$linea[2],$renglon);

if (!$error)

return;

else

return $error;

else return $error;

/**** crear variable */

if ($posicion == 4) {

$error = puedeSerVariable($operadores,$linea[1],
$renglon);

if (!$error) {

if ($linea[2]!='c' && $linea[2]!='r' &&


$linea[2]!='i'){

return "la variable $linea[2] de la línea


$renglon no es un tipo válido";

if (!is_numeric($linea[3])) {

return "la variable $linea[3] de la línea


$renglon no es numérica";

if ($linea[4] != null) {
return "Demasiados parámetros en la
línea $renglon";

if(existeVariable($linea[1])) {

return "la variable $linea[1] ya existe";

$_SESSION['tmp_variables'][]=$linea[1];

else

return $error;

// etiqueta

if ($posicion == 5) {

if ($linea[1] == null || $linea[2] == null) return "Muy


pocos parámetros en la línea $renglon";

$error = puedeSerVariable($operadores,$linea[1],
$renglon);

if (!$error) {

if (!is_numeric($linea[2])) {

return "la variable $linea[2] de la línea


$renglon no es numérica";

else

if ($linea[2] <= 0) {

return "la variable $linea[2] de la línea


$renglon hace referencia a un valor negativo";

else return;
}

else return $error;

// lea

if ($posicion == 6) {

if ($linea[1] == null) return "Muy pocos parámetros


en la línea $renglon";

$error = puedeSerVariable($operadores,$linea[1],
$renglon);

if ($error) return $error;

/* debería observar si ya almacené la variable


************************************/

if ($posicion >= 7 && $posicion <= 14) {

if ($linea[1] == null) return "Muy pocos parámetros


en la línea $renglon";

if (!existeVariable($linea[1])) {

return "La variable $linea[1] de la línea


$renglon no existe";

else {

if ($linea[0]!="") {

$error = "El término ".$linea[0]." no es un operador


válido";

}
}

return $error;

function compilar($manejador) {

$total = "";

$renglon = 1; // renglon que se evalúa

$errores = array();// Array con los errores

$_SESSION['tmp_variables'] = array(); // temporal con las variables


existentes

while($linea = fgets ($manejador)){

if (strlen(compilador ($linea,$renglon)) > 0) {

$errores[] = compilador ($linea,$renglon);

$renglon++;

print_r($errores);

return $total;

?>

Potrebbero piacerti anche