Ebnf - Pascal

Páginas: 7 (1597 palabras) Publicado: 12 de septiembre de 2011
III.2 Gramática EBNF
Esta gramática es parte de la definición del lenguaje Pascal Jensen K. y N. Wirth [JENS75].
<programa>::= <encabezamiento del programa><bloque>.
<encabezamiento>::= program <identificador> (<identificador de archivo>
{, <identificador de archivo>)};
<identificador de archivo>::= <identificador><identificador>::= <letra> {<letra o dígito>}
<bloque>::= <parte de declaración de rótulos>
<parte de definición de constantes>
<parte de definición de tipos> <parte de declaración de variables>
<parte de declaración de procedimientos y funciones> <sentencias>
<parte de declaración de rótulos>::= <vacía> | label <rótulo>{,<rótulo>};
<rótulo>::= <entero sin signo>
<parte de definición de constantes>::= const <definición de constante>
{; <definición de constante>};
<definición de constante>::= <identificador>= <constante>
<constante>::= <número sin signo> | <signo><número sin signo> |
<identificador de constante> |<signo><identificador de constante> |
<cadena de caracteres>
<número sin signo>::= <entero sin signo> | <real sin signo>
<entero sin signo>::= <dígito> {<dígito>}
<real sin signo>::= <entero sin signo> . <dígito> {<dígito>} |
<entero sin signo> . <dígito> {<dígito>| E <factor de escala> |
<entero sin signo> E<factor de escala>
<factor de escala>::= <entero sin signo> | <signo><entero sin signo>
<signo>::= + | -
<identificador de constante>::= <identificador>
<cadena de caracteres>::= ’<carácter> {<carácter>}’
<parte de definición de tipos>::= <vacía> |
type <definición de tipo> {; <definición de tipo>};<definición de tipo>::= <identificador>= <tipo>
<tipo>::= <tipo simple> | <tipo estructurado> | <tipo puntero>
<tipo simple>::= <tipo escalar> | <tipo subrango> | <tipo identificador>
<tipo escalar>::= (<identificador>, {<identificador>})
<tipo subrango>::= <constante> .. <constante><tipo identificador>::= <identificador>
<tipo estructurado>::= <tipo estructurado no empaquetado> |
packed <tipo estructurado no empaquetado>
<tipo estructurado no empaquetado>::= <tipo arreglo> | <tipo registro> |
<tipo conjunto> | <tipo archivo>
<tipo arreglo>::= array [<tipo índice> {, <tipo índice>}] of
<tipocomponente>
<tipo índice>::= <tipo simple>
<tipo componente>::= <tipo>
<tipo registro>::= record <lista de campos> end
<lista de campos>::= <parte fija> | <parte fija>; <parte variable>|
<parte variable>
<parte fija>::= <sección de registro> {; <sección de registro>}
<sección de registro>::=<identificador de campo>
{, <identificador de campo>}:
<tipo> | <vacío>
<parte variable>::= case <campo de etiquetas> <identificador de tipo> of
<variante> {; <variante>}
<campo de etiquetas>::= <identificador del campo>: | <vacío>
<variante>::= <lista de rótulos del case>: (<lista de campos>) | <vacío><lista de rótulos del case>::= <rótulo del case> {, <rótulo del case>}
<rótulo del case>::= <constante>
<tipo conjunto>::= set of <tipo base>
<tipo base>::= <tipo simple>
<tipo archivo>::= file of <tipo>
<tipo puntero>::= <identificador de tipo>
<parte de declaración de variable>::= <vacía> |
var...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • pascal
  • pascal
  • Pascal
  • pascal
  • Pascal
  • pascal
  • Pascal
  • Pascal

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS