compilacion perl
TRANSCRIPT
![Page 1: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/1.jpg)
Camilo Gallego OrtizJulian Alberto Restrepo Aguirre
![Page 2: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/2.jpg)
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.
![Page 3: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/3.jpg)
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
![Page 4: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/4.jpg)
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.
![Page 5: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/5.jpg)
Identificadores Variables Escalares $ Scalars
Listas @ Arrays
Hashes % Hashes
Identificadores ConstantesPerl implemente un conversar de datos a bits
ANALISIS LEXICOGRAFICO
![Page 6: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/6.jpg)
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
![Page 7: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/7.jpg)
->
++
--
**
!
~
>
=~
!~
*
/
%
x
+
-
.
<<
>>
<
>
<=
>=
lt
gt
le
ge
==
!=
<=>
eq
ne
cmp
&
|
^
&&
||
..
…
?:
=
+=
-=
*=
,
=>
not
and
or
xor
ANALISIS LEXICOGRAFICO
![Page 8: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/8.jpg)
$
%
@
;
“
‘
{
}
[
]
#
#!
\n
ANALISIS LEXICOGRAFICO
![Page 9: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/9.jpg)
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.
![Page 10: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/10.jpg)
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
![Page 11: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/11.jpg)
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
![Page 12: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/12.jpg)
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
![Page 13: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/13.jpg)
[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.
![Page 14: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/14.jpg)
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.
![Page 15: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/15.jpg)
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
![Page 16: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/16.jpg)
ANALISIS SINTACTICO
1. Análisis Bottom-Up
2. Optimizador de arriba hacia abajo
3. Optimizador de Tirilla
4. Generación de código
![Page 17: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/17.jpg)
Ejemplo
$a=-($b+$c)
ANALISIS SINTACTICO
![Page 18: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/18.jpg)
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
![Page 19: Compilacion Perl](https://reader036.vdocuments.co/reader036/viewer/2022073118/55a78ada1a28ab306e8b45f2/html5/thumbnails/19.jpg)