Camilo Gallego OrtizJulian Alberto Restrepo Aguirre
Lenguaje de programación diseñado por Larry Wall en 1987 que toma características del
lenguaje C, del lenguaje interpretado shell (sh), AWK, sed, Lisp y, en un grado inferior, de
muchos otros lenguajes de programación.Estructuralmente, Perl está basado en un estilo de
bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de las limitaciones de los otros lenguajes de script.
ParadigmaMultiparadigma, Funcional, Imperativa, Orientado a Objetos (basado en clases), Reflexiva
Apareció en 1987
Diseñado y Desarrollado por Larry Wall
Última versión estable 5.14.0 (14 de mayo de 2011)
Última versión en prueba 5.15.0 (15 de mayo de 2011)
Tipo de DatoDinámico
ImplementacionesPerl, mod_perl, embperl
DialectosPerl 5, Perl 6
Influido porAWK, Smalltalk 80, Lisp, C, C++, Pascal, sed, Unix shell
Ha influido aPython, PHP, Ruby, ECMAScript, LPC, Windows PowerShell, JavaScript, Falcon
Sistema OperativoMultiplataforma, muchos (más de 100)
Licencia de softwareGPL, Licencia Artística
Web: www.perl.org
Esta fase se encarga de verificar si todas las cadenas pertenecen o no al lenguaje. Es decir
realiza un análisis símbolo por símbolo indicando el token por cada uno de los
elementos reconocidos o el error en caso de no reconocer. Este análisis no logra detectar
muchos errores por su característica.
Identificadores Variables Escalares $ Scalars
Listas @ Arrays
Hashes % Hashes
Identificadores ConstantesPerl implemente un conversar de datos a bits
ANALISIS LEXICOGRAFICO
abs
chmod
chop
chown
defined
delete
die
eof
exit
exp
fileno
fork
hex
Int
lc
oct
reverse
sex
rindex
sprintf
substr
tr/
uc
ucfirst
y/
qq/STRING/
ord
index
q/STRING/
length
crypt
chr
m
post
s/
study
log
sin
each
ANALISIS LEXICOGRAFICO
Palabras Reservadas
->
++
--
**
!
~
>
=~
!~
*
/
%
x
+
-
.
<<
>>
<
>
<=
>=
lt
gt
le
ge
==
!=
<=>
eq
ne
cmp
&
|
^
&&
||
..
…
?:
=
+=
-=
*=
,
=>
not
and
or
xor
ANALISIS LEXICOGRAFICO
$
%
@
;
“
‘
{
}
[
]
#
#!
\n
ANALISIS LEXICOGRAFICO
El análisis sintáctico convierte el texto de entrada en otras estructuras (comúnmente árboles), que son más útiles para el posterior análisis y capturan la jerarquía implícita de la entrada. Un analizador
léxico crea tokens de una secuencia de caracteres de entrada y son estos tokens los que son procesados
por el analizador sintáctico para construir la estructura de datos, por ejemplo un árbol de análisis
o árboles de sintaxis abstracta.
Todo programa en Perl debe comenzar en la primera línea con:
#! /usr/bin/perl
Esta parte es fundamental si se quiere correr Perl en su sistema
ANALISIS SINTACTICO
Perl tiene varias clases de estructuras de control.
CONTROL DE CICLOS
do, while, for, foreach, continue
CONTROL DE SENTENCIAS
if, else, unless, until, elsif
CONTROL DE FLUJO
goto, elsif, next, last, redo, return
ANALISIS SINTACTICOEstructura del Programa
Tiene estructuras de control orientado al bloque, similar a los lenguajes de programación C y Java
CONDICIONES están rodeadas por paréntesis ( )
BLOQUES rodeados por llaves { }
EXPRESIONES OPCIONALES por corchetes cuadrados []
ETIQUETAS deben llevar al final dos puntos ':';
ANALISIS SINTACTICOEstructura del Programa
[ETIQUETA] while CONDICION BLOQUE [continue BLOQUE ]
ANALISIS SINTACTICOEstructura del Programa
[ETIQUETA] until CONDICION BLOQUE [continue BLOQUE ]
[ETIQUETA] foreach [VARIABLE] (LISTA) BLOQUE [continue BLOQUE]
[ETIQUETA] for (EXPRESION_1;EXPRESION_2;EXPRESION_3) BLOQUE
if CONDICION BLOQUE [[elsif BLOQUE] else BLOQUE] unless CONDICION BLOQUE [else BLOQUE]
Donde EXPRESION_1 es la expresión inicial, EXPRESION_2 la condición y la EXPRESION_3 es la expresión incremental.
ANALISIS SINTACTICOEstructura del Programa
Cuando se controla a una sola declaración, los modificadores de declaración proporcionan una sintaxis más ligera
DECLARACIÓN if CONDICIÓN
DECLARACIÓN unless CONDICIÓN
DECLARACIÓN while CONDICIÓN
DECLARACIÓN until CONDICIÓN
DECLARACIÓN foreach LISTA
Donde DECLARACIÓN es una instrucción, llamada a alguna función, etc. y en estos casos la CONDICIÓN en vez de estar rodeado por paréntesis requiere un punto y coma al final de la condición.
ANALISIS SINTACTICOEstructura del Programa
Los operadores lógicos se utilizan para construir la CONDICIÓN en una estructura de control
EXPRESION1 and EXPRESION2;
EXPRESION1 or EXPRESION2;
EXPRESION1 && EXPRESION2;
EXPRESION1 || EXPRESION2;
EXPRESION1 eq EXPRESION2;
EXPRESION1 == EXPRESION2;
Donde EXPRESION1 y EXPRESION2 son variables a comparar o “expresiones” booleanas(verdadero o falso) según el contexto en que se use
ANALISIS SINTACTICO
1. Análisis Bottom-Up
2. Optimizador de arriba hacia abajo
3. Optimizador de Tirilla
4. Generación de código
Ejemplo
$a=-($b+$c)
ANALISIS SINTACTICO
Perl se ahorra el desarrollo de este análisis ya que no trabaja con tipos definidos de
variables, sino que trabaja con bits directamente, esto es posible a través de
marshalling