TEMA 2: PARSERS Y CONSTRUCCIÓN DEL ÁRBOL DE SINTAXIS ABSTRACTA PARA L-0

Tamaño: px
Comenzar la demostración a partir de la página:

Download "TEMA 2: PARSERS Y CONSTRUCCIÓN DEL ÁRBOL DE SINTAXIS ABSTRACTA PARA L-0"

Transcripción

1 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 L-0 y (3) el analizador sintáctico extendido para la construcción del árbol de sintaxis abstracta del lenguaje L-0. En las tres secciones usamos ANTLR. 1.- ANÁLISIS LÉXICO DE L-0 class Analex extends Lexer options{ // Importación del vocabulario de tokens desde el analizador // sintáctico (Anasint.g) importvocab=anasint // Por defecto no se activa la comprobación de literales // declarados en la sección tokens testliterals=false //2 símbolos de anticipación para tomar decisiones //(los tokens DP y ASIG justifican su necesidad) k=2 } tokens{ // Palabras reservas (unidad de programa) MODULO="modulo" // Palabras reservadas (instrucciones compuestas) // palabras reservadas en condicionales SI="si" ENTONCES="entonces" SINO="sino" FINSI="finsi" // palabras reservadas en iteraciones MIENTRAS="mientras" HACER="hacer" FINMIENTRAS="finmientras" // Palabras reservadas (devolución resultado) DEV="dev" // Palabras reservadas (visibilidad) OCULTO="oculto" // Palabras reservadas (clase instanciable) INST="inst"

2 // Palabras reservas (tipos predefinidos simples) ENTERO="entero" REAL="real" LOGICO="logico" CARACTER= caracter // Palabras reservas (tipos predefinidos compuestos) FORMACION="formacion" // Palabras reservas (tipos no predefinidos) CLASE="clase" // Palabras reservadas (literales lógicos) CIERTO="cierto" FALSO="falso" } // Palabras reservadas (operadores lógicos) Y="y" O="o" NO="no" //Tokens inútiles para el análisis sintáctico //(B)lancos y (T)abuladores BT : (' ' '\t') {$settype(token.skip)} //(S)altos de (L)inea SL : "\r\n" {newline()$settype(token.skip)} // Comentario de línea COMENT_LIN: "//" (('\r')+ ~('\n') ~('\r') )* "\r\n" {newline()$settype(token.skip)} // Signos de puntuación DOS_PUNTOS : ':' //(D)os (P)untos PARENTESIS_ABIERTO : '(' // (P)arentesis (A)bierto PARENTESIS_CERRADO : ')' // (P)arentesis (C)errado LLAVE_ABIERTA: '{' // (LL)ave (A)bierta LLAVE_CERRADA: '}' // (LL)ave (C)errada CORCHETE_ABIERTO: '[' // (COR)chete (A)bierto CORCHETE_CERRADO: ']' // (COR)chete (C)errado COMA: ',' // (CO)ma PUNTO_Y_COMA: '' // (PU)nto y (C)oma PUNTO:'.' // (PU)nto // Operadores aritméticos MAS: '+' MENOS: '-' POR: '*' DIVISION: '/' // Operadores relacionales MENOR:'<'

3 MENOR_IGUAL:"<=" MAYOR:'>' MAYOR:IGUAL:">=" IGUAL: '=' DISTINTO: "!=" // Asignación ASIGNACION : ":=" // Lexemas auxiliares protected DIGITO: ('0'..'9') protected LETRA: ('a'..'z' 'A'..'Z') // Literales Enteros y Reales NUMERO : ((DIGITO)+ '.') => (DIGITO)+ '.' (DIGITO)+ {$settype(lit_real)} ((DIGITO)+) => (DIGITO)+ {$settype(lit_entero)} //Literales Carácter LIT_CAR: \! (~( \ \n \r \t )) \! // Lexema IDENT (Identificadores) // Se activa la comprobación de palabras reservadas. // Las palabras reservadas tienen preferencia a cualquier otro identificador. IDENT options {testliterals=true}: LETRA(LETRA DIGITO)*

4 2.- REGLAS PARA EL ANÁLISIS SINTÁCTICO DE L-0 ///////////////////////////////////////////////////////// // DECLARACION DE MODULO ///////////////////////////////////////////////////////// declaracion_modulo : nombre_modulo definicion_modulo EOF nombre_modulo : MODULO IDENT definicion_modulo : lista_declaraciones_clases lista_declaraciones_clases : (declaracion_clase)+ // DECLARACIÓN DE CLASE declaracion_clase : cualificador_clase nombre_clase definicion_clase cualificador_clase: INST nombre_clase : CLASE IDENT definicion_clase : LLAVE_ABIERTA declaraciones_elemento_clase LLAVE_CERRADA // La definición de la clase se completa con declaraciones de // atributos y métodos. declaraciones_elemento_clase : (declaracion_elemento_clase)* declaracion_elemento_clase : cualificador_elemento_clase

5 ((IDENT PARENTESIS_ABIERTO) => declaracion_metodo tipo IDENT PUNTO_Y_COMA cualificador_elemento_clase: OCULTO // Declaración de método consta de prototipo y definición // Prototipo o perfil de la operación. // Definición de método compuesto de declaración de // variables locales e instrucciones. declaracion_metodo : prototipo_metodo definicion_metodo prototipo_metodo: IDENT PARENTESIS_ABIERTO declaracion_parametros PARENTESIS_CERRADO (DEV tipo)? declaracion_parametros : declaracion_parametro (COMA declaracion_parametro)* declaracion_parametro : tipo IDENT definicion_metodo : LLAVE_ABIERTA declaraciones_variables_locales bloque LLAVE_CERRADA declaraciones_variables_locales : (declaracion_variables_locales tipo IDENT) => declaracion_variables_locales declaraciones_variables_locales (declaracion_variables_locales) => declaracion_variables_locales declaracion_variables_locales : tipo lista_nombres_variables_locales PUNTO_Y_COMA

6 lista_nombres_variables_locales : nombre_variable_local (COMA nombre_variable_local)* nombre_variable_local : IDENT // INSTRUCCIONES // Instrucciones simples en L-0: asignacion, retorno, // llamada a método // Instrucciones compuestas en L-1: condicional e iteración instrucciones : (instruccion)* instruccion: instruccion_simple PUNTO_Y_COMA instruccion_compuesta instruccion_simple : (expresion ASIGNACION) => asignacion llamada_metodo retorno instruccion_compuesta : condicion iteracion // Asignación. asignación : expresion ASIGNACION expresion // Devolución de resultado. retorno : DEV expresion // Llamada a método (procedimiento) llamada_metodo : acceso PARENTESIS_ABIERTO lista_expresiones PARENTESIS_CERRADO

7 // Lista de expresiones lista_expresiones : expresion (COMA expresion)* // Condicional: si condicion entonces... en otro caso... condicion : SI PARENTESIS_ABIERTO expresion PARENTESIS_CERRADO ENTONCES bloque (SINO bloque)? FINSI // Iteración: mientras condicion hacer... iteracion : MIENTRAS PARENTESIS_ABIERTO expresion PARENTESIS_CERRADO HACER bloque FINMIENTRAS // Bloque de instrucciones en instrucciones compuestas y métodos bloque: instrucciones // // EXPRESIONES / // Reglas para cubrir estructuralmente una expresión en L-0 // Las expresiones pueden ser: lógicas, aritméticas (enteras // o reales) o de carácter / expresion : expresion_nivel_1 (O expresion_nivel_1)* expresion_nivel_1 : expresion_nivel_2 (Y expresion_nivel_2)* expresion_nivel_2 : NO expresion_nivel_2 expresion_nivel_3 expresion_nivel_3 : expresion_nivel_4 ((MAYOR MAYOR_IGUAL MENOR MENOR_IGUAL IGUAL DISTINTO) expresion_nivel_4)? expresion_nivel_4 : expresion_nivel_5 ((MAS MENOS) expresion_nivel_5)* expresion_nivel_5 : expresion_nivel_6 ((POR DIVISION) expresion_nivel_6)* expresion_nivel_6 : MENOS expresion_nivel_6

8 expresion_nivel_7 expresion_nivel_7 : PARENTESIS_ABIERTO expresion PARENTESIS_CERRADO (acceso PARENTESIS_ABIERTO) => llamada_metodo (acceso CORCHETE_ABIERTO) => acceso_tabla acceso LIT_ENTERO LIT_REAL LIT_CAR CIERTO FALSO // Acceso a un elemento de una formación acceso_tabla: acceso CORCHETE_ABIERTO lista_expresiones_nv CORCHETE_CERRADO // Accesos simples y a objetos (máximo un nivel) acceso: (IDENT PUNTO) => IDENT PUNTO IDENT IDENT // Lista no vacía de expresiones lista_expresiones_nv : expresion (COMA expresion)* ////////////////////////////////////////////////////////// // TIPOS ///////////////////////////////////////////////////////// // L-0 dispone de tipos predefinidos básicos, tipos // predefinidos compuestos y clases definidas por el // programador. ///////////////////////////////////////////////////////// tipo : tipo_predefinido_simple tipo_predefinido_compuesto IDENT // Los tipos básicos o predefinidos en L-0 son: // entero, real, carácter y lógico tipo_predefinido_simple : ENTERO REAL

9 LOGICO CARACTER tipo_predefinido_compuesto : formacion formacion : FORMACION lista_enteros (tipo_predefinido_simple IDENT) lista_enteros : LIT_ENTERO (COMA LIT_ENTERO)*

10 3.- ANÁLISIS SINTÁCTICO Y CONSTRUCCIÓN DEL ASA DE L-0 header{ import java.util.* import antlr.* } class Anasint extends Parser options{ buildast=true } tokens{ } { } PROGRAMA VISIBLE NO_INST ATRIBUTO METODO PROTOTIPO PARAMETRO PARAMETROS EXPRESIONES RESULTADO DEFINICION VACIO VARIABLE_LOCAL VARIABLES_LOCALES INSTRUCCION INSTRUCCIONES MENOSUNARIO LLAMADA ACCESO_TABLA ACCESO_OBJETO ACCESO_SIMPLE LISTA_ENTEROS ///////////////////////////////////////////////////////// // DECLARACION DE MODULO /////////////////////////////////////////////////////////

11 MODULO IDENT CLASE + declaracion_modulo! : n:nombre_modulo d:definicion_modulo EOF { #declaracion_modulo = #(#[MODULO,"modulo"],#n, #d) } nombre_modulo : MODULO! IDENT definicion_modulo : lista_declaraciones_clases lista_declaraciones_clases : (declaracion_clase)+ // DECLARACIÓN DE CLASE CLASE IDENT INST / NO INST * METODO/ATRIBUTO declaracion_clase! : c:cualificador_clase n:nombre_clase d:definicion_clase { #declaracion_clase = #(#[CLASE,"clase"],#n,#c,#d) } cualificador_clase! : INST {#cualificador_clase = #(#[INST])} {#cualificador_clase = #(#[NO_INST,"no_inst"])} nombre_clase : CLASE! IDENT definicion_clase :

12 LLAVE_ABIERTA! declaraciones_elemento_clase LLAVE_CERRADA! declaraciones_elemento_clase : (declaracion_elemento_clase)* ////////////////////////////////////////////////// // DECLARACIÓN DE ELEMENTO CLASE: MÉTODO O ATRIBUTO ////////////////////////////////////////////////// METODO PROTOTIPO DEFINICION OCULTO/VISIBLE IDENT PARAMETROS RESULTADO VARIABLES_LOCALES INSTRUCCIONES PARAMETRO * * * tipo / VACIO VARIABLE_LOCAL INSTRUCCION ATRIBUTO IDENT tipo OCULTO/VISIBLE declaracion_elemento_clase! : c:cualificador_elemento_clase ((IDENT PARENTESIS_ABIERTO) => a:declaracion_metodo { #declaracion_elemento_clase = #(#[METODO,"metodo"],#a,#c) } t:tipo i:ident PUNTO_Y_COMA { #declaracion_elemento_clase = #(#[ATRIBUTO,"atributo"],#i,#t,#c) }) // Cualificador de visibilidad cualificador_elemento_clase! : OCULTO {#cualificador_elemento_clase = #(#[OCULTO])}

13 {#cualificador_elemento_clase = #(#[VISIBLE,"visible"])} declaracion_metodo : prototipo_metodo definicion_metodo prototipo_metodo! : i:ident PARENTESIS_ABIERTO p:declaracion_parametros PARENTESIS_CERRADO (DEV t:tipo {#prototipo_metodo = #(#[PROTOTIPO, prototipo ],#i,#(#[parametros,"parametros"],#p), #(#[RESULTADO,"resultado"],#t))} {#prototipo_metodo = #(#[PROTOTIPO, prototipo ],#i,#(#[parametros,"parametros"],#p), #(#[RESULTADO,"resultado"],#[VACIO, vacio ]))} ) declaracion_parametros : declaracion_parametro (COMA! declaracion_parametro)* // DECLARACIÓN DE PARÁMETRO PARAMETRO IDENT tipo declaracion_parametro!: t:tipo i:ident {#declaracion_parametro = #(#[PARAMETRO, parametro ],#i,#t)} definicion_metodo! : LLAVE_ABIERTA d: declaraciones_variables_locales b: bloque LLAVE_CERRADA {#definicion_metodo= #(#[DEFINICION, definicion ],#(#[VARIABLES_LOCALES, variables_locales ],#d), #b)}

14 declaraciones_variables_locales : (declaracion_variables_locales tipo IDENT) => declaracion_variables_locales declaraciones_variables_locales (declaracion_variables_locales) => declaracion_variables_locales declaracion_variables_locales : t:tipo! lista_nombres_variables_locales[#t] PUNTO_Y_COMA! lista_nombres_variables_locales [AST t] : nombre_variable_local[#t] (COMA! nombre_variable_local[#t])* ////// // DECLARACIÓN DE VARIABLE LOCAL /////// VARIABLE_LOCAL IDENT tipo nombre_variable_local! [AST t] : i:ident { #nombre_variable_local = #(#[VARIABLE_LOCAL,"variable_local"],#i,#t) } // INSTRUCCIONES instrucciones : (instruccion)* instruccion! : i:instruccion_simple PUNTO_Y_COMA {#instruccion=#(#[instruccion,"instruccion"],#i)} j:instruccion_compuesta {#instruccion=#(#[instruccion,"instruccion"],#j)} instruccion_simple : (expresion ASIGNACION) => asignacion llamada_metodo retorno

15 instruccion_compuesta : condicion iteracion ASIGNACION expresion expresion asignacion! : e1:expresion ASIGNACION e2:expresion { #asignacion = #(#[ASIGNACION],#e1,#e2) } DEV expresion retorno! : DEV e:expresion { #retorno = #(#[DEV],#e) } LLAMADA acceso EXPRESIONES expresion * llamada_metodo! : i:acceso PARENTESIS_ABIERTO s:lista_expresiones PARENTESIS_CERRADO { #llamada_metodo = #(#[LLAMADA,"llamada"],#i,#(#[EXPRESIONES, expresiones ],#s)) }

16 lista_expresiones : expresion (COMA! expresion)* SI expresion INSTRUCCIONES INSTRUCCIONES INSTRUCCION * INSTRUCCION * condicion : SI^ PARENTESIS_ABIERTO! expresion PARENTESIS_CERRADO! ENTONCES! bloque (SINO! bloque)? FINSI! MIENTRAS expresion INSTRUCCIONES INSTRUCCION * iteracion : MIENTRAS^ PARENTESIS_ABIERTO! expresion PARENTESIS_CERRADO! HACER! bloque FINMIENTRAS! bloque!: i:instrucciones {#bloque=#(#[instrucciones, instrucciones ],#i)} // // EXPRESIONES / expresion : expresion_nivel_1 (O^ expresion_nivel_1)*

17 expresion_nivel_1 : expresion_nivel_2 (Y^ expresion_nivel_2)* expresion_nivel_2 : NO^ expresion_nivel_2 expresion_nivel_3 expresion_nivel_3 : expresion_nivel_4 ((MAYOR^ MAYOR_IGUAL^ MENOR^ MENOR_IGUAL^ IGUAL^ DISTINTO^) expresion_nivel_4)? expresion_nivel_4 : expresion_nivel_5 ((MAS^ MENOS^) expresion_nivel_5)* expresion_nivel_5 : expresion_nivel_6 ((POR^ DIVISION^) expresion_nivel_6)* expresion_nivel_6 : MENOS i:expresion_nivel_6 {#expresion_nivel_6=#(#[menosunario,"menosunario"],#i)} j:expresion_nivel_7 {#expresion_nivel_6=#j} expresion_nivel_7 : PARENTESIS_ABIERTO! expresion PARENTESIS_CERRADO! (acceso PARENTESIS_ABIERTO) => llamada_metodo (acceso CORCHETE_ABIERTO) => acceso_tabla acceso LIT_ENTERO LIT_REAL LIT_CAR CIERTO FALSO ////////////////////// // ACCESOS A ELEMENTOS DE FORMACIONES //////////////////////

18 ACCESO_TABLA acceso EXPRESIONES expresion + acceso_tabla! : c:acceso CORCHETE_ABIERTO d:lista_expresiones_nv CORCHETE_CERRADO {#acceso_tabla =#(#[ACCESO_TABLA,"acceso_tabla"], #c, #(#[EXPRESIONES, expresiones ],#d))} /// // ACCESOS SIMPLES Y A OBJETOS /// ACCESO_SIMPLE ACCESO_OBJETO IDENT ACCESO_SIMPLE IDENT IDENT acceso: (IDENT PUNTO)=> i1:ident PUNTO i2:ident {#acceso=#(#[acceso_objeto,"acceso_objeto"],#(#[acceso_simple],#i1),#i2)} i:ident {#acceso=#(#[acceso_simple,"acceso_simple"],#i)} lista_expresiones_nv : expresion (COMA! expresion)* ////////////////////////////////////////////////////////// // TIPOS ///////////////////////////////////////////////////////// tipo : tipo_predefinido_simple tipo_predefinido_compuesto IDENT

19 tipo_predefinido_simple : ENTERO REAL LOGICO CARACTER tipo_predefinido_compuesto : formacion FORMACION LISTA_ENTEROS Tipo * LIT_ENTERO formación! : FORMACION l:lista_enteros ( t:tipo_predefinido_simple {#formacion = #(#[FORMACION],#(#[LISTA_ENTEROS, lista_enteros ],#l),#t)} i:ident {#formacion = #(#[FORMACION],#(#[LISTA_ENTEROS, lista_enteros ],#l),#i)} ) lista_enteros : LIT_ENTERO (COMA! LIT_ENTERO)*

ANÁLISIS LÉXICO-SINTÁCTICO

ANÁLISIS LÉXICO-SINTÁCTICO 1 ANÁLISIS LÉXICO-SINTÁCTICO OBJETIVO Problemas para consolidar el diseño y construcción de analizadores léxico-sintácticos. PROBLEMA 1: LENGUAJE EXPL Supongamos un lenguaje de expresiones lógicas llamado

Más detalles

ANÁLISIS LÉXICO-SINTÁCTICO

ANÁLISIS LÉXICO-SINTÁCTICO 1 ANÁLISIS LÉXICO-SINTÁCTICO OBJETIVO Problemas para consolidar el diseño y construcción de analizadores léxico-sintácticos. PROBLEMA 1: LENGUAJE EXPL Supongamos un lenguaje de expresiones lógicas llamado

Más detalles

TEMA 3: ANÁLISIS SEMÁNTICO

TEMA 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 detalles

TEMA 2: ANÁLISIS LÉXICO-SINTÁCTICO

TEMA 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 detalles

Compiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Léxico Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. Análisis Léxico Programa Lenguaje Fuente Análisis Léxico (Token, Lexema)

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4

PROCESADORES 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 detalles

VARIABLES AUTOMÁTICAS

VARIABLES 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 detalles

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante. Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una

Más detalles

Unidad 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 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 detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1

PROCESADORES 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 detalles

Árboles de Sintaxis Abstracta en ANTLR

Á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 detalles

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

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 5

PROCESADORES 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 detalles

Tema 2: Análisis léxico

Tema 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 detalles

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANALIZADOR LÉXICO (AL) El Analizador léxico (scanner), lee la secuencia de caracteres del programa fuente, caracter a caracter, y los agrupa para formar unidades

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro 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 detalles

Sintaxis de PSeInt Tutorial

Sintaxis de PSeInt Tutorial Sintaxis de Tutorial Introducción a la Programación (T.U.M - T.U.G. - T.U.E. - T.U.T. - Prof) Introducción a la Computación (T.U.R. - T.U.W.) Fundamentos de la Informática (Ing. en Minas - Ing. Electr.)

Más detalles

Curso de Java Introducción a la Programación II

Curso 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 detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1

PROCESADORES 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 detalles

Tema 2.- Expresiones y funciones

Tema 2.- Expresiones y funciones UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 6

PROCESADORES 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 detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓ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 detalles

Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno

Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno 1.1. Gramática Léxica 1.1.1. Elementos Léxicos Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno ->

Más detalles

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Comprender 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 detalles

Compiladores: Introducción

Compiladores: Introducción Compiladores: Introducción Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. (galvarez@puj.edu.co) Basado en [Aho, 2007, chp. 1] Qué es un COMPILADOR?

Más detalles

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX PROCESADORES DE LENGUAJE Ingeniería Informática Especialidad de Computación Tercer curso Segundo cuatrimestre Departamento de Informática y Análisis Numérico Escuela Politécnica Superior de Córdoba Universidad

Más detalles

LENGUAJE DE PSEUDOCÓDIGO

LENGUAJE DE PSEUDOCÓDIGO LENGUAJE DE PSEUDOCÓDIGO METODOLOGÍA DE LA PROGRAMACIÓN Ingeniería Informática Primer curso, segundo cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba 1 Contenido 1. Sentencias...

Más detalles

Funcionamiento del A.L.

Funcionamiento del A.L. ANALIZADOR LEXICO 1 Funcionamiento del A.L. Programa fuente Analizador léxico Componente léxico Obtén el siguiente componente léxico Analizador sintáctico Tabla de símbolos 2 Maneja el fichero del programa

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

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

Carlos 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 detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

Estructura de datos y Programación

Estructura 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 detalles

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA El objetivo de la práctica es desarrollar un compilador utilizando las herramientas flex y bison y el lenguaje

Más detalles

Licenciatura de Matemáticas Informática I Notación algorítmica - Descripción BNF

Licenciatura de Matemáticas Informática I Notación algorítmica - Descripción BNF Licenciatura de Matemáticas Informática I Notación algorítmica - Descripción BNF Dpto. Informática Noviembre 1998 1. Deniciones en forma BNF < > Símbolos no terminales. Declaraciones u objetos declarados

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

Diseño de Compiladores I. Estructura General de un Compilador

Diseño de Compiladores I. Estructura General de un Compilador Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

LENGUAJE. Tema 2 Elementos de un programa

LENGUAJE. Tema 2 Elementos de un programa LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar

Más detalles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;) Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,

Más detalles

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Programación 1 Tema 3. Información, datos, operaciones y expresiones Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información

Más detalles

Java. Introducción a la Programación Orientada a Objetos

Java. 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 detalles

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, 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 detalles

COMPILADORES E INTERPRETES

COMPILADORES E INTERPRETES COMPILADORES E INTERPRETES Análisis semántico: Estudia el significado de la sentencia Procesadores de lenguaje: Convierte un programa fuente hecho en un lenguaje fuente a un programa objeto hecho en un

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Basic Object Oriented Programming (BOOP) Gramática del Lenguaje. Ever Mitta Flores

Basic Object Oriented Programming (BOOP) Gramática del Lenguaje. Ever Mitta Flores Ever Mitta Flores Índice 1. Clase @Principal...3 2. Comentarios...3 3. Definición de Atributos...3 4. Definición de Métodos...4 5. Declaración de Variables...4 6. Asignación de Valores...5 7. Definición

Más detalles

Gramáticas de Atributos

Gramáticas de Atributos Teoría de Lenguajes Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Etapas de un Compilador Analizador Léxico Analizador Sintáctico (Parser)... Lexer: Genera secuencia de tokens Reporta

Más detalles

REPRESENTACIÓN DE DATOS

REPRESENTACIÓN DE DATOS REPRESENTACIÓN DE DATOS Tipos de datos primitivos Tipos de Datos Estructurados TIPOS DE DATOS SIMPLES O PRIMITIVOS Dato Longitud Rango 2 TIPOS DE DATOS SIMPLES O PRIMITIVOS Surgen de la necesidad de tener

Más detalles

ANÁLISIS DESCENDENTE. Compruébese que la siguiente gramática es LL(1) sin modificarla.

ANÁLISIS DESCENDENTE. Compruébese que la siguiente gramática es LL(1) sin modificarla. Procesadores de lenguaje Ejercicios del Tema 3 ANÁLISIS DESCENDENTE Ejercicio 3.1 Compruébese que la siguiente gramática es LL(1) sin modificarla. Ejercicio 3.2 A B C D B a C b B λ C c A d C e B f C g

Más detalles

Algunos ejercicios sobre modelado sintáctico en exámenes de Compiladores e intérpretes

Algunos ejercicios sobre modelado sintáctico en exámenes de Compiladores e intérpretes Algunos ejercicios sobre modelado sintáctico en exámenes de Compiladores e intérpretes IG29: Compiladores e intérpretes Séptima sesión de teoría Ejercicio 1 Considera el lenguaje de las listas que cumplen

Más detalles

Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones

Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones Analizador Léxico Programación II Margarita Álvarez Analizador Léxico - Funciones Función Principal Leer carácter por carácter de la entrada y elaborar como salida una secuencia de componentes léxicos

Más detalles

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos 1.1 Tipos de Datos Primitivos 1.2 Tipos de datos estructurados 1.2.1 Arreglos unidimensionales, bidimensionales y cadenas de caracteres 1.2.2 Registros o Estructuras (unión y estructura) 1.3 Definición

Más detalles

Operadores y reglas de precedencia

Operadores y reglas de precedencia Capítulo 5 1 Operadores y reglas de precedencia MIA Ricardo González Lozano 2 Categoría de Operadores Los operadores son los elementos del lenguaje que nos permiten asignar, calcular y comparar expresiones,

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

MANUAL BÁSICO DE PSEUDOCÓDIGO A LENGUAJE C.

MANUAL BÁSICO DE PSEUDOCÓDIGO A LENGUAJE C. MANUAL BÁSICO DE PSEUDOCÓDIGO A LENGUAJE C. REGLAS Y RECOMENDACIONES PARA NOMBRAR VARIABLES EN C Use letras, el signo guion bajo y dígitos Evite poner todas las letras en mayúsculas Evite empezar con el

Más detalles

El proceso del Análisis Léxico

El proceso del Análisis Léxico El proceso del Análisis Léxico El proceso de análisis léxico se refiere al trabajo que realiza el scanner con relación al proceso de compilación. El scanner representa una interfaz entre el programa fuente

Más detalles

Tema 2. Concepto de Algoritmo

Tema 2. Concepto de Algoritmo Tema 2. Concepto de Algoritmo Objetivos Definir el concepto de algoritmo Resolver problemas sencillos mediante el diseño de un algoritmo Conocer los tipos de datos elementales y las operaciones sobre ellos

Más detalles

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +. APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje

Más detalles

FUNDAMENTOS DE OBJECT PASCAL

FUNDAMENTOS DE OBJECT PASCAL FUNDAMENTOS DE OBJECT PASCAL 1. ASPECTOS GENERALES DE LA SINTAXIS Los bloques de código quedan delimitados por y end. Se usa punto y coma como separador de sentencias de código. Comentarios: - ias líneas:

Más detalles

Introducción. El proceso de traducción

Introducción. El proceso de traducción Toda compilación es un proceso de transformación paulatina que convierte un programa escrito en un lenguaje fuente de alto nivel en otro programa escrito en un lenguaje objeto de bajo nivel. Ese proceso

Más detalles

16 Análisis sintáctico I

16 Análisis sintáctico I 2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 2.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 2. UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 2 Análisis Léxico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos del Tema

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Compilación. Jaime Gutiérrez Alfaro Compiladores e Intérpretes. II semestre,

Compilación. Jaime Gutiérrez Alfaro Compiladores e Intérpretes. II semestre, Compilación Jaime Gutiérrez Alfaro Compiladores e Intérpretes II semestre, 2017 1 Agenda 2. Compilación Estructura del proceso de compilación Estructuras de datos Pasadas Opciones de diseño de un compilador

Más detalles

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático c 2001 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado

Más detalles

Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:

Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe: 09:19 1 2 Temas Funciones del Analizador Léxico Manejo de buffers de entrada Especificación y reconocimiento de tokens Generación automática de Analizadores Léxicos Objetivos Que el estudiante logre conocer,

Más detalles

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

abril 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 detalles

GUÍA DE ESTILO EN JAVA

GUÍA DE ESTILO EN JAVA GUÍA DE ESTILO EN JAVA Formato de líneas 1. No usar más de 80 caracteres por línea (imagen de tarjeta). De esta forma se pueden visualizar las líneas completas con un editor de texto o en una hoja impresa

Más detalles

INICIACIÓN A LA PROGRAMACIÓN II

INICIACIÓN A LA PROGRAMACIÓN II INICIACIÓN A LA PROGRAMACIÓN II 1. Caracteres... 2 2. Identificadores... 4 3. Palabras clave o reservadas... 5 4 Variables y constantes. Datos... 6 5 Arrays... 8 6. Comentarios... 9 7. Expresiones... 11

Más detalles

Conceptos. Generales ALGORITMOS

Conceptos. Generales ALGORITMOS Conceptos 1 Generales ALGORITMOS Que es un Algoritmo? 2 Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos

Más detalles

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: EMPEZAR DE CERO A PROGRAMAR EN lenguaje C Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C" Autor: Carlos Javier Pes Rivas (correo@carlospes.com) Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C 1 OBJETIVOS Aprender a

Más detalles

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

Seminario de introducción a Flex

Seminario de introducción a Flex Seminario de introducción a Flex David Portolés Rodríguez dporto@unizar.es Lenguajes y Sistemas Informáticos Dpto. de Informática e Ing. de Sistemas Universidad de Zaragoza Qué es Flex? Flex es un una

Más detalles

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa Programación 1 Tema I. Conceptos y elementos básicos de Programación Lección 2. Lenguaje de programación y ejecución de un programa 1 Léxico, sintaxis y semántica de un lenguaje #include #include

Más detalles

INTRODUCCIÓN AL PROCESO DE COMPILACIÓN

INTRODUCCIÓN AL PROCESO DE COMPILACIÓN INTRODUCCIÓN AL PROCESO DE COMPILACIÓN El programa que se debe compilar es una secuencia de caracteres que termina con un centinela. CONCEPTOS BÁSICOS Un compilador es un complejo programa que lee un programa

Más detalles

Análisis semántico. Análisis semántico. Índice (I)

Análisis semántico. Análisis semántico. Índice (I) Análisis semántico Índice (I) Marina de la Cruz Alfonso Ortega Objetivo del análisis semántico Decisiones para la construcción de un analizador semántico Análisis semántico con Bison Nivel de indirección

Más detalles

3.3 Conceptos Básicos del Lenguaje Java

3.3 Conceptos Básicos del Lenguaje Java 3.3 Conceptos Básicos del Lenguaje Java Conjunto de Caracteres Java utiliza Unicode, un conjunto de caracteres de 16 bits Java permite leer ASCII de 7-bit o Latin-1, conviertiéndolo a Unicode Son pocos

Más detalles

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:

Más detalles

Características de JavaScript

Características de JavaScript Características de JavaScript Qué es JavaScript? o Lenguaje de programación interpretado utilizado fundamentalmente para dotar de comportamiento dinámico a las páginas web. o Cualquier navegador web actual

Más detalles

Tema 05: Elementos de un programa en C

Tema 05: Elementos de un programa en C Tema 05: Elementos de un programa en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

ING1310 Introducción a la Computación. Python. Conceptos Básicos. Carlos Reveco

ING1310 Introducción a la Computación. Python. Conceptos Básicos. Carlos Reveco ING1310 Introducción a la Computación Python Conceptos Básicos Carlos Reveco creveco@dcc.uchile.cl careveco@miuandes.cl Facultad de Ingeniería/Universidad de los Andes/Chile Rev : 254 C.Reveco Facultad

Más detalles

Compiladores e intérpretes Análisis Léxico I. Análisis Léxico I

Compiladores e intérpretes Análisis Léxico I. Análisis Léxico I Análisis Léxico I Profesor: Eridan Otto Análisis Léxico I Introducción Funciones Tokens,Patrones y Lexemas Reconocimiento de tokens Implementación de un AL 1 Análisis léxico: Introducción En esta unidad

Más detalles

Tema 5: Traducción dirigida por la sintaxis

Tema 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 detalles

PROGRAMACIÓN EN JAVA

PROGRAMACIÓN EN JAVA 1. INTRODUCCIÓN A LA PROGRAMACIÓN 1.1. Datos, algoritmos y programas 1.1.1. Definición de algoritmo 1.1.2. Datos 1.1.3. Características de un programa 1.2. Paradigmas de programación 1.2.1. Programación

Más detalles

UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT

UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT UNIÓN INTERNACIONAL DE TELECOMUNICACIONES UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT LENGUAJE HOMBRE-MÁQUINA JUEGO DE CARACTERES Y ELEMENTOS BÁSICOS Recomendación UIT-T Z.314

Más detalles

Guía práctica de estudio 05: Pseudocódigo

Guía práctica de estudio 05: Pseudocódigo Guía práctica de estudio 05: Pseudocódigo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Autorizado por: M.C. Alejandro Velázquez Mena Guía

Más detalles

Tema 1: Introducción a C

Tema 1: Introducción a C Fundamentos de Informática I ETSII Tema 1: Introducción a C. Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia Tema 1: Introducción a C Índice: Objetivos Conceptos

Más detalles

Proyecto Unico Interpretador de MiniLogo

Proyecto Unico Interpretador de MiniLogo Universidad Simón Bolívar Dpto. de Computación y Tecnología de la Información CI3721 - Traductores e Interpretadores Abril-Julio 2007 Proyecto Unico Interpretador de MiniLogo Logo es un lenguaje de programación

Más detalles

Construcciones del Lenguaje Java

Construcciones 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 detalles

Bison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison

Bison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Bison con Flex Construcción del programa objetivo alfa Comunicación entre las funciones main(), yylex() e yyparse() Formato del fichero

Más detalles

Elementos léxicos del lenguaje de programación C

Elementos léxicos del lenguaje de programación C Elementos léxicos del lenguaje de programación C Elementos léxicos de los lenguajes de programación (tokens) Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices

Más detalles

TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato

TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato TUTORIAL PROLOG Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato Prolog es un lenguaje de programación lógica de propósito general que se

Más detalles

Características de Lenguajes de Scripts

Características de Lenguajes de Scripts Lenguaje JavaScript Objetivos Conocer las características de los lenguajes de scripts en general y específicamente de JavaScript Conocer los Tipos de Páginas Web y cuando deben utilizarse. Conocer la sintaxis

Más detalles

El Pseudo-código de PsInt

El Pseudo-código de PsInt El Pseudo-código de PsInt Las características de este pseudolenguaje fueron propuestas en 2001 por el responsable de la asignatura Fundamentos de Programación de la carrera de Ingeniería Informática de

Más detalles

Tema 2. El lenguaje JAVA

Tema 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 detalles