miércoles, 18 de agosto de 2010

 METALENGUAJE 
BNF
________

La notación BNF se usa para describir sintácticamente lenguajes de programación.

La definición formal de un LP se conoce como gramática.

Una gramática se compone de un conjunto de reglas que definen palabras y unidades sintácticas.

Una gramatica formal es una que usa una notación definida (o metalenguaje) de manera escrita).

Cuando se considera una estructura de una oración en Español, se le describe por lo general como una secuencia de categorías:

sujeto | verbo | predicado

Podemos decir que una oración puede ser declarativa o interrogativa, esto se denota:

< oración > ::= < declarativa > | < interrogativa >

____________________


donde "::=" significa "se define cómo" y "|" significa "o" ; comparándolo con el lenguaje usado en las gramáticas formales, las palabras encerradas entre <palabra>  deben ser definidas; 

"::=" equivale a "->" y "|" tiene el mismo significado. 

en nuestro metalenguaje:
<oración> ::= <declarativa> | <interrogativa>
<declarativa> ::= <sujeto> <verbo> <complemento>
<sujeto> ::= <artículo> <nombre>
-
<interrogativa> ::= ¿ <verbo> <sujeto> <predicado> 


Esta notación específica se conoce como BNF (Backus Naur Form) desarrollada por John Backus alrededor de 1960. 
_____________



Para expresar repetición se usa la recursividad, por ejemplo:

<entero> ::= <entero> <dígito> | <dígito>

define a un entero como una secuencia de dígitos, con a lo menos un dígito.

A pesar de su estructura sencilla, BNF sirve para definir casi todos los lenguajes de programación.

____________________


Notación BNF extendida: Las extensiones siguientes permiten realizar descripciones más fáciles de los lenguajes:

  
      Sintaxis   
      Significado
     ::= 
      se define como 
     t' 
      el símbolo terminal t
     <nt> 
      el símbolo no terminal nt 
     (...)
     usado para agrupar  
     *
    cero o más repeticiones del elemento anterior 
     +
     una o más repeticiones del elemento anterior 
     [...] 
     elemento discrecional 
      | 
      alternativa de varias formas sintácticas válidas




_____________________


Diagramas sintácticos

Los diagramas sintácticos son una forma gráfica de expresar la BNF extendida. Cada regla está representada por un camino que va desde la entrada ubicada a la izquierda, hasta la salida, ubicada a la derecha. Cualquier trayecto desde la entrada a la salida representa un string generado por esa regla.
Las categorías sintácticas (no-terminales) se representan por rectángulos y los símbolos terminales por círculos u óvalos. Ejemplo:
Entero


________________________



No hay comentarios:

Publicar un comentario