El Análisis Semántico es aquél que estudia a las palabras en función de su significado. Se trata de determinar el tipo de los resultados intermedios, comprobar que los argumentos que tien…Descripción completa
Livro que trata do design industrial e da metodologia de produção de Baxter, aplicando as análises e conceito.
analizador de redes
son instrumentos para medir diferentes tipos de corriente y frecuencias y descargarlas en tu computadora para su posterior desarrollo
100Descripción completa
Descripción: sdgh
Una investigación sobre el analizador de gases Orsat y su funcionamientoDescripción completa
analizador de gases
Descripción completa
El compilador es un programa que se encarga de leer un archivo de determinado lenguaje de programación y "traducirlo" al lenguaje máquina que es el conjunto de instrucciones (en el caso de l…Descripción completa
Descripción: Analizador lexico hecho en java
ANALIZADOR SEMANTICO Introducción Antes de comenzar es necesario conocer algunos conceptos para poder entender meor el desarrollo del tema ! se enlistan a continuación" Semántica"
Conunto de reglas #ue especi$can el signi$cado de cual#uier sentencia sint%cticamente correcta ! escrita en un determinado lenguae& Análisis"
E'amen detallado de una cosa para conocer sus caracter(sticas o cualidades) o su estado) ! e'traer conclusiones) #ue se realiza separando o considerando por separado las partes #ue la constitu!en&
La *ase de an%lisis sem%ntico re+isa el programa *uente para tratar de encontrar errores sem%nticos ! re,ne la in*ormación so-re los tipos para la *ase posterior de generación de código& En ella se utiliza la estructura er%r#uica determinada determinada por la *ase de an%lisis sint%ctico para identi$car los operadores ! operandos de e'presiones ! proposicio proposiciones& nes& .n componente importante del an%lisis sem%ntico es la +eri$cación de tipos& A#u() el compilador +eri$ca si cada operador tiene operandos permitidos por la especi$cación del lenguae *uente& /or eemplo) las de$niciones de muc0os lenguaes de programación re#uieren #ue el compilador indi#ue un error cada +ez #ue se use un n,mero real como real como (ndice de una matriz matriz&& Sin em-argo) la especi$cación del lenguae puede imponer restricciones restricciones a los operandos) por eemplo) cuando un operador aritm1tico -inario se aplica a un n,mero entero ! a un n,mero real& Re+isa #ue los arreglos tengan de$nido el tama2o correcto& El analizador sem%ntico se compone de un conunto de rutinas independientes) llamadas por los analizadores analizador es mor*ológico ! sint%ctico& El an%lisis sem%ntico utiliza como entrada el %r-ol sint%ctico detectado por el an%lisis sint%ctico para compro-ar restricciones de tipo ! otras limitaciones sem%nticas ! preparar la generación de código& En compiladores compiladores de un solo paso) las llamadas a las rutinas sem%nticas se realizan directamente desde el analizador sint%ctico ! son dic0as rutinas las #ue llaman al generador de código& El instrumento m%s utilizado para conseguirlo es la gram%tica de atri-utos& En compiladores compiladores de dos o m%s pasos) el an%lisis sem%ntico se realiza independientemente independientemente de la generación de código) pas%ndose in*ormación a tra+1s de un arc0i+o intermedio) #ue normalmente normalme nte contiene in*ormación so-re el %r-ol sint%ctico en *orma linealizada 3para *acilitar su maneo ! 0acer posi-le su almacenamiento en memoria au'iliar4& En cual#uier caso) las rutinas sem%nticas suelen 0acer uso de una pila 3la pila sem%ntica4 #ue contiene la in*ormación sem%ntica sem%ntica asociada a los operandos 3! a +eces a los operadores4 en *orma de registros sem%nticos& E'isten dos *ormas de descri-ir la sem%ntica de un lenguae de programación" mediante especi$cación in*ormal in*ormal o natural ! *ormal&
La descripción in*ormal de un lenguae de programación es lle+ada a ca-o mediante el lenguae natural& Esto 0ace #ue la especi$cación sea inteligi-le 3en principio4 para cual#uier persona& La e'periencia nos dice #ue es una tarea mu! complea) si no imposi-le) el descri-ir todas las caracter(sticas de un lenguae de programación de un modo preciso& La descripción *ormal de la sem%ntica de lenguaes de programación es la descripción rigurosa del signi$cado o comportamiento de programas) lenguaes de programación) m%#uinas a-stractas o incluso cual#uier dispositi+o 0ard5are& 6 Re+elar posi-les am-ig7edades e'istentes implementaciones de procesadores de lenguaes o en documentos descripti+os de lenguaes de programación& 6 Ser utilizados como -ase para la implementación de procesadores de lenguae& 6 8eri$car propiedades de programas en relación con prue-as de corrección o in*ormación relacionada con su eecución& 6 Dise2ar nue+os lenguaes de programación) permitiendo registrar decisiones so-re construcciones particulares del lenguae) as( como permitir descu-rir posi-les irregularidades u omisiones& 6 9acilitar la comprensión de los lenguaes por parte del programador ! como mecanismo de comunicación entre dise2ador del lenguae) implementador ! programador& La especi$cación sem%ntica de un lenguae) como documento de re*erencia) aclara el comportamiento del lenguae ! sus di+ersas construcciones& 6 Estandarizar lenguaes mediante la pu-licación de su sem%ntica de un modo no am-iguo& Los programas de-en poder procesarse en otra implementación de procesador del mismo lenguae e'0i-iendo el mismo comportamiento& 8ERI9ICACION DE TI/OS DE E:/RESIONES
•
•
•
9ormado por las de$niciones ! reglas #ue permiten compro-ar el dominio de un identi$cador) ! en #u1 conte'tos puede ser usado& Cada lenguae tiene un sistema de tipos propio) aun#ue puede +ariar de una a otra implementación& La compro-ación de tipos es parte del an%lisis sem%ntico&
9unciones /rincipales" Reglas de un lenguae #ue permiten asignar tipos a las distintas partes de un programa ! +eri$car su corrección& •
•
In*erencia de tipos" calcular ! mantener la in*ormación so-re los tipos de datos& 8eri$cación de tipo" asegurar #ue las partes de un programa tienen sentido seg,n las reglas de tipo del lenguae&
La in*ormación de tipos puede ser est%tica o din%mica" •
LIS/) CAML o Smalltal; utilizan in*ormación de tipos din%mica&
•
En ADA) /ascal o C la in*ormación de tipos es est%tica&
•
Tam-i1n puede ser una com-inación de am-as *ormas&
Cuantas m%s compro-aciones puedan realizarse en la *ase de compilación) menos tendr%n #ue realizarse durante la eecución& •
Ma!or e$ciencia del programa o-eto&
Es parte de la compro-ación de tipos" •
•
Con+ersión de tipos e'pl(cita" trans*ormación del tipo de una e'presión con un propósito determinado& Coerción" con+ersión de tipos #ue realiza de *orma impl(cita el compilador&
Con+ersión de tipos e'pl(cita" el programador indica el tipo destino" •
9unciona como una llamada a *unción" reci-e un tipo ! de+uel+e otro&
Con+ersión de tipos impl(cita" el compilador con+ierte autom%ticamente elementos de un tipo en elementos de otro" •
La con+ersión se lle+a a ca-o en la acción sem%ntica de la regla donde se realiza&
Compro-ador de tipos seguro" Durante la compilación 3compro-ación est%tica4 detecta todos los posi-les errores de tipo& Lenguae *uertemente tipado" Si un *ragmento de código compila es #ue no se +an a producir errores de tipo& En la pr%ctica) ning,n lenguae es tan *uertemente tipado #ue permita una completa compro-ación est%tica& In*ormación de tipos din%mica" El compilador de-e generar código #ue realice la in*erencia ! +eri$cación de tipos durante la eecución del programa #ue se est% compilando& In*ormación de tipos est%tica" •
Se utiliza para +eri$car la e'actitud del programa antes de la eecución&
•
/ermite determinar la asignación de memoria necesaria para cada +aria-le&
.n lenguae de programación contiene un conunto de tipos prede$nido denominados tipos simples" •
Algunos lenguaes permiten de$nir nue+os tipos simples" enumerado) su-rango&
Todos los lenguaes permiten crear nue+os tipos compleos a partir de otros m%s simples mediante constructores de tipos" •
/ara analizar los di*erentes tipos #ue inter+ienen dentro de un programa) el compilador de-e contar con una estructura interna #ue le permita manear cómodamente las e'presiones de tipos& Esta estructura interna" •
•
De-e ser *%cilmente manipula-le) pues su creación se realizar% con*orme se 0ace la lectura del programa *uente& De-e permitir comparar *%cilmente las e'presiones asignadas a distintos trozos de código) especialmente a los identi$cadores de +aria-les&&
La *orma m%s 0a-itual de representación son los gra*os ac(clicos dirigidos 3>ADs4& •
La +entaa de estas representaciones es #ue ocupan poca memoria ! por tanto la compro-ación de e#ui+alencia se e*ect,a con rapidez&
>RAMATICA DE ATRI?.TOS .na >ram%tica con Atri-utos es una generalización de las>ram%ticas Li-res de Conte'to) denominada De$nición Dirigida por la Sinta'is" @ Cada s(m-olo gramatical puede tener asociado un conunto $nito deatri-utos) #ue pueden ser de los siguientes tipos" @ Sintetizados" su +alor se calcula en *unción de los atri-utos de los nodos 0ios& @ eredados" su +alor se calcula en *unción de los atri-utos de los nodos 0ermanos !Bo del nodo padre& @ Cada atri-uto tomar% +alores en un dominio& @ Cada producción lle+ar% asociadas un conunto de reglas sem%nticas& @ Las relaciones de dependencia entre atri-utos) esta-lecidas por las reglas sem%nticas) se representar%n mediante el >ra*o de Dependencias& A partir de estas gram%ticas se lle+an a ca-o las denominadas Traducciones dirigidas por sinta'is& ATRI?.TOS SINTETIZADOS En el caso de los s(m-olos terminales de la gram%tica) su atri-uto no es mas #ue el le'ema asociado al to;en reconocido por el analizador l1'ico& .na gram%tica con atri-utos se denomina >ram%tica SAtri-uida si todos los atri-utos son sintetizados& Siempre es posi-le trans*ormar una >ram%tica con Atri-utos en >ram%tica SAtri-uida& Eemplo" Analizar la *orma sentencial FG=HJ) a partir de la siguiente de$nición dirigida por la sinta'is"
/roducción Regla sem%ntica EF EG = T EF&+al K EG&+al = T&+al E T E&+al K T&+al TF TG 9 TF&+al K TG&+al 9&+al T 9 T&+al K 9&+al 9 3E4 9&+al K E&+al 9 num 9&+al K +alor 3num4 ATRI?.TOS EREDADOS .na gram%tica con atri-utos se denomina >ram%tica LAtri-uida si cada atri-uto #ue se e+al,a cumple una de las siguientes condiciones" @ Es un atri-uto sintetizado& @ Dada una producción A :F:G&&:&&:n) el atri-uto 0eredado asociado a : depende ,nicamente de los atri-utos de :F)&&&) :F !Bo de atri-utos 0eredados asociados al s(m-olo A&
>RA9O DE DE/ENDENCIA /ara calcular el +alor de un atri-uto es necesario calcular en primer lugar los +alores de los atri-utos de los #ue depende) para lo cual se de-er% esta-lecer una dependencia entre atri-utos mediante un >ra*o de Dependencias& Eemplo" Analizar la *orma sentencial real idF) idG) idH a partir de la siguiente de$nición dirigida por la sinta'is" /roducción Reglas sem%nticas D T L L&0er K T&tipo T int T&tipo K integer T real T&tipo K real L LF) id LF&0er K L&0er A2adeTipoTS3id&entrada) L&0er4 L id A2adeTipoTS3id&entrada) L&0er4 Eemplo" Dada la gram%tica > K 3L) A) a) LAL A) A a) L4) o-tener una gram%tica con atri-utos #ue al analizar una cadena calcule el n,mero de as #ue la componen&
Eemplo" Dada la gram%tica > K 3L) E) R) )) id) P) Q) L id idPEQ) E R E)R ) R id) L4) de$nir un atri-uto denominado numdimensiones ! las reglas sem%nticas asociadas a cada producción) de *orma #ue al analizar una sentencia o-tengamos el n,mero de dimensiones #ue tiene el arra! re*erenciado& Eemplo" Dada la gram%tica > K 3S) L) ?) ) F) <) SL&L L) L L? ?) ? F) S4) o-tener una gram%tica con atri-utos #ue al analizar un n,mero en -inario calcule su e#ui+alente en decimal&
E+aluación de atri-utos con analizadores sint%cticos descendentes LL Las >ram%ticas LAtri-uidas englo-an a la ma!or(a de las gram%ticas con atri-utos -asadas en gram%ticas LL 3F4& Se de$ne Es#uema de Traducción como una gram%tica con atri-utos cu!as acciones sem%nticas se e'presan entre lla+es) ! se encuentran intercaladas entre los s(m-olos de la parte derec0a de las producciones asociadas a la gram%tica) o -ien al $nal de las mismas& /ara realizar el An%lisis Sint%ctico Descendente de atri-utos con una gram%tica LL3F4 ser% necesario trans*ormar dic0a gram%tica a un Es#uema de Traducción en el #ue se insertar%n las acciones sem%nticas necesarias) teniendo en cuenta #ue un +alor de un atri-uto de-e estar calculado antes de poder ser utilizado& El Analizador es similar) pero a0ora tra-aar% con producciones compuestas de los s(m-olos m%s las acciones sem%nticas" a4 Al aplicar una producción introduciremos en la pila los s(m-olos ! las acciones sem%nticas& -4 Cuando en el tope de la pila se encuentre una acción sem%ntica) pasaremos a eecutarla) elimin%ndola a continuación del tope& E+aluación de atri-utos con analizadores sint%cticos ascendentes LR En los analizadores LR no se conoce la producción aplicada 0asta #ue no se 0a analizado la parte derec0a) por lo #ue las acciones sem%nticas de-er%n aplicarse al $nal de la producción& En las >ram%ticas SAtri-uidas las producciones con sus correspondientes acciones sem%nticas presentan la siguiente *orma" A AFAG&&&An acciones sem%nticas En las >ram%ticas LAtri-uidas pueden presentarse de esta otra *orma" A AF F AG G &&& An n donde ) F) &&& ) n son acciones sem%nticas& /ara poder tra-aar con ellas se 0an de trans*ormar de la siguiente manera"
A S AF SF AG SG < An n S SF F <& SnF nF donde S) SF) <) Sn son nue+os s(m-olos no terminales& /ara la realización del an%lisis) los atri-utos pueden almacenarse en una pila adicional) o -ien en la misma pila& /ara la gram%tica > K 3E) T) =) ) 3) 4) num) E E=T ET T) T 3E4 num) E4) podr(amos realizar una implementación de las acciones sem%nticas asociadas de la siguiente manera) para un analizador LR" /ROD.CCION 9RA>MENTO DE CODI>O L E 3amp& LR4 /rint3+alPtopeQ4 EF EG = T +alPnue+oTopeQ K +alPtopeGQ=+alPtopeQ E T TF TG 9 +alPnue+oTopeQ K +alPtopeGQ+alPtopeQ T 9 9 3E4 +alPnue+oTopeQ K +alPtopeFQ 9 num Los *ragmentos de código se eecutar%n usto antes de #ue tenga lugar una reducción por la regla asociada&
COM/RO?ACIUN DE TI/OS EN E:/RESIONES) SENTENCIAS V 9.NCIONES A partir de reglas sem%nticas se desarrolla la compro-ación de tipos para e'presiones) sentencias ! *unciones& El compro-ador de tipos es un es#uema de traducción #ue sintetiza el
tipo de cada e'presión a partir de los tipos de las su-e'presiones& El compro-ador de tipos puede manear matrices) apuntadores) proposiciones ! *unciones& CON8ERSIONES DE TI/OS) SO?RECAR>A DE 9.NCIONES V O/ERADORES) 9.NCIONES /OLIMUR9ICAS CON8ERSION DE TI/OS Consid1rense e'presiones como ' = i donde ' es de tipo real e i es de tipo entero& Como representación de enteros ! reales es distinta dentro de un computador) ! se utilizan instrucciones de m%#uina distintas para las operaciones so-re enteros ! reales) puede #ue el compilador tenga #ue con+ertir primero uno de los operandos de = para garantizar #ue am-os operandos sean del mismo tipo cuando tenga lugar la suma& La de$nición del lenguae especi$ca las con+ersiones necesarias& Cuando un entero se asigna a un real) o +ice+ersa) la con+ersión es al tipo del lado iz#uierdo de la asignación& En e'presiones) la trans*ormación m%s com,n es la de con+ertir el entero en un n,mero real ! despu1s realizar una operación real con el par de operandos reales o-tenidos& Se puede utilizar el compro-ador de tipos en un compilador para insertar estas operaciones de con+ersión en la representación intermedia del programa *uente&
COERCIONES La de$nición del lenguae especi$ca las con+ersiones necesarias& Cuando un entero se asigna a un real) o +ice+ersa) la con+ersión es al tipo del lado iz#uierdo de la asignación& En e'presiones) la trans*ormación m%s com,n es la de con+ertir el entero en un n,mero real ! despu1s realizar una operación real con el par de operandos reales o-tenidos& Se puede utilizar el compro-ador de tipos en un compilador para insertar estas operaciones de con+ersión en la representación intermedia del programa *uente& SO?RECAR>A DE 9.NCIONES V O/ERADORES .n s(m-olo so-recargado es el #ue tiene distintos signi$cados dependiendo de su conte'to& La so-recarga se resuel+e cuando se determina un signi$cado ,nico para un caso de un s(m-olo so-recargado& La resolución de la so-recarga a menudo aparece re*erida comoidenti$cación de operadores por#ue determina la operación #ue denota un s(m-olo de operador& Los operadores aritm1ticos est%n so-recargados en la ma!or(a de los lenguaes& Sin em-argo) la so-recarga #ue a*ecta a los operadores aritm1ticos como = se puede resol+er o-ser+ando ,nicamente los argumentos del operador& 9.NCIONES /OLIMOR9ICAS
El t1rmino polimór$co se aplica a cual#uier parte de código #ue pueda eecutarse con argumentos de tipos distintos) de modo #ue se puede 0a-lar de *unciones) as( como de operadores polimór$cos& Los operadores prede$nidos para indicar matrices) aplicar *unciones ! manipular apuntadores son generalmente polimór$cos por#ue no se limitan a una determinada clase de matriz) *unción o apuntador& COM/RO?ACION ESTATICA V DINAMICA Se dice #ue la compro-ación realizada por un compilador es est%tica) mientras #ue la compro-ación 0ec0a al eecutar el programa o-eto se denomina din%mica& En principio) cual#uier +eri$cación se puede realizar din%micamente) si el código o-eto carga el tipo de un elemento con el +alor de dic0o elemento& .n sistema de tipos seguro elimina la necesidad de compro-ar din%micamente errores de tipos !a #ue permite determinar est%ticamente #ue dic0os errores no pueden ocurrir cuando se est% eecutando el programa o-eto& Se dice #ue un lenguae es *uertemente tipi$cado si su compilador puede garantizar #ue los programas #ue acepte se eecutar%n sin errores de tipo& REC./ERACION DE ERRORES .n sistema de tipos seguro elimina la necesidad de compro-ar din%micamente errores de tipos !a #ue permite determinar est%ticamente #ue dic0os errores no pueden ocurrir cuando se est% eecutando el programa o-eto& Se dice #ue un lenguae es *uertemente tipi$cado si su compilador puede garantizar #ue los programas #ue acepte se eecutar%n sin errores de tipo&
MANEWO DE ERRORES Es una de las misiones m%s importantes del compilador& Se utiliza m%s en el an%lisis pero los errores pueden darse en cual#uier *ase& El maneo de errores es una tarea di*(cil por dos moti+os" F&A +eces algunos errores ocultan otros G&.n error puede pro+ocar una a+alanc0a de errores #ue se solucionan con el primero CRITERIOS A SE>.IR /ARA EL MANEWO DE ERRORES F&/ararse al detectar el primer error 3con+eniente para un compilador interacti+o4
G&Detectar todos los errores de una pasada 3con+eniente para un compilador de l(nea4