SINTAXIS DE MODULA2. Bloque Identificador. END Identificador. [Prioridad] ; Lista_exportados ::= {Lista_importados ;} [Lista_exportados ;]

Documentos relacionados
Manual de turbo pascal

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

PASCAL. Repaso de Pascal Introducción a Python. Pascal. Pascal - introducción. Pascal Declaraciones: Variables. Pascal Declaraciones: Tipos 07/04/2015

Introducción a la Programación Ingenieria en Informática Junio 2008

Agenda. BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar.

Se guardan en archivos con extencion c y los cabezales con extension h

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Contenido de la Presentación

Enunciado de la tercera práctica de programación I

Turbo Pascal 7, FPS y sus herramientas de análisis de errores.

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

SENTENCIAS SECUENCIALES Y CONCURRENTES DE VHDL

Elementos de un programa en C

Instituto de Computación - Facultad de Ingeniería - Universidad de la República

Seminario de Actualización - Excel Avanzado y Macros. Visual Basic. Conceptos Básicos de Visual Basic para Aplicaciones

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

APENDICE CODIFICACION DE LAS ESTRUCTURAS BASICAS

UTN FRLP Ing. en Sistemas de Información Algoritmos y Estructura de Datos Trabajos Prácticos Curso 2010

Introducción Importaciones Declaración de variables Declaración de constantes Tipos de datos INTEGER CARDINAL REAL BOOLEAN CHAR BITSET String Otras

Elementos léxicos del lenguaje de programación Java

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

Conceptos básicos de programación. Arquitectura de Computadoras. Conceptos básicos de programación

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Sintaxis y Semántica del Lenguaje. Gramáticas

Estructuras de control

Estructuras de Control

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Tema 2. El lenguaje JAVA

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas

Uso avanzado de punteros

Agenda. Lenguaje FORTRAN. Actualizacion y nivelacion de conocimientos de computación. Fortran 77. DIA 2 (15 de julio): Lenguaje FORTRAN

Estructura de Datos y de la Información. Pilas y expresiones aritméticas

Lección 2 Introducción al lenguaje C

Índice general. Capítulo 1 Conceptos básicos. Capítulo 2 Controles básicos I. Pág. N. 1

Funciones y TriggersIntroducción, Ejemplos

UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

El problema de los Filósofos

Cómo nombrar variables ( 2&

PROGRAMACION CONCURRENTE Y DISTRIBUIDA. II.5 Sincronización basada en memoria compartida: Monitores

INICIACIÓN A LA PROGRAMACIÓN II

FUNDAMENTOS DE INFORMÁTICA

Semántica Denotacional

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

PROGRAMACION CONCURRENTE

Parte 4: Estructuras de Control

Guía práctica de estudio 05: Diagramas de flujo

Java para no Programadores

Introducción a la Programación en Visual Basic y su aplicación en Excel. M.I. Jaime Alfonso Reyes Cortés

Flujo del programa. Este flujo puede alterarse mediante: El ordenador ejecuta cada sentencia y va a la siguiente hasta el final del programa.

Shell Script Sistemas Operativos III - ITS EMT - CETP

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL.

Program Orden; Uses crt; Const n=100; Type vector= array[1..n] of integer; Var a,b : vector; prim, ulti,i, ne : integer; metodo : char;

Tema 3 - Modelado con HDL a nivel RTL

LENGUAJE. Tema 2 Elementos de un programa

EL PROCESO DE DISEÑO DEL SOFTWARE

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS

INTRODUCCIÓN AL LENGUAJE C++

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Aprender a programar con Turbo Pascal. Turbo pascal

Universidad Central Del Este U C E Facultad de Ciencias y Humanidades Escuela de Pedagogía Mención Informática

REFERENCIA DEL LENGUAJE

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Estructura de datos (arreglos) Vectores y Matrices

Programación en Pascal

Instrucciones de control

Curso Completo de Visual Basic 6.0

2. Se puede aplicar a la representación intermedia un optimizador de código independiente de la máquina.

Tema 4.- Pilas y Colas

TEMA 4. ESTRUCTURAS DE CONTROL

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Microprocesadores. Introducción al Lenguaje C - Parte III. Prof. Luis Araujo. Universidad de Los Andes

ALGORITMOS Y ESTRUCTURAS DE DATOS. Ejercicios Resueltos CUADERNILLO DE PRACTICA

6. Estructuras básicas de control 1. Pseudocódigo

Curso de Programación 1

PASCAL y TURBO PASCAL

LABORATORIO DE PROGRAMACIÓN II Problemas HOJA 1 RECURSIVIDAD

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

Por qué ExecuTrain? Por qué ExecuTrain? Modalidad de servicio

TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8.

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Introducción a la Programación en MATLAB

Fundamentos de programación

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Lenguajes de programación

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

scripting en praat sesión n.1 fundamentos de programación Universidad de Tokyo de Estudios Extranjeros

PRÁCTICA: LENGUAJE VHDL

Principios de Programación en Java

Estructura para la toma de decisiones

Introducción a Transact-SQL

Lenguaje de programación C. Introducción

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Transcripción:

METASIMBOLOS Utilizaremos la notación BNF (Backus-Naur Form) para definir las reglas sintáctivas que definen el lenguaje Modula-2. En esta notación se emplean los cinco metasimbolos siguientes: SINTAXIS DE MODULA2 = Metasimbolo de definición. El elemento a su izquierda se puede desarrollar segun el esquema de la derecha. x Metasimbolo de alternativa. Puede elegirse uno y sólo uno de los elementos separados por este metasimbolo. Metasimbolos de repetición. Los elementos incluidos dentro de ellos se pueden repetir cero o más veces. [ ] Metasimbolos de opción. Los elementos incluidos dentro de ellos pueden ser utilizados o no. ( ) Metasimbolos de agrupación. Agrupan los elementos incluidos en su interior. UNIDAD DE COMPILACIÓN Unidad_de_compilación ::= Módulo_programa Módulo_definición Módulo_implementación Módulo_programa ::= Módulo_definición ::= Módulo_implementación ::= Cabecera_módulo ::= Cabecera_módulo Identificador. Cabecera_definición {Definición_de_módulo} Identificador. IMPLEMENTATION Módulo_programa MODULE Identificador [Prioridad] ; Cabecera_definición ::= DEFINITION MODULE Identificador ; [Lista_exportados ;] Lista_importados ::= Lista_exportados ::= Prioridad ::= ::= [FROM Identificador] IMPORT Lista_de_identificadores EXPORT [QUALIFIED] Lista_de_identificadores Expresión_constante Parte_declarativa Parte_ejecutiva Definición_de_módulo ::= Declaración_de_constantes TYPE { Identificador [ = Esquema_de_tipo] ; } Declaración_de_variables Cabecera_subprograma DECLARACIONES Parte_declarativa ::= {Declaración} Declaración ::= Declaración_de_constantes Declaración_de_tipos Declaración_de_variables Declaración_subprograma Declaración_módulo Declaración_de_constantes ::= CONST {Asociación_constante ;} Asociación_constante ::= Identificador = Expresión_constante - 1 -

Declaración_de_tipos ::= TYPE {Definición_de_tipo ;} Definición_de_tipo ::= Identificador = Esquema_de_tipo Esquema_de_tipo ::= Tipo_simple Tipo_conjunto Tipo_formación Tipo_registro Tipo_puntero Tipo_subprograma Tipo_simple ::= Identificador_de_tipo Tipo_enumerado Tipo_subrango Tipo_enumerado ::= Tipo_subrango ::= Tipo_conjunto ::= Tipo_formación ::= Tipo_registro ::= (Lista_de_identificadores) [Identificador_de_tipo] [Expresión_constante.. Expresión_contante] SET OF Tipo_simple ARRAY Tipo_simple{,Tipo simple} OF Esquema_de_tipo RECORD Secuencia_de_listas_de_campos Secuencia_de_listas_de_campos ::= Lista_de_campos {; Lista_de_campos} Lista_de_campos ::= [Lista_de_identificadores : Esquema_de_tipo Parte_variante] Parte_variante ::= Variante ::= Tipo_puntero ::= Tipo_subprograma ::= CASE [Identificador] : Identificador_de_tipo OF Variante { Variante} [ELSE Secuencia_de_listas_de_campos] Lista_de_valores : Secuencia_de_listas_de_campos POINTER TO Esquema_de_tipo PROCEDURE [Lista_de_tipos_formales] Lista_de_tipos_formales ::=([[VAR] Tipo_formal{, [VAR] Tipo_formal}) [: Identificador_de_tipo] Declaración_de_variables ::= VAR {Lista_de_variables ;} Lista_de_variables ::= Lista_de_identificadores : Esquema_de_tipo Declaración_subprograma ::=Cabecera_subprograma ; Identificador ; Cabecera_subprograma ::= Parámetros_formales ::= Grupo_de_parámetros ::= Declaración_módulo ::= PROCEDURE Identificador [Parámetros_formales] ([Grupo_de_parámetros {; Grupo_de_parámetros}]) [: Identificador_de_tipo] [VAR] Lista_de_identificadores : Tipo_formal MODULE Identificador [Prioridad] ; [Lista_exportados ;] Identificador ; - 2 -

SENTENCIAS EJECUTABLES Parte ejecutiva ::= ::= Sentencia ::= Sentencia_de_asignación ::= [BEGIN ] Sentencia {; Sentencia} [Sentencia_de_asignación Sentencia_de_llamada_a_procedimiento Sentencia_IF Sentencia_CASE Sentencia_WHILE Sentencia_REPEAT Sentencia_LOOP Sentencia_FOR Sentencia_WITH Sentencia_RETURN Sentencia EXIT] Variable := Expresión Sentencia_de_llamada_a_procedimiento ::=(Identificador_de_procedimiento Variable) [Parametros_de_llamada] Sentencia_IF ::= Sentencia_CASE ::= Caso ::= Sentencia_WHILE ::= Sentencia_REPEAT ::= Sentencia_LOOP ::= Sentencia_FOR ::= Sentencia_WITH ::= Sentencia_RETURN ::= Sentencia_EXIT ::= IF Expresión THEN {ELSIF Expresión THEN } [ELSE ] CASE Expresión OF Caso { Caso} [ELSE ] Lista_de_valores : WHILE Expresión DO Secuencia_de sentencias REPEAT UNTIL Expresión LOOP FOR Identificador_de_variable := Expresión TO Expresión [BY Expresión_constante] DO WITH Variable DO RETURN [Expresión] EXIT EXPRESIONES - 3 -

Lista_de_valores ::= Valores ::= Expresión_contante ::= Expresión_constante_simple ::= Término_constante ::= Valores {, Valores} Expresión_constante [.. Expresión_constante] Expresión_constante_simple [Operador_comparador Expresión_constante_simple] [+ -] Término_constante {Operador_sumador Término_contante} Factor_constante {Operador_multiplicador Factor_constante} Factor_constante ::= Identificador constante Número Ristra Conjunto (Expresión constante) NOT Factor_constante Carácter_en_octal Parámetros_de_llamada ::= Lista_de_expresiones ::= Expresión ::= Expresión_simple ::= Término ::= ([Lista de expresiones]) Expresión {, Expresión} Expresión_simple [Operador_comparador Expresión_simple] [+ -] Término {Operador_sumador Término} Factor {Operador_multiplicador Término} Factor ::= Variable Identificador_de_procedimiento Identificador_de_función Identificador_de_constante Número Ristra Conjunto (Expresión) NOT Factor Carácter_en_octal Llamada_a_función Llamada_a_función ::= Operador_comparador ::= Operador_sumador ::= Operador_multiplicador ::= ELEMENTOS BÁSICOS Tipo_formal ::= (Identificador_de_función Variable) [Parámetros_de_llamada] = <> # < > <= > >= IN + - OR * / DIV MOD & AND [ARRAY OF] Identificador_de_tipo Variable ::= (Identificador_de_variable Identificador_de campo) {.Identificador_de_campo [Lista_de_expresiones] ^} Conjunto ::= Lista_de_elementos ::= [Identificador_de_tipo] {Lista_de_elementos} [Elementos {, Elementos}] - 4 -

Elementos ::= Ristra ::= Número ::= Expresión_constante[.. Expresión_constante] {Carácter} {Carácter} Número_entero Número_real Número_entero ::= dígito {dígito} dígito_octal {dígito_octal}b dígito_hexadecimal {digito_hexadecimal}h dígito_hexadecimal ::= dígito A B C D E F dígito ::= dígito_octal 8 9 dígito_octal ::= 0 1 2 3 4 5 6 7 Número_real ::= escala ::= Carácter_en_octal ::= Lista_de_identificadores ::= Identificador_de_XXXX ::= Identificador ::= dígito {dígito}. {digito} [escala] E [+ -] dígito {dígito} dígito_octal{digito_octal}c Identificador {, Identificador} Identificador {. Identificador} letra {letra dígito} letra ::= 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 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 - 5 -