Está en la página 1de 11

ANALIZADOR LÉXICO DE LENGUAJE PHP

Inicio: <?php

Fin: ?>

Símbolos especiales: “,” ,”;” ,”.”, “:” ,”(”,”)”,”{”, “}”, “[”, “]”, “&”,”=”

OperadorAritmetico: ( "+" | "-" | "*" | "/" | "%" | "**" ) Oparitmetico

OperadorCombinadoArt: ( "+=" | "-=" | "*=" | "/=" | "%=" | "**=" ) Opcomart

/* OperadorCombinadoCad */

( ".=" ) return Opcomcad;

/* OperadorComparacion */

( "==" | "===" | "!=" | "<>" | "!==" | "<" | ">" | "<=" | ">=" | "<=>" ) return Opcomp

/* OperacionIncrementoDecremento */

( "++" | "--" ) return Opic

/* OperadoresLogicos */

( "and" | "or" | "xor" | "&&" | "||" ) return Oplog

/* OperadoresLogicoNot */

( "!" ) return Oplnot

/* OperadorAsignacionArray */

( "=>" ) return Oparray

/* Palabra reservada If */

( "if" ) return If

( "else" ) return Else

( "do" ) return Do
( "while" ) return While

( "endwhile" ) return Endwhile

( "for" ) return For

( "switch" ) return Switch

( "case" ) return Case

( "endswitch" ) return Endswitch

( "break" ) {lexeme=yytext(); return Break

( "continue" ) {lexeme=yytext(); return Continue;}

( "default" ) {lexeme=yytext(); return Default;}

( "echo" ) return Echo

( "global" ) return Global

( "static" ) return Static

( "const" ) return Const

( "print" ) return Print

( "function" ) return Function

( "return" ) return Return

( "null" ) return Null

( "class" ) return Class

( "public" ) return Public

( "protected" ) return Protected

( "private" ) return Private

( "new" ) return New

( "extends" ) return Extends

/* Cadena */

( "\""[^"\""]*"\"" ) return Cadena

/* Enteros */

( {D}+ ) return Entero


/* Real */

( {D}+"."{D}+ ) return Real

/* Identificador */

( (_|{L})({L}|{D}|_)* ) return Identificador

/*Comentarios*/

Comentario: ( ("#"|"//")(.)* )

ANALIZADOR SINTACTICO DEL LENGUAJE PHP

Gramáticas PHP
PROGRAMA:

Esta gramática contiene el inicio de programa, varios tipos de instrucciones donde llama a la
gramática BLOQUE la cual contiene mas sentencias y fin del programa.

PROGRAMA ::=

Inicio BLOQUE Fin|Inicio Fin;

Ejemplo:

<?php

BLOQUE

?>

BLOQUE:

La gramática BLOQUE deriva en otra gramática donde llama a EGLOBALES, SENTENCIAS,


FUNCIONES y LLAMADAFUNCION o CLASE.

EBLOQUE ::=

EGLOBALES|SENTENCIAS|FUNCIONES|LLAMADAFUNCION P_coma|CLASE

ELOCALES:

ELOCALES ::=

EELOCALES SELOCALES P_coma | TIPO TELOCALES P_coma

Esta gramática permite hacer asignaciones, por ejemplo:


$a = 3;
$a = $a + 5
$b = "Hola ";

BOLOCAL:

Esta gramática permite volver a llamar a ELOCALES, EGLOBALES, SENTENCIAS, FUNCIONES,


LLAMADAFUNCION para poder hacer uso de las mismas las veces que se requiera.

VARIABLE:

Esta gramática reconoce variables

VARIABLE ::=

Dolar Identificador

Ejemplo:

$var1;

$aux;

TIPO:

TIPO ::=

Global | STIPO

Ejemplo:

Global, public ,protected, private, static

CONSTANTE

Ejemplo
const CONSTANTE = 'Hola Mundo';
const OTRA_CONSTANTE = CONSTANTE.'; Adiós Mundo';
const ANIMALES = array ('perro', 'gato', 'pájaro');

SENTENCIAS
Ejemplo:
<?php
if ($a > $b) {
echo "a is bigger than b";
else {
echo "a is smaller than b";
}

while ($i <= 10):


echo $i;
$i++;
endwhile;
?>

SENTENCIA IF Y ELSE

Ejemplo:
<?php
if ($a > $b) {
echo "a es mayor que b";
} elseif ($a == $b) {
echo "a es igual que b";
} else {
echo "a es menor que b";
}
?>
SENTENCIA WHILE

Ejemplo:
while ($i <= 10) {
echo $i++;
}

Do While:
Gramática:
SDOWHILE ::=
Do Llave_a BLOCAL Break P_coma Llave_c While Parentesis_a
COMPARACION Parentesis_c P_coma|
Do Llave_a BLOCAL Llave_c While Parentesis_a COMPARACION
Parentesis_c P_coma
;
Ejemplos:
do {
BLOCAL
} while (COMPARACION);

For:
En lo realizado for(S1FOR;COMPARACION;S2FOR)
Gramática:
SFOR ::=
For Parentesis_a S1FOR P_coma COMPARACION P_coma S2FOR
Parentesis_c Llave_a BLOCAL Llave_c|
For Parentesis_a P_coma COMPARACION P_coma S2FOR Parentesis_c
Llave_a BLOCAL Llave_c|
For Parentesis_a P_coma P_coma S2FOR Parentesis_c Llave_a BLOCAL
Llave_c|
For Parentesis_a S1FOR P_coma COMPARACION P_coma Parentesis_c
Llave_a BLOCAL Llave_c|
For Parentesis_a S1FOR P_coma P_coma Parentesis_c Llave_a BLOCAL
Llave_c|
For Parentesis_a S1FOR P_coma P_coma S2FOR Parentesis_c Llave_a
BLOCAL Llave_c|
For Parentesis_a P_coma COMPARACION P_coma Parentesis_c Llave_a
BLOCAL Llave_c|
For Parentesis_a P_coma P_coma Parentesis_c Llave_a BLOCAL Llave_c
;
Ejemplos:
for ($i = 1; ; $i++)
for (; ; )
for ($i = 1, $j = 0; $i <= 10; $i++);

Switch:
Gramática:
SSWITCH ::=
Switch Parentesis_a VARIABLE Parentesis_c PSWITCH
;
Ejemplos:
switch (VARIABLE) {
BLOQUECASE
}

switch (VARIABLE):
BLOQUECASE
endswitch;

Bloques case:
Reconoce los bloques case que se encuentran dentro de los switch, incluyendo el bloque
default. Ejemplos:
case 0:
echo "i es igual a 0";
break;
case 1:
echo "i es igual a 1";
break;
case 2:
echo "i es igual a 2";
break;

Comparación:
Reconoce las comparaciones que se hacen, por ejemplo, en sentencias if en el lenguaje
php. Ejemplos:
($a >= $b)
($val < $op2)
($res = true)

FUNCIONES:
Reconoce la declaración de las funciones de 4 maneras diferentes, considerando si
llevan o no argumentos así como si devuelven un valor o no. Ejemplos:
static function Variable()
static function bar()
static function funcToCall()

FANONIMA:
Similar a las funciones, con la excepción de no llevar tipo. Ejemplos:
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
function foo()
function recursividad($a)

ARGUMENTOS
Reconoce los argumentos que van en las funciones tales como
$a
$arg_1, $arg_2, /* ..., */ $arg_n
$entrada
$tipo = "acidófilo", $sabor

DEVOLVER VALOR
Serían los valores que retornan las funciones tales como
return $valor_devuelto;
return $núm * $núm;
return $algunaref;

LLAMADA DE FUNCION
Gramatica:
LLAMADAFUNCION ::=
Identificador Parentesis_a PASARARG Parentesis_c |
Identificador Parentesis_a Parentesis_c
;
Ejemplo:
Llamada($n1, $n2, $operacion);
Llamada();

PASAR LOS ARGUMENTOS


Gramatica:
PASARARG ::=
PS1FOR PSARG | PS1FOR | Cadena
;
PSARG ::=
Coma PS1FOR |
Oparimetico PS1FOR
;
Ejemplo:
$n1, $n2, $operacion

CLASES
Gramatica:
CLASE ::=
Class Identificador Extends Identificador Llave_a ATRIBUTOS
METODOS Llave_c |
Class Identificador Llave_a ATRIBUTOS METODOS Llave_c |
Class Identificador Llave_a ATRIBUTOS Llave_c |
Class Identificador Extends Identificador Llave_a ATRIBUTOS Llave_c|
Class Identificador Llave_a METODOS Llave_c |
Class Identificador Extends Identificador Llave_a METODOS Llave_c
;
Ejemplo:
class IDENTIFICADOR {

static VARIABLE;
}

ATRIBUTOS
Gramatica:
ATRIBUTOS ::=
TIPO VARIABLE P_coma
;
Ejemplo:
static VARIABLE;
public VARIABLE;

METODOS
Gramatica:
METODOS ::=

;
static function Variable()
static function bar()
static function funcToCall()

También podría gustarte