Compilacion Perl

Post on 16-Jul-2015

1.252 views 6 download

Transcript of Compilacion Perl

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/

print

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