Compilacion Perl

19
Camilo Gallego Ortiz Julian Alberto Restrepo Aguirre

Transcript of Compilacion Perl

Page 1: Compilacion Perl

Camilo Gallego OrtizJulian Alberto Restrepo Aguirre

Page 2: Compilacion Perl

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

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

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

Identificadores Variables Escalares $ Scalars

Listas @ Arrays

Hashes % Hashes

Identificadores ConstantesPerl implemente un conversar de datos a bits

ANALISIS LEXICOGRAFICO

Page 6: Compilacion Perl

abs

chmod

chop

chown

defined

delete

die

eof

exit

exp

fileno

fork

hex

Int

lc

oct

reverse

sex

rindex

sprintf

substr

tr/

print

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

->

++

--

**

!

~

>

=~

!~

*

/

%

x

+

-

.

<<

>>

<

>

<=

>=

lt

gt

le

ge

==

!=

<=>

eq

ne

cmp

&

|

^

&&

||

..

?:

=

+=

-=

*=

,

=>

not

and

or

xor

ANALISIS LEXICOGRAFICO

Page 8: Compilacion Perl

$

%

@

;

{

}

[

]

#

#!

\n

ANALISIS LEXICOGRAFICO

Page 9: Compilacion Perl

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

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

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

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

[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

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

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

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

Ejemplo

$a=-($b+$c)

ANALISIS SINTACTICO

Page 18: Compilacion Perl

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