Sei sulla pagina 1di 6

1.

Metalenguaje La metodologa que vamos a utilizar para solucionar problemas en los que participan los tipos de datos abstractos requiere de varios pasos que se mostrarn ms adelante. Sin embargo, uno de esos pasos se refiere al desarrollo de las operaciones en un lenguaje algortmico. Para ello se hace necesario establecer el patrn para la definicin del lenguaje que permita expresar algoritmos sin ambigedades y de forma correcta, sin presentar ninguna dependencia de implementacin. Esto permite centrar el trabajo en el puro diseo lgico del algoritmo y en sus caractersticas. En la definicin de lenguajes algortmicos, por lo general, se utilizan palabras reservadas y frases afines al castellano que permiten indicar el flujo de control. La notacin especifica un conjunto de reglas sintcticas y semnticas prcticas. Pressman (2002) define dichas reglas de la siguiente forma: La sintaxis nos dice cmo mostrar y combinar los smbolos. La sintaxis es comparable a las palabras en el lenguaje natural: es importante saber cmo se escriben y cmo combinarlas correctamente para formar una frase. Las reglas semnticas nos dicen lo que significa cada smbolo y cmo interpretarlo, tanto cuando aparece solo como cuando lo hace en combinacin con otros. Es comparable al significado del lenguaje natural (p.363). La definicin formal de la sintaxis de un lenguaje de programacin se conoce comnmente como gramtica. Una gramtica se compone de un conjunto de reglas (producciones) que definen a las palabras (elementos lxicos) y unidades sintcticas. Una gramtica formal es una que usa una notacin definida (o metalenguaje) de manera estricta. Cuando se considera la estructura de una oracin en espaol, se la describe por lo general como una secuencia de categoras: sujeto | verbo | complemento Podemos decir que una oracin puede ser una oracin declarativa o una oracin interrogativa, lo que denotamos: <oracin> ::= <declarativa> | <interrogativa> donde "::=" significa "se define cmo" y "|" significa "o"; comparndolo con el lenguaje usado en las gramticas formales, las palabras encerradas entre <palabra> son

categoras sintcticas o no terminales, es decir, deben ser definidas; "::=" equivale a ">" y "|" tiene el mismo significado. Esta notacin especfica se conoce como BNF (Backus Naus Form), desarrollada por John Backus alrededor de 1960 para la definicin de Algol. Notacin BNF extendida: Las extensiones siguientes permiten realizar descripciones ms fciles de los lenguajes: Se puede indicar un elemento optativo usando [...] Una seleccin de alternativas opcionales se puede hacer usando[ | ] { | } Una repeticin arbitraria se puede indicar con {...}* Un ejemplo en el metalenguaje que usaremos se muestra en la siguiente tabla 1: <oracin> ::= <declarativa> | <interrogativa> <declarativa> ::= <sujeto> <verbo> <complemento> <sujeto> ::= <artculo> <nombre> <verbo>::= {<letra>} <complemento>::={<artculos> <letra>| <complemento>} <interrogativa> ::= <verbo> <sujeto> <predicado> ? <predicado>::={<artculos> <letra> | <predicado> } <articulo>::= {<letra>} <letra>::= <mayscula | <minscula> <mayscula> ::= A|B |C |D |E |F |G |H |I |J |K |L |M |N | |O |P |Q |R |S |T |U|V|W |X |Y |Z <minscula> ::= a|b |c |d |e |f |g |h |i |j |k |l |m |n | |o |p |q |r |s |t |u |v |w |x |y |z Tabla 1 Metalenguaje

2. Definiciones y reglas de sintaxis bsicas del metalenguaje para implementar las operaciones. Tabla 2. Definiciones y reglas de sintaxis
<patrn-operacin> ::= <encabezado-operacin> <patrn-bloque>. <encabezado-operacin>::=<tipo-operacin><identificador> [{<parmetros>}][: {<tipo>}] <tipo-operacin> ::= funcin | procedimiento <identificador> ::= <letra> {[ _ ] <letra-o-dgito-o-especial>} <parmetros> ::= <identificador> : <tipo> <tipo> :: = <tipo_escalar> | <tipo_subrango> | <tipo_arreglo> | <tipo_abstracto> | ^ <identificador> <tipo_escalar> ::= {<entero> } | <real> | <lgico>| <carcter> <tipo_subrango> ::= {<dgito>} .. {<dgito>} <tipo_arreglo> ::= arreglo<tipo_subrango> de <tipo> <patrn-bloque> ::= principio {<proposicin>} fin <proposicin> ::= {<asignacin> ,}| <iterativa> | <seleccin> | <lectura-escritura> <asignacin> ::= <identificador> := <expresin> | <identificador> := <identificador> <iterativa> ::= <iterar_para> | <iterar_mientras> | <iterar_repetir> <iterar_para> ::= para <identificador> <tipo_subrango> hasta tipo_subrango <iterar_mientras> ::= mientras <expresin> hacer <iterar_repetir> ::= repetir <bloque> hasta <expresin> <seleccin> ::= <sentencia si> | <sentencia si-sino> | <sentencia caso> <sentencia si> ::= si <expresin> entonces <patrn_bloque> <sentencia si-sino> ::= si <expresin> entonces <patrn_bloque> sino [<expresin> entonces] <patrn_bloque> <sentencia caso> ::= caso <expresin> de <identificador> <patrn_bloque> <lectura-escritura> ::= leer <identificador> | escribir <identificador> <expresin> ::= not <relacin> | <relacin> {and <relacin> | or <relacin> | nand <relacin> | xor <relacin> } <relacin> ::= <expresin-simple> [<operador-relacional> <expresin-simple>] <expresin-simple> ::= <expresin-simple> [<operador-unario>] <trmino> {<operadoraritmtico> <trmino>} | <tipo_subrango> <trmino> ::= <factor> {<operador-multiplicacin> <factor>} <factor> ::= <literal> | <expresin> | <identificador> <literal> ::= {<dgito>} | {<dgito> , <digito>} | [<operador-unario>] {<dgito>} | {<letra>}

<operador-relacional> ::= > | < | = | >= | <= <operador-unario> ::= + | - | not <operador-aritmtico> ::= + | - | * | / | % <objeto> ::= <identificador> <tipo> <identificador> ::= <letra> {[ _ ] <letra-o-dgito-o-especial>} <letra-o-digito-o-especial> ::= <letra> | <dgito> | <especial> <texto> ::= <letra> [<texto>] | <dgito> [<texto>] | <especial> [<texto>] <entero> ::= [+| - ] <digito> <lgico> ::= verdad | falso <carcter> ::= <letra> | <especial> <especial> ::= & | | % | ( | ) | | ? | : | ; | . | _ | | ! | [ | ] | { | } <letra> ::= <mayscula> | <minscula> <mayscula> ::= A |B |C |D |E |F |G |H |I |J |K |L |M |N | |O |P |Q |R |S |T |U |V |W |X |Y |Z <minscula> ::= a |b |c |d |e |f |g |h |i |j |k |l |m |n | |o |p |q |r |s |t |u |v |w |x |y |z <dgito> ::= 0|1 |2 |3|4 |5 |6 |7|8 |9

A continuacin se describir de manera informal, el significado de las construcciones sintcticas presentes en ste patrn de especificacin, definido para el seudolenguaje a utilizar. Para ello se explicarn slo los componentes lxicos ms significantes, dentro del lenguaje. Identificador: Se utilizan para nombrar una variable, atributo, objeto, nombre de operacin <identificador> ::= <letra> {[ _ ] <letra-o-dgito-o-especial>} Esto significa: Un identificador se define con una letra seguida opcionalmente de una letra, dgito o carcter especial. Palabras reservadas: Son aquellas que se especifican dentro del patrn en negritas:

Tabla 3 Palabras reservadas Clase Atributos principio fin caso de para-hasta Not ^(puntero) And mtodos arreglo-de mientrashacer Or procedimiento si entonces repetir-hasta Xor Funcin si entonces sino Pblica Nand

patrn_bloque : Permite incluir un grupo de proposiciones (expresiones, intrucciones) dentro de un cuerpo enmarcado con las palabras reservadas principio y fin. <patrn_bloque> ::=principio {<proposicin>} fin proposicin: Representan expresiones o instrucciones del lenguaje. <proposicin> ::= {<asignacin> ,}| <iterativa> | <seleccin> | <lectura-escritura> Proposicin de asignacin. <asignacin> ::= <identificador> := <expresin> | identificador> := <identificador> Proposiciones Iterativas. <iterativa> ::= <iterar_para> | <iterar_mientras> | <iterar_repetir> Proposicion Iterar-para. <iterar_para> ::= para <identificador> <tipo_subrango> hasta tipo_subrango Proposicin Iterar-mientras <iterar_mientras> ::= mientras <expresin> hacer Proposicin iterar-repetir <iterar_repetir> ::= repetir <bloque> hasta <expresin> Proposicin seleccin. <seleccin> ::= <sentencia si> | <sentencia si-sino> | <sentencia caso> Sentencia si.

<sentencia si> ::= si <expresin> entonces <Patrn-bloque> Sentencia si-sino <sentencia si-sino> ::= si <expresin> entonces <Patrn-bloque> sino <expresin> entonces <Patrn-bloque> sentencia caso. <sentencia caso> ::= caso <expresin> de <identificador> <Patrn-bloque> sentencia lectura-escritura. <lectura-escritura> ::= leer <identificador> | escribir <identificador> Parmetro: Permite indicar la listas de parmetros formales la lista de parmetros actuales para las procedimientos o funciones. Es opcional. Parmetros de las operaciones: Permite indicar la lista de parmetros formales de la operacin. Su valor es una lista que contiene para cada parmetro, el nombre, el tipo y el modo de transmisin. tipo : Permite indicar el nombre del tipo retornado por la operacin o mtodo, en el caso de que sea una funcin. Su uso es opcional.

Potrebbero piacerti anche