PROCESADORES DEL LENGUAJES Ev. Alternativa
|
|
- Manuel Silva Suárez
- hace 5 años
- Vistas:
Transcripción
1 PROCESADORES DEL LENGUAJES Ev. Alternativa NOMBRE: GRUPO: EL LENGUAJE LVECT LVECT es un lenguaje de programación secuencial. El programa LVECT consta de declaraciones de variables y secuencia de asignaciones. Las variables en LVECT pueden ser numéricas o vectores. Las variables numéricas almacenan números naturales. Los vectores se declaran con un rango de índices naturales y almacenan números naturales en sus componentes. Toda variable o componente de vector se considera inicializado a cero tras su declaración. Las expresiones de LVECT son de tipo natural y se definen recursivamente desde números naturales, variables numéricas, componentes de vectores, sumas, restas y multiplicaciones de expresiones y expresiones con paréntesis. A continuación se muestra un programa LVECT. PROGRAMA VARIABLES x,y,v[2..5],w[1..3],z ASIGNACIONES v[2] = 1 x = 1 v[3] = x x = v[2] v[2] = 1 w[x] = x+1 v[w[x+1]+3] = 2*(v[3]+v[2]) w[v[2]] = 3 SE PIDE: Analizador sintáctico para el lenguaje LVECT. Descripciones a entregar: [DISEÑO ABSTRACTO] (2 puntos) Gramática (independiente de tecnología) para describir la sintaxis del programa LVECT. [IMPLEMENTACIÓN] Parser Antlr implementando la gramática propuesta en el diseño abstracto.
2 [DISEÑO ABSTRACTO] programa : PROGRAMA variables asignaciones variables : VARIABLES vars PUNTOYCOMA asignaciones : ASIGNACIONES (asignacion)* vars : variable COMA vars variable variable : IDENT CORCHETEABIERTO NUMERO RANGO NUMERO CORCHETECERRADO IDENT asignacion : var_expresion ASIG expresion PUNTOYCOMA expresion : expresion1 (MAS MENOS POR) expresion expresion1 expresion1 : NUMERO var_expresion PARENTESISABIERTO expresion PARENTESISCERRADO var_expresion : IDENT CORCHETEABIERTO expresion CORCHETECERRADO IDENT [IMPLEMENTACIÓN] class AnasintLVECT extends Parser programa : PROGRAMA variables asignaciones variables : VARIABLES vars PUNTOYCOMA asignaciones : ASIGNACIONES (asignacion)* vars : (variable COMA) => variable COMA vars variable variable : (IDENT CORCHETEABIERTO)=> IDENT CORCHETEABIERTO NUMERO RANGO NUMERO CORCHETECERRADO IDENT asignacion : var_expresion ASIG expresion PUNTOYCOMA expresion : (expresion1 (MAS MENOS POR))=> expresion1 (MAS MENOS POR) expresion expresion1 expresion1 : NUMERO var_expresion
3 PARENTESISABIERTO expresion PARENTESISCERRADO var_expresion : (IDENT CORCHETEABIERTO) => IDENT CORCHETEABIERTO expresion CORCHETECERRADO IDENT
4 PROCESADORES DEL LENGUAJES Ev. Alternativa NOMBRE: GRUPO: EL LENGUAJE LOBJ LOBJ es un lenguaje de programación secuencial orientado a objetos. El programa LOBJ consta de declaraciones de clase, declaraciones de objetos y secuencia de asignaciones. La declaración de clase incluye nombre y conjunto de atributos. El atributo pueden ser entero o de tipo clase. Las expresiones en LOBJ están limitadas a enteros, valores nulos, objetos y selección de atributos. Los atributos se expresan mediante navegaciones al estilo Java. A continuación se muestra un programa LOBJ con errores semánticos. PROGRAMA CLASES A[a:entero,objB:B,b:entero], B[objA:A,a:entero], C[objA:A,objB:B] OBJETOS oa:a, ob:b, oc:c ASIGNACIONES oa.objb = ob oa.objb = oa ob = oa oc.obja.c = 1 oc.obja = oa oc.obja = 1 oc.obja.a = 1 oc.c = ob.b // error (a) asignación oa.objb = oa con diferentes tipos // error (a) asignación ob = oa con diferentes tipos // error (b) oc.obja.c es un atributo inexistente //error (a) asignación oc.obja = 1 con diferentes tipos //error (b) atributo oc.c inexistente //error (b) atributo ob.b inexistente oc.obja.objb.a = 1 SE PIDE: Analizador semántico que detecte errores en cada asignación del programa. Para una asignación dada, el analizador comprobará si hay accesos a atributos inexistentes. Si no hay tales accesos, se comprobará si los tipos en la parte izq y dcha de la asignación son distintos. Los errores deben ser informados por consola al procesar cada asignación y siguiendo el formato mostrado en el programa de ejemplo. Descripciones a entregar: (4 puntos) [DISEÑO ABSTRACTO] Diseño abstracto del analizador semántico. [IMPLEMENTACIÓN] (1) Gramática sin atribuir que reconozca los árboles de sintaxis abstracta generados por el analizador del Anexo. (2) Atribuir la gramática resultante en (1) con la implementación del diseño abstracto.
5 Anexo class Anasint extends Parser options{ buildast = true k=2 tokens{ VARIABLE programa : PROGRAMA^ clases objetos asignaciones clases : CLASES^ decl_clases PUNTOYCOMA! objetos : OBJETOS^ decl_objetos PUNTOYCOMA! asignaciones : ASIGNACIONES^ (asignacion)* decl_clases : (decl_clase COMA) => decl_clase COMA! decl_clases decl_clase decl_objetos : (decl_objeto COMA) => decl_objeto COMA! decl_objetos decl_objeto decl_clase : IDENT^ CORCHETEABIERTO! decl_atributos CORCHETECERRADO! decl_objeto : IDENT^ DOSPUNTOS! IDENT decl_atributos : (decl_atributo COMA) => decl_atributo COMA! decl_atributos decl_atributo decl_atributo : IDENT^ DOSPUNTOS! IDENT asignacion : variable ASIG^ expresion PUNTOYCOMA! expresion : NUMERO NULO variable variable : (IDENT PUNTO) => (IDENT PUNTO!)+ IDENT {#variable = #(#[VARIABLE,"VARIABLE"],##) IDENT {#variable = #(#[VARIABLE,"VARIABLE"],##)
6 [DISEÑO ABSTRACTO] (1) El analizador necesitará almacenar la estructura de cada clase: nombre de clase, nombre de loa atributos y sus tipos. Esta información es necesaria para calcular el tipo de una expresión. memoria clases: [clase1 [atributo1.1 tipo1.1] [atributo 1.2 tipo1.2]... clase2 [atributo2.1 tipo2.1] [atributo 2.2 tipo2.2]...] (2) El analizador necesitará conocer el tipo de cada objeto para poder calcular el tipo de una expresión. memoria objetos: [ob1 clase1,...] (3) El tipo de un objeto se obtiene consultando la memoria objetos. El tipo de un atributo se determina accediendo a la memoria objetos y a la memoria clases. Ejemplo: el tipo de oc.obja.a se determina accediendo sucesivamente a la clase del objeto oc (memoria objetos), a la clase del atributo obja (memoria clases) y finalmente al tipo del atributo a. Toda constante numérica es de tipo entero. El acceso a un atributo inexistente hace indeterminado el tipo de la expresión. (4) Para cada asignación se calculará el tipo de la parte izquierda y el tipo de la expresión a la derecha. Si en el cálculo de dichos tipos, se accede a un atributo inexistente, se informará de error (b) acceso a atributo inexistente. Si no hay error de acceso a atributo inexistente, se comparará los tipos resultantes. Si no son iguales se informará de error (a) partes izq. y dcha. con distintos tipos. [IMPLEMENTACIÓN] Gramática sin atribuir que reconozca los árboles de sintaxis abstracta generados por el analizador del Anexo. class Anasem0LOBJ extends TreeParser options{ importvocab=anasintlobj programa : #(PROGRAMA clases objetos asignaciones) clases : #(CLASES decl_clases)
7 objetos : #(OBJETOS decl_objetos) asignaciones : #(ASIGNACIONES (asignacion)*) decl_clases : (decl_clase)+ decl_objetos : (decl_objeto)+ decl_clase : #(IDENT decl_atributos) decl_objeto : #(IDENT IDENT) decl_atributos : (decl_atributo)+ decl_atributo : #(IDENT IDENT) asignacion : #(ASIG variable expresion) expresion : NUMERO NULO variable variable: #(VARIABLE seq_id) seq_id : (IDENT)+ Atribuir la gramática resultante en (1) con la implementación del diseño abstracto. header{ import java.util.* class AnasemLOBJ extends TreeParser options{ importvocab=anasintlobj { Map<String,Map<String,String>> clases = new HashMap<String,Map<String,String>>() Map<String,String> objetos = new HashMap<String,String>() boolean error_b
8 void chequear_error_a(string t1, String t2, AST variable, AST expresion){ boolean error_a = false if (t1.equals(" indeterminado") t2.equals(" indeterminado")) error_a = false else{ if (t1.equals("entero")) if (!t2.equals("entero")) error_a = true else error_a = false else if (t2.equals(" cualquiera")) error_a = false else error_a =!(t1.equals(t2)) if (error_a) System.out.println("error (a) asignación "+ convertir_variable(variable)+" = "+ convertir_expresion(expresion)+" con diferentes tipos") String calcular_tipo(ast variable){ AST id = variable.getfirstchild() String tipo = objetos.get(id.gettext()) id = id.getnextsibling() while (id!=null &!tipo.equals(" indeterminado")){ if (clases.get(tipo).keyset().contains(id.gettext())) tipo = clases.get(tipo).get(id.gettext()) else{ tipo = " indeterminado" System.out.println("error (b) acceso a atributo "+ convertir_variable(variable)+" inexistente") error_b = true id = id.getnextsibling() return tipo String convertir_variable(ast variable){ String resultado = new String() AST it = variable.getfirstchild() resultado+=it.gettext() it = it.getnextsibling() while (it!=null){ resultado+="."+it.gettext() it = it.getnextsibling() return resultado String convertir_expresion(ast expresion){ String resultado = new String() switch(expresion.gettype()){ case NUMERO: resultado=expresion.gettext() break case NULO: resultado=expresion.gettext()
9 break case VARIABLE: resultado=convertir_variable(expresion) break default: break return resultado programa : #(PROGRAMA clases objetos asignaciones) clases : #(CLASES decl_clases) objetos : #(OBJETOS decl_objetos) asignaciones : #(ASIGNACIONES (asignacion)*) decl_clases : (decl_clase)+ decl_objetos : (decl_objeto)+ decl_clase : #(a:ident decl_atributos[a]) decl_objeto : #(a:ident b:ident) {objetos.put(a.gettext(),b.gettext()) decl_atributos [AST clase] {Map<String,String>atributos = new HashMap<String,String>(): (decl_atributo[atributos])+ {clases.put(clase.gettext(),atributos) decl_atributo [Map<String,String>atributos]: #(a:ident b:ident) {atributos.put(a.gettext(),b.gettext()) asignacion {String t1,t2: {error_b = false #(ASIG v:variable {t1=calcular_tipo(v) t2=e:expresion) { chequear_error_a(t1, t2, v, e) expresion returns [String tipo = new String()]: a:numero {tipo = "entero" b:nulo {tipo = " cualquiera" c:variable {tipo = calcular_tipo(c) variable : #(VARIABLE s:seq_id) seq_id : (IDENT)+
10 PROCESADORES DEL LENGUAJES Ev. Alternativa NOMBRE: GRUPO: EL LENGUAJE LEC2 LEC2 es un lenguaje de programación secuencial. Un programa LEC2 está formado por una declaración de contextos y una secuencia de instrucciones. Los contextos son secciones del programa en las que se declaran e inicializan variables con constantes numéricas (ej. x = 5). Un programa LEC puede tener uno o más contextos. Todo programa LEC tiene un contexto por defecto (ej. DEFECTO 1). Hay dos tipos de instrucciones en LEC2: expresiones aritméticas contextualizadas y selección de contextos por defecto. Las expresiones LEC se construyen con operadores aritméticos, constantes numéricas y variables. Los operadores aritméticos son suma (+), resta (-) y producto (*). Las constantes numéricas son enteros positivos o cero. La variable LEC2 puede referenciar a un contexto (ej. z{2 es una variable del contexto 2) o al contexto por defecto (ej. x). El siguiente ejemplo muestra un programa escrito en el lenguaje LEC2: CONTEXTO 1 x = 5 y = 7 z = 1 CONTEXTO 2 x = 9 z = 3 DEFECTO 1 INSTRUCCIONES (x{2 - y) * z (x{1 + y{1) * z{2 DEFECTO 2 (x - z) * z SE PIDE: Compilador de programas LEC2 a Java. Compilar un programa LEC2 (sin errores) significa generar una clase Java con método main(). El código del método main() debe simular la semántica del programa LEC2. Por tanto, la construcción del compilador implicará diseñar la compilación de los contextos, contexto por defecto e instrucciones de un programa LEC2. Compilar una expresiónlec2 significa generar código Java para la expresión y mostrar el resultado de su evaluación por consola. Por ejemplo, la expresión (x{2 - y) * z en el programa de ejemplo debe evaluarse en Java a la constante 2 (justificación: x{2=9, y=7, z=1). Por ejemplo, la expresión (x - z) * z en el programa de ejemplo debe evaluarse en Java a la constante 18 (justificación: x=9, z=3). Descripciones a entregar: (4 puntos) [DISEÑO ABSTRACTO] Diseño abstracto del compilador indicando para cada elemento de un programa LEC2 qué código Java le corresponde. Muestre el resultado de su compilación para el programa de ejemplo. [IMPLEMENTACIÓN] propuesta en Anexo. Gramática atribuida del analizador incluyendo la implementación del diseño abstracto. Use la gramática
11 Anexo class Compilador extends TreeParser options{ importvocab=anasint programa : #(PROGRAMA contextos defecto instrucciones) contextos : #(CONTEXTOS (contexto)+) contexto : #(CONTEXTO NUMERO asignaciones) asignaciones : (asignacion)+ asignacion : #(ASIG VARIABLE NUMERO) defecto : #(DEFECTO NUMERO) instrucciones : #(INSTRUCCIONES (instruccion)*) instruccion : defecto expresion expresion : #(MAS expresion expresion) #(MENOS expresion expresion) #(POR expresion expresion) #(LLAVEABIERTA VARIABLE NUMERO) VARIABLE NUMERO #(PARENTESISABIERTO expresion)
12 [DISEÑO ABSTRACTO] (1) Programa LEC2 se corresponde con clase Java con main() (2) Contexto LEC2 se corresponde con mapa Java declarado como variable local del método main(). La clave de dicho mapa es el número que identifica el contexto en LEC2 y el valor es otro mapa con clave una cadena de caracteres para identificar las variables del contexto y el valor es de tipo entero para almacenar el valor de tales variables. (3) Cada expresión LEC2 genera una expresión entera Java que será imprimida por consola mediante un código System.out.println. (4) La compilación de instrucciones de selección de contexto por defecto no genera código Java. Se representará por una variable interna del compilador. Muestre el resultado de su compilación para el programa de ejemplo. import java.util.* public class P { public static void main(string[] args) { Map<String, Integer>ctxt1 = new HashMap<String, Integer>() ctxt1.put("x",5) ctxt1.put("y",7) ctxt1.put("z",1) Map<String, Integer>ctxt2 = new HashMap<String, Integer>() ctxt2.put("x",9) ctxt2.put("z",3) System.out.println((ctxt2.get("x")-ctxt1.get("y"))*ctxt1.get("z")) System.out.println((ctxt1.get("x")+ctxt1.get("y"))*ctxt2.get("z")) System.out.println((ctxt2.get("x")-ctxt2.get("z"))*ctxt2.get("z")) [IMPLEMENTACIÓN] header{ import java.util.* import java.io.* class CompiladorLEC2 extends TreeParser options{ importvocab=anasintlec2 { FileWriter f Integer ctxt_defecto void abrir_fichero(string nombre_fichero){ try{ f = new FileWriter(nombre_fichero) catch(ioexception e){system.out.println(e.tostring())
13 void cerrar_fichero(){ try{ f.close() catch(ioexception e){system.out.println(e.tostring()) void escribir_fichero(string s){ try{ f.write(s) catch(ioexception e){system.out.println(e.tostring()) void escribir_espacios(){ try{ for(int i=0i<espaciosi++) f.write(' ') catch(ioexception e){system.out.println(e.tostring()) int espacios = 0 void escribir_importaciones(){ escribir_espacios() String r = new String("import java.util.*\n\n") escribir_fichero(r) void escribir_comienzo_clase(){ escribir_espacios() String r = new String("public class P {\n") escribir_fichero(r) espacios += 3 void escribir_fin(){ espacios -= 3 escribir_espacios() String r = new String("\n") escribir_fichero(r) void escribir_comienzo_main(){ escribir_espacios() String r = new String("public static void main(string[] args) {\n") escribir_fichero(r) espacios += 3 void declarar_contexto(ast n){ escribir_espacios() String r = new String("Map<String, Integer>ctxt"+n.getText()+" = "+ "new HashMap<String, Integer>()\n") escribir_fichero(r) void declarar_variable_en_contexto(ast contexto, AST variable, AST numero){ escribir_espacios() String r = new String("ctxt"+contexto.getText()+".put(\""+
14 variable.gettext()+"\","+numero.gettext()+")\n") escribir_fichero(r) void generar_codigo_expresion(string expresion){ escribir_espacios() String r = new String("System.out.println("+expresion+")\n") escribir_fichero(r) programa [String nombre_fichero]: {abrir_fichero(nombre_fichero) #(PROGRAMA {escribir_importaciones() escribir_comienzo_clase() escribir_comienzo_main() contextos defecto instrucciones) {escribir_fin()escribir_fin()cerrar_fichero() contextos : #(CONTEXTOS (contexto)+) contexto : #(CONTEXTO n:numero {declarar_contexto(n) asignaciones[n]) asignaciones[ast numero]: (asignacion[numero])+ asignacion[ast numero] : #(ASIG v:variable n:numero) {declarar_variable_en_contexto(numero,v,n) defecto : #(DEFECTO n:numero) {ctxt_defecto = new Integer(n.getText()) instrucciones : #(INSTRUCCIONES (instruccion)*) instruccion {String r: defecto r=expresion {generar_codigo_expresion(r) expresion returns [String r = new String()] {String r1,r2: #(MAS r1=expresion r2=expresion){r=r1+"+"+r2 #(MENOS r1=expresion r2=expresion){r=r1+"-"+r2 #(POR r1=expresion r2=expresion){r=r1+"*"+r2 #(LLAVEABIERTA v:variable n:numero) {r="ctxt"+n.gettext()+".get(\""+v.gettext()+"\")" w:variable {r="ctxt"+ctxt_defecto.tostring()+".get(\""+w.gettext()+"\")" m:numero {r=m.gettext() #(PARENTESISABIERTO r1=expresion) {r="("+r1+")"
PROCESADORES DEL LENGUAJES Septiembre 2017
PROCESADORES DEL LENGUAJES Septiembre 2017 NOMBRE: GRUPO: LENGUAJE DE PROGRAMACIÓN MP Un programa MP consta de un conjunto de interfaces para declarar procedimientos y un bloque para definir variables
Más detallesPROCESADORES DEL LENGUAJES Enero 2015
PROCESADORES DEL LENGUAJES Enero 2015 NOMBRE El lenguaje ASSERTION ASSERTION es un lenguaje de programación. Sus programas pueden incluir asertos. Un aserto es una condición lógica construida con las siguientes
Más detallesTEMA 3: ANÁLISIS SEMÁNTICO
1 TEMA 3: ANÁLISIS SEMÁNTICO OBJETIVO Dar respuesta a las siguientes preguntas: Qué es el análisis semántico de un lenguaje? Cómo se diseña y construye un analizador semántico? EL PROBLEMA DEL CÁLCULO
Más detallesPROCESADORES DEL LENGUAJES Enero 2018
PROCESADORES DEL LENGUAJES Enero 2018 NOMBRE: GRUPO: LENGUAJE LR3 El lenguaje de programación LR3 permite expresar programas secuenciales con los siguientes recursos: (a) Declaraciones de variables de
Más detallesDepartamento de Lenguajes y Sistemas Informáticos Procesadores de Lenguajes
1 ANÁLISIS SEMÁNTICO OBJETIVO Problemas para consolidar el diseño y construcción de analizadores semánticos. PROBLEMA 1: LA RUPTURA DE CONTROL INALCANZABLE Supongamos un lenguaje de programación secuencial
Más detallesProcesadores del Lenguaje Práctica 1: Ejemplo sencillo
Procesadores del Lenguaje Práctica 1: Ejemplo sencillo ANTLR es una herramienta que integra la generación de analizadores léxicos, sintácticos, árboles de sintaxis abstracta y evaluadores de atributos.
Más detallesUnidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Más detallesVARIABLES AUTOMÁTICAS
VARIABLES AUTOMÁTICAS Perl es un lenguaje muy flexible y con unas instrucciones muy potentes y útiles. Uno de los aspectos más destacables en este sentido es el de las expresiones regulares, hay multitud
Más detallesPROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 En esta práctica trabajaremos con ANTLR a nivel semántico utilizando gramáticas con atributos. ANTLR permite implementar con facilidad los dos modelos
Más detallesTEMA 2: ANÁLISIS LÉXICO-SINTÁCTICO
1 TEMA 2: ANÁLISIS LÉXICO-SINTÁCTICO OBJETIVO Dar respuesta a las siguientes preguntas: Qué es el análisis léxico-sintáctico de un lenguaje? Cómo se diseña y construye un analizador léxico-sintáctico?
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
Más detallesJava. Introducción a la Programación Orientada a Objetos
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
Más detallesEstructuras de control selectivas
Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos
Más detallesPROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1 Esta práctica supone la primera toma de contacto con la herramienta ANTLR (ANother Tool for Language Recognition). ANTLR es una herramienta que integra
Más detallesVARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
Más detallesCarlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Más detallesCurso Informática Lección 4. Instrucciones de control
Fundamentos de Informática Lección 4. Instrucciones de control Curso 2010-2011 Pedro Álvarez y José Ángel Bañares 24/09/2010. Dpto. Informática e Ingeniería de Sistemas. Índice de contenidos Introducción
Más detallesIntroducción a Java. Introducción a Java. Programación I
Introducción a Java Introducción a Java Programación I Como Funciona Tipos de Datos TIPO TAMAÑO RANGO byte 8 bits Valores numéricos de 128 a 127 short 16 bits Valores numéricos de 32.768 a 32.767 int 32
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar
Más detallesPROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 6
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 6 En esta práctica veremos cómo recorrer árboles de sintaxis abstracta con ANTLR. La notación utilizada nos va a resultar familiar ya que comparte muchos
Más detallesUnidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende
Más detallesEstructura de datos y Programación
Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de
Más detallesInstituto Tecnológico de Celaya
ELEMENTOS BÁSICOS DE C++: DECLARACIÓN DE VARIABLES A través de operaciones aritméticas (suma, resta, etc.) y lógicas (por ejemplo, comparaciones) los programas manipulan datos tales como números y caracteres.
Más detallesIntroducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens
Introducción a Java Juan Manuel Fernández Peña Curso 2005. Rev 2011 Comentarios: //comentario /* comentario fin de comentario */ /** comentario para javadoc fin */ Palabras reservadas: (como ejemplo) abstract,
Más detallesINTERPRETACIÓN Y COMPILACIÓN
1 INTERPRETACIÓN Y COMPILACIÓN OBJETIVO Problemas para consolidar el diseño y construcción de intérpretes y compiladores. PROBLEMA 1: CALCPROG Supongamos un lenguaje llamado CALCPROG para programar secuencias
Más detallesEstructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa
Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,
Más detallesExamen escrito de Programación I
Examen escrito de Programación I Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 12 de septiembre de 2011 Disponer sobre la mesa en lugar visible un documento
Más detallesLABORATORIO 1: ENTORNO DE DESARROLLO
1 LABORATORIO 1: ENTORNO DE DESARROLLO OBJETIVO Especificar el entorno de desarrollo para las sesiones de laboratorio. DURACIÓN: 1 sesión. ANTLR Y ECLIPSE ANTLR es una herramienta diseñada para facilitar
Más detallesTema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo
Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica
Más detallesPráctica 11e. Práctica 11e. José M. Ordax
Práctica 11e José M. Ordax chemi@javahispano.org 1 Copyright 2005 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano
Más detallesTema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL
Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,
Más detallesDocente: Juan Carlos Pérez P. Alumno : Fecha : Nota:
Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Justificación: Se pretende con éste contribuir a que el alumno se inicie y conozca el entorno del IDE en la creación de pequeños programas en java Objetivos:
Más detallesConstrucciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Más detallesEs ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?
Modulo 7. Expresiones y sentencias de control de Flujo En este punto de estudio se considera que tenemos claro los conceptos relacionados con variables y operadores, ahora estudiaremos como con las variables
Más detallesDatos Elementales y formato de un programa en Java
Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:
Más detallesÁrboles de Sintaxis Abstracta en ANTLR
Árboles de Sintaxis Abstracta en ANTLR Antlr permite construir árboles de sintaxis abstracta (ASA) mediante anotaciones en la gramática indicando qué tokens deben tratarse como raíces de subárboles, cuáles
Más detallesTema 5. Análisis semántico
Departamento de Tecnologías de la Información Tema 5 Análisis semántico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Características del análisis semántico 5.2 Gramáticas atribuidas
Más detallesTema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN
Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos
Más detallesTEMA 6: ANÁLISIS SEMÁNTICO DE EXPRESIONES E INSTRUCCIONES EN L-0
TEMA 6: ANÁLISIS SEMÁNTICO DE EXPRESIONES E INSTRUCCIONES EN L-0 En este tema vamos a mostrar una estrategia para llevar a cabo, partiendo del ASA obtenido en el tema 4, el resto de comprobaciones semánticas
Más detallesPROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 5
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 5 En esta práctica estudiaremos los mecanismos que proporciona ANTLR para crear árboles de sintaxis abstracta. Estos aspectos (junto con la notación
Más detallesCompiladores e Intérpretes
Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2018 1. Introducción Este documento
Más detallesTEMA 2: PARSERS Y CONSTRUCCIÓN DEL ÁRBOL DE SINTAXIS ABSTRACTA PARA L-0
TEMA 2: PARSERS Y CONSTRUCCIÓN DEL ÁRBOL DE SINTAXIS ABSTRACTA PARA L-0 En este tema se divide en tres secciones: (1) la definición el analizador léxico de L-0, (2) el conjunto de reglas sintácticas de
Más detallesTema 2: Análisis léxico
Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 21 Fundamentos del análisis
Más detallesTema 2.- Objetos y mensajes
Tema 2.- Objetos y mensajes 1. Objetos y mensajes: mecanismo de envío de mensajes...2 2. SMALLTALK: EXPRESIONES...3 2.1. LITERALES: designan objetos constantes...3 2.2. NOMBRES DE VARIABLES: identifican
Más detallesHERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.
HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la
Más detallesPráctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones
Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Más detallesBloque II. Elementos del lenguaje de programación Java
Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida
Más detallesArreglos Unidimensionales En este tipo de arreglo se hace uso de un índice solamente para hacer referencia a una posición particular del arreglo.
Arreglos (Arrays) Definición: Un arreglo es un objeto contenedor que consiste de una cantidad fija de posiciones o celdas para almacenar valores del mismo tipo en ellas. Cada posición o celda del arreglo
Más detallesTema 2. El lenguaje JAVA
Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias
Más detallesUnidad II Tema 3: Tratamiento de arreglos y cadenas en Java
Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java Profesor: Jorge Escalona / Tobías Bolívar Email: escaljorge@gmail.com / tobiasbolivar@gmail.com Web: http://estructuradatos.tripod.com 1 Qué
Más detallesParte I: Programación en un lenguaje orientado a objetos
Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento
Más detallesBloque II. Elementos del lenguaje de programación Java
Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida
Más detallesJAVA 1. Introducción
Diseño de Interfaces de Usuario JAVA. Introducción. Características Portabilidad Interpretado (bytecodes) Uso de Máquina Virtual Java (JVM) Orientado a Objetos Jerarquía de clases Extensible (packages)
Más detallesPROGRAMACIÓN GENÉRICA
PROGRAMACIÓN GENÉRICA Lenguajes de Programación - Orientación a Objetos: Progr. Genérica 1 Programación genérica Objetivo: escribir algoritmos genéricos, independientes de las clases concretas de los datos
Más detallesabril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples
Desarrollo de aplicaciones en Java Generación de código fuente Compilación Ejecución Elementos de aplicaciones simples EII147-01-02 Introducción a las tecnologías de información Escuela de Ingeniería Industrial
Más detalles1. (1 punto) Dado el siguiente fragmento de programa:
PROGRAMACIÓN I 7-junio-2004 1. (1 punto) Da el siguiente fragmento de programa: for (int i = 1; i = 0; j = j - 1) System.out.println (i + + j); a. Cuántas veces se
Más detallesJava para programadores
Java para programadores Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Variables. Tipos
Más detallesPráctica 5. Fecha límite de entrega: viernes, 14 de diciembre
Algoritmos http://www.lfcia.org/alg/ 2007-2008 Ingeniería Informática Ingeniería Técnica de Informática de Gestión Práctica 5 Fecha límite de entrega: viernes, 14 de diciembre Implementación de un Diccionario
Más detallesTema 2: Análisis léxico
Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 22 Fundamentos del análisis
Más detallesSintaxis básica, variables y 7pos
Contenidos Sintaxis básica, variables y 7pos Curso de Programación en Java! Sintaxis básica! Variables y 7pos! Entrada/Salida básica! Operadores y expresiones Jesús Montes Sánchez jmontes@fi.upm.es Marzo
Más detallesPARTE TEÓRICA - TEST [2,5 PUNTOS]:
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA 71901072 PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)
Más detallesCurso de Java Introducción a la Programación II
Curso de Java Introducción a la Programación II Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Tipos Java 2 Decalaración de variables 3 Operadores aritméticos Índice
Más detallesIntroducción general al Lenguaje C (2010/2011)
Luis Valencia Cabrera lvalencia@us.es (http://www.cs.us.es/~lvalencia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Introducción general al Lenguaje C (2010/2011) Universidad de Sevilla Índice
Más detalles5. Sentencias selectivas o condicionales
60 A. García-Beltrán y J.M. Arranz 5. Sentencias selectivas o condicionales Objetivos: a) Describir el funcionamiento de las sentencias selectivas o condicionales (if-else y switch) b) Interpretar el resultado
Más detallesPROCESADORES DEL LENGUAJES Septiembre 2014
PROCESADORES DEL LENGUAJES Septiembre 2014 ANÁLISIS SEMÀNTICO Y GENERACIÓN DE CÓDIGO Dado el siguiente parser ANTLR, class Anasint extends Parser buildast=true tokens{ ONTOLOGY ontologia : (declaracion)*
Más detallesComprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.
Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos
Más detallesVariables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Más detallesPROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1 ANTLR es una herramienta que integra la generación de analizadores léxicos, sintácticos, árboles de sintaxis abstracta y evaluadores de atributos.
Más detallesProcesamiento de Lenguajes (PL) Curso 2014/2015. Práctica 1: analizador descendente recursivo
Procesamiento de Lenguajes (PL) Curso 2014/2015 Práctica 1: analizador descendente recursivo Fecha y método de entrega La práctica debe realizarse de forma individual, como las demás prácticas de la asignatura,
Más detallesTema 7.- Fundamentos de la Programación Orientada a Objetos
Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).
Más detallesUniversidad de Managua
Universidad de Managua Introducción a la Programación Tema 7 Introducción a la programación en lenguaje C# Objetivos - Describir la estructura básica de un programa en Lenguaje C# - Explicar las estructuras
Más detallesCURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE
CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE 1 Estructura de Datos 1. Logica de Programación 2. Uso de Algoritmos usando Lenguaje Java 3. Ingreso de datos 4. Sentencias de Control 1.
Más detallesTema 5: Traducción dirigida por la sintaxis
Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Elementos de lenguaje: Identificadores Tipos de datos 2 Tipos de datos primitivos 3 Tipos de datos referenciados Clases Interfaces Arrays
Más detallesIntroducción al lenguaje C
Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Colonia, Uruguay 15 de marzo de 2016 Programación 2 Introducción al lenguaje C 15 de marzo de 2016 1 / 34 Objetivos
Más detallesSintaxis básica, variables y 7pos
Contenidos Sintaxis básica, variables y 7pos Curso de Programación en Java! Sintaxis básica! Variables y 7pos! Entrada/Salida básica! Operadores y expresiones Jesús Montes Sánchez jmontes@fi.upm.es Estructura
Más detallesUnidad 3 Programación Orientada a Objetos. Programación JAVA. Cuestiones I:
WEB: http://dis.um.es/~lopezquesada Pag. 1 Unidad 3 Programación Orientada a Objetos. Programación JAVA. Cuestiones I: Alumno: 1. Corregir los errores del siguiente código JAVA. (0.5p): // Obtener el menor
Más detallesJava ENTRADA ESTÁNDAR
Java ENTRADA ESTÁNDAR Tipos de método public (+, ): Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accesible desde todos lados. private (-, ): Indica que el método
Más detallesExamen escrito de Programación 1
Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 31 de agosto de 2012 Disponer sobre la mesa en lugar visible un documento de identificación
Más detallesClases abstractas e interfaces en Java
Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura
Más detalles7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz
84 A. García-Beltrán y J.M. Arranz 7. Otras sentencias Objetivos: a) Describir el funcionamiento de las otras sentencias de control (break, continue y try-catch) b) Interpretar el resultado de una secuencia
Más detalles1. Cuántas sentencias hay en la secuencia principal del siguiente programa?
1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10.
Más detallesTema 5: Traducción dirigida por la sintaxis
Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis
Más detalles1. (1 punto) Dado el siguiente fragmento en Java:
PROGRAMACIÓN I 9-septiembre-2004 1. (1 punto) Dado el siguiente fragmento en Java: class Pares public static void main (String [] argumentos) String numero = argumentos[0]; Completar el programa con las
Más detalles4. Operadores Operador asignación
Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre
Más detallesControla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion
UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto
Más detallesIntroducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009
Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy Febrero 2009 Índice Elementos básicos Ejecución de un programa Estructuras de control Ciclos Ejercicios 2 Elementos Básicos
Más detallesIdentidad, igualdad y equivalencia
Identidad, igualdad y equivalencia Introducción a la Programación Orientada a objetos 2018 Clases como tipos Cuando el analista o el diseñador de un sistema orientado a objetos especifica una clase, establece
Más detallesExamen de prácticas de Programación 1
Examen de prácticas de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 3 de septiembre de 2014 Tiempo para realizar el trabajo de programación propuesto:
Más detallesExamen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN
EJERCICIO 1 (1.5 puntos) Diseñe un conjunto de casos de prueba adecuado para comprobar el funcionamiento de un método encargado de calcular la duración de una llamada telefónica. Entradas Hora de inicio
Más detallesTema: Análisis Semántico
Compiladores. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Semántico Contenido En esta guía se desarrollará una tabla de símbolos y se asociará al analizador
Más detallesIntroducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez
Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.
Más detallesRepaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)
Repaso Lenguaje C OBJETOS Variables Constantes Variable: objeto del ambiente cuyo contenido puede cambiar. Constante: objeto cuyo contenido no puede cambiar. Variables: - un nombre que la identifica. Deben
Más detalles