Home
Segundo Proyecto: Documentación - proyectos-kreig-usac
Contents
1. typedef symtab symtab ESTRUCTURA typedef symbol symbol Funciones symbol insertarSimbolo char 1d int tipo Inserta un nuevo simbolo sin comprobar su previa existencia symbol buscarSimbolo char 1d Busca y devuelve simbolo segun su identificador dado en el param void borrarTabla void Elimina todos los registros de la tabla de simbolos int openSymtabHile const char filename Abre archivo hacia donde se imprimira archivo de tabla de simbolos int closeSymtabHile void Cierra archivo hacia donde se escribio tabla de simbolos int printSymtabHile int linea Imprime tabla de simbolos a archivo dado Definici n de la Gram tica En esta secci n se presenta las reglas gramaticales utilizadas para analizar sint cticamente la entrada de texto incluyendo los simbolos terminales y no terminales 0 Saccept intucro Se a 1 inicio embed 2 inicio embed 3 embed OPEN EMBED codigo CLOSE EMBED 4 error CLOSE EMBED J OPEN EMBED CLOSE EMBED 6 codigo sentencias 7 sentencias sentencia 8 sentencias sentencia O sentencias del Var 10 asignacion 11 condicionales T2 Nate loOs L3 llamadas 14 L Error ds der var KW VAR TR LDENTIFICADOR TK DOSPUNTOS KW INTEGER TK PUNTOCOMA 16 KW VAR IR IDENTIFICADOR TK DOSPUNTOS Kw BOOLEAN TK PUNTOCOMA 158 KW VAR TR TDENTTETCADOR TK DOSPUNTOS KW STRING TK PUNTOCOMA 18 asignacion TK IDENTIFICADOR TK OP ASIGNACI N expr TK PUNTOCOMA 19 condicionales KW IF
2. El programa fue desarrollado en lenguaje C para el analizador y C para el GUI compilado bajo GNU GCC 4 y 3 5 para las platatormas GNU LINUX y MS Windows respectivamente y distribuido bajo la licencia GPL MANUAL DE USUARIO Requisitos del Sistema e Ordenador x86 o compatible con tarjeta gr fica Unidad de CD ROM y Rat n Funcionales e 64MB de RAM bajo GNU Linux y 128 MB de memoria RAM bajo MS Windows e Sistema operativo Linux deseable o Windows 2000 XP Vista NOTA AUNQUE ESTA DESARROLLADO PARA SOPORTARLAS POR SU INESTABILIDAD NO SE RECOMIENDA EN ABSOLUTO WINDOWS 9x O ME e En GNU LINUX es necesario tener instalado correctamente las librerias de QT v3 3 adem s de alg n entorno de escritorio tip si usa KDE v3 3 como entorno de escritorio quiere decir que ya tiene instalado QT NOTA Aseg rese de cumplir los requisitos de hardware y software o el programa no correr como deber a tambi n de tener la versi n correcta de QT en GNU Linux o el programa nunca correr Instrucciones de Uso Pre Pasos e Encienda su computador y verifique que cumple con los requisitos del sistema e Ingrese a su sistema operativo EEE y verifique que tiene instalado Archivo interprete Ayuda las libreria QT si usa GNU Linux S E N Analizar Pasos l Inserte en la unidad de CD ROM el disco del programa 2 Si no se auto ejecuta el programa dir jase a Unidad de CD DVD ROM e ingrese al directorio bin 3 Haga
3. src Makefile src src pro make clean make S S gt S Conclusiones Herramientas como Yacc y Lex permitieron que el desarrollo del analizador fuese m s r pido enfocando parte del tiempo en la creacion de una representaci n intermedia adecuada y no en la implementaci n de una gram tica hecha en C por lo que se logr implementar de manera correcta un rbol de sintaxis abstracta como representaci n intermedia del an lisis sem ntico lo que permiti gran flexibilidad a la hora de evaluar enunciados iterativos que de otra manera ser an imposibles de analizar en un parser de una pasada y libre del contexto Debido a que las librerias actuales para el desarrollo de entornos gr ficos son muy sencillas de utilizar permiti un desarrollo enfocado m s al funcionamiento interno de la aplicacion
4. struct colaErr Cola de errores M s Tipos definidos typedef nodoColaErr nodoColaErr typedef colaErr colaErr typedef tipoError tipoError Funciones void encolarError colaErr cerr tipoError err Agrega un error a la cola de errores tipoError sacarError colaErr cerr Agrega un error a la cola de errores void errorLexico char msg Devuelve primer error en la cola de erroes void errorSintactico char msg Agrega mensaje a la cola de errores lexicos void errorSemantico char msg int numlinea Agrega mensaje a la cola de errores sintacticos int escribirErrorLogXML const char filename Agrega mensaje a la cola de errores semanticos Referencia del Archivo godzilla h definicion de la Widged principal del GUI M s finclude lt qmainwindow h gt tinclude lt alabel h gt inelude lt estdal1b gt tinclude lt qtextbrowser h gt tinclude browser h tinclude parserheader h include ast h ti clude ecolaerr 1 Dependencia gr fica adjunta para godzilla qmainwindow h PA glabel h o estdlib y VA E a qtextbrowser h A E A media d ocs progra c compiladores1 proy2 g odzilla src godzilla h CSS adockwindow h X Y y parserheader h o E V 7 pa pe a nn string h Este gr fico muestra que archivos directa o indirectamente incluyen a este archivo media docs progra c complladores1 proy2 g odzilla src godzilla cpp media docs
5. doble clic sobre godzilla en GNU LINUX o sobre godzilla exe en Linea 1 Columna O Windows 4 Inmediatamente se mostrar la ventana principal figura 1 Tambi n podra ejecutar desde consola el program con la siguiente sinapsis godzilla lt file input gt lt file output gt lt file error gt donde file_input archivo de entrada en formato ASCII de texto plano file_output archivo de salida ASCII file_error archivo de salida para errores ASCII Ventana del Editor O media docs progra c compiladores1 proy2 godzilla bin test txt y Elx Archivo Interprete Ayuda s W amp R Analizar lt html gt lt head gt lt head gt lt body gt lt var i integer var j boolean var k string var integer k a1 print k k a b c lt br gt 1 print k vertablasimbolos fori 1to5 begin print lt font size gt Letra Tamano lt font gt lt br gt lt br gt while lt 4 Letra Tamano 4 4 Letra Tamano 5 GI Linea 1 Columna O Ejemplo de Uso Escriba lo siguiente en el editor de c digo lt html gt lt head gt lt title gt lt title gt lt head gt lt body gt lt var i integer for i 1 to 5 print lt p gt lt b gt renglon No i lt b gt lt p gt Z gt lt body gt lt html gt e Haga clic en el men Archivo Guardar Como e ingrese el nombre con que desea guardar el documen
6. 1 nodo n2 Evalua operacion comparativa Desigual nodo evaluarSuma nodo n1 nodo n2 Evalua operacion aritmetica Suma y la concatenacion de cadenas nodo evaluarResta nodo n1 nodo n2 Evalua operacion aritmetica Resta nodo evaluarMult nodo n1 nodo n2 Evalua operacion aritmetica Multiplicacion nodo evaluarDiv nodo n1 nodo n2 Evalua operacion aritmetica Division int evaluarlf enunciadolf e1f Evalua bifurcacion If int evaluarWhile enunciadoWhile ew Evalua bucle While int evaluarFor enunciadoFor ef Evalua bucle For int evaluarPrintCall printCall pc Evalua llamada a imprimir en archivo int imprimirTokens token t Evalua recursivamente lista de tokens a imprimir void error char err int tipo void dato Escribe error semantico hacia cola de errores semanticos void borrarArbol ast tree Funciones de eliminacion logica void borrarSentencias sentencia s Borra nodo sentencia void borrarDeclaracion declaracion d Borra nodo declaracion void borrarAsignacion asignacion a Borrar Asignacion void borrarExpresion expr e Elimina de memoria arbol de expresiones void borrarOperacion operacion o borra nodo operacion de mem void borrarlf enunciadolf e1f borra nodo 1f void borrarWhile enunciadoWhile ew borra nodo While void borrarFor enunciadoFor ef borra nodo for void borrarPrintCall printCall pc borra nodo de llamada a imprimir en archivo void borrarTokens toke
7. 1 de simbolos usando modelo de lista simple M s include lt symtab h gt Diagrama de colaboraci n para symtab id A tipo valorCadena valorEntero siguiente valorBoolean valor siguiente primero actual symtab primero actual Referencia del Archivo ast h Definiciones y estructura del arbol de sintaxis abstracta M s tinelude eonstantes 4 ftinclude symtab h include eplaerr hi Dependencia gr fica adjunta para ast h constantes h imedia ocs progra c compiladores1 proy2 g odzilla src ast h symtab h stdio h string h Este gr fico muestra que archivos directa o indirectamente incluyen a este archivo imedia docs progra c complladores1 proy2 g odzilla src ast c media docs progra c complladores1 proy2 g odzilla src ast h media docs progra c compiladores1 proy2 g odzilla src godzilla h Clases struct variable Clase de almacenamiento de variables en el AST M s struct constante Clase de almacenamiento de constantes en el AST M s struct Operacion Clase de almacenamiento de operaciones en el AST M s struct enunciadolf Clase de almacenamiento de enunciados If en el AST M s struct enunciadoWhile Clase de almacenamiento de enunciados while en el AST M s struct enunciadoFor Clase de almacenamiento de enunciados for en el AST M s struct expr Clase de almacenamiento de raiz de un arbol de expresio
8. Funciones nodo insertarConstante int int Agrega una constante al arbol de expresiones nodo insertarVariable char Agrega una variable al arbol de expresiones nodo insertarCadena char Agrega una cadena al arbol de expresiones nodo insertarOperacion int nodo nodo Inserta una operacion al arbol de expresiones nodo insertarExpresion nodo Agrega un nuevo arbol de expresiones al arbol principal nodo insertarAsignacion char nodo Agrega una asignacion al arbol principal nodo insertarSentencia int nodo int agrega una sentencia al arbol principal nodo insertarDeclaracion char int agrega una nuva declaracion al arbol principal nodo insertarEnunciadolf nodo nodo nodo Agrega un nuevo enunciado if al arbol de sentencias nodo insertarCicloWhile nodo nodo Agrega un nuevo ciclo while ar arbol de sentecias nodo insertarCicloFor char int int nodo Agrega un nuevo ciclo for al arbol de sentencias nodo insertarToken int void Agrega un nuevo token al arbol de sentencias nodo insertarL lamada nodo Agrega un nueva llamada de impresion a yyout al arbol de sentencias nodo insertarLlamadaSymTab int Agrega un nueva llamada de impresion de tabla de simbolos al arbol de sentencias nodo concatenarTokens nodo nodo Concatena tokens para parametros de llamadas nodo concatenarSentencia nodo nodo Concatena sentencias para caminar por estas vo
9. Universidad de San Carlos de Guatemala Facultad de Ingenier a Curso Organizaci n de Lenguajes y Compiladores 1 Segundo Proyecto Documentaci n Erik Vladimir Gir n M rquez Carnet 200313492 Secci n C Guatemala 2 de Mayo de 2006 Introducci n Goazilla es interprete para un lenguaje incrustado dentro de un documento HTML muy al estilo ASP o PHP que permite la generaci n de c digo dentro del mismo archivo HTML mediante instrucci n de impresi n incluyendo adem s un entorno gr fico de desarrollo Esta aplicaci n permite la declaraci n de variables de 3 tipos diferentes asignaci n de stas as como la interpretaci n de construcciones b sica de los lenguajes tipo ALGOL como por ejemplo sentencias if else while y for adem s de permitir evaluar expresiones aritm ticas y booleanas En este documento se incluye un manual de usuario en las primeras 4 p ginas para que sirva de gu a paso a paso al usuario a trav s de los diferentes comandos del programa sin embargo la interfaz es tan simple que permite un f cil manejo de los comandos del programa ya sea desde el rat n o utilizando teclas de acceso r pido Se incluye adem s una referencia t cnica de la p gina 5 en adelante que intenta explicar de una manera objetiva el funcionamiento interno del programa describiendo las estructuras clases y funciones utilizadas en ste adem s de describir las librer as necesarias para la compilaci n del mismo
10. expr KW THEN bloque KW ELSE bloque 2d Crueles Ciclo While 21 GrcLo 19 22 Ciclo w lle KW WHILE expr bloque LS CLOLO NLoOes KW FOR TK 1IDENTIFTCADOR TK OP ASIGNACI N TK NUMERO Kw TO TK NUMERO bloque 24 llamadas Kw PRINT LE APAREN lista COKSMS TK CRAREN TK PUNTOCOMA 29 Kw PRINTSYMTAB TK _APAREN TK CPAREN TK PUNTOCOMA 207 L18tas tOkengi Lista Lokens TE COMA 9 ken Zj token 28 token IK IDENTIFICADOR 29 TK CADENA 30 TK NUMERO 31 bloque KW BEGIN sentencias bloque KW END TK PUNTOCOMA 32 KW _ BEGIN error KW END TK PUNTOCOMA 33 sentencia 34 expr expr and 39 expr KW OP OR expr and 30 6xpr andi Expr igual Sl expr and KW OP AND expr igual 350 expr Igual expr relacional 23 expr aquel TR OP E0 expr relacional 40 expr igual TK OP NOEQ expr relacional Al expr relacional expe suma 42 expr relacional TK OP GI expr suma 43 expr relacional TK OP GET expe suma 44 expe relaci nald Ik OPF LT expe suma 45 expr relacional TK OP LET expe suma 46 expr suma expr mult 47 EPE suma TK OP SUMA exp mult 48 Expr sima TK OP RESTA ExXpD mult 49 expr mult term 50 GX PE MULE TK OP MULT term Spi SXPE MULE T OP DIV term 52 term TK NUMERO 53 KW_TRUE 54 KW_FALSE 55 TK APAREN expr TK CPAREN 56 TK APAREN error TK _CPAREN 57 TK IDENTIFICADOR 58 TK CADENA Descripcion de las librer as utilizadas Para el an lisis l xico sint ctico sem nt
11. ico se utiliz nicamente las librer as est ndares de C stdio stalib string etc Para el desarrollo de la interfaz gr fica se requiri de una librer a que permitiera el desarrollo r pido de ste adem s que permitiera la potabilidad del c digo entre diferentes plataformas Para sto se ten a 3 opciones a Java b GTK cjQT Dado que la opci n de Java no era factible ya que implicaria llamadas a c digo en C lo cual requer a de re implementar el c digo para hacerlo compatible con el JNI lo cual retrasar a el tiempo de desarrollo Ten amos como segunda opci n GTK la cual hubiese podido ser tomada por su alta eficiencia y sin hacer casi ning n cambio al c digo Sin embargo no fue tomada ya que al momento de desarrollo no ten a instaladas las librerias de desarrollo en GTK Se opt entonces por las librerias QT las cuales aunque implicar a cambiar levemente el c digo en C para hacerlo compatible con el ISO C permiti de una manera sencilla r pida y amigable el desarrollo de la aplicaci n adem s de proveer una de las caracteristicas que m s interesaban la portabilidad entre diferentes plataformas Compilacion Requisitos GCC v 3 5 y QT v 3 3 correctamente instalados ademas de las utilidades de desarrollo necesarias make etc Para compilar desde GNU Linux ingresar desde la consola hacia el directorio del c digo fuente y hacer lo siguiente qmake o Makefile godzilla pro qmake 0
12. id crearRaiz nodo ast Genera el nodo raiz para el arbol dado en el segundo parametro como punto de inicio del arbol y punto de meta del recorrido sintactico nodo refNodoHijo int tipo void dato Crea un nodo que refiere al nodo recien creado para sea utilizado por el nodo anterior a este int recorrerArbol ast tree char filename Recorre el arbol y escribe resultado en archivo salida int recorrerSentencia sentencia s Recorre sentencias recursivamente y devuelve resultado acarreado int evaluarSentencia sentencia s Evalua sentencia y selecciona tipo de sentencia a evaluar int evaluarDeclaracion declaracion d Evalua declaracion int evaluarAsignacion asignacion a Evalua asignacion nodo evaluarExpresion expr e Evalua expresion y selecciona tipo de expresion a evaluar nodo evaluarOperacion operacion o Selecciona operacion binaria a evaluar nodo evaluarOr nodo n1 nodo n2 Evalua operacion logica OR nodo evaluarAnd nodo n1 nodo n2 Evalua operacion logica AND nodo evaluarGT nodo n1 nodo n2 Evalua operacion comparativa Mayor Que nodo evaluarGET nodo n1 nodo n2 Evalua operacion comparativa Mayor o 1gual Que nodo evaluarLT nodo n1 nodo n2 Evalua operacion comparativa Menor Que nodo evaluarLET nodo n1 nodo n2 Evalua operacion comparativa Menor o Igual Que nodo evaluarEO nodo n1 nodo n2 Evalua operacion comparativa Igual nodo evaluarNEO nodo n
13. la almacenadora de errores colaerr h c digo Definiciones de la cola almacenadora de errores constantes h c digo Constantes utilizadas por el arbol de sintaxis abstracta eodzilla cpp c digo Implementacion de la Widged principal del GUI egodzilla h c digo Definicion de la Widged principal del GUI main cpp c digo Punto de entrada del programa parserheader h c digo Interfaz entre el GUI y el parser Implementacion de la tabla de simbolos Incluye la symtab c c digo implementacion de rutinas de insercion busqueda y eliminacion Estructuras de la tabla de simbolos Incluyendo rutinas de symtab h c digo e insercion busqueda y eliminacion Lista de componentes Lista de las clases estructuras uniones e interfaces con una breve descripci n asignaci n Clase de almacenamiento de una asignaci n en el AST a Estructura del arbol abstracto de sintaxis AST basico para poder evaluar D construcciones iterativas del lenguaje DockWindow del browser empotrable en la ventana principal heredando de BrowserDock i QDockWindow colaErr Cola de errores constante Clase de almacenamiento de constantes en el AST declaracion Clase de almacenamiento de raiz de una declaracion en el AST enunciadoFor Clase de almacenamiento de enunciados for en el AST enunciadolf Clase de almacenamiento de enunciados If en el AST enunciadoWhile Clase de almacenamiento de enunciados while en el AST expr Clase de almacenamiento de raiz de un arbol de exp
14. n t borra recursivamente listado de tokens Referencia del Archivo browser h Definiciones de la clase browserDock M s tinclude lt adockwindow h gt finclude lt qtextbrowser h gt Dependencia gr fica adjunta para browser h adockwindow h imedia docs progra c compiladores1 proy2 g odzilla src browser h atextbrowser h Este gr fico muestra que archivos directa o indirectamente incluyen a este archivo imedia docs progra c complladores1 proy2 godzilla sto browser cpp imedia docs progra c complladores1 proy2 g odzilla src browser h media docs progra c compiladores1 proy2 g odzilla src godzilla h Clases class BrowserDock DockWindow del browser empotrable en la ventana principal heredando de QDockWindow M s Referencia del Archivo colaerr h Definiciones de la cola almacenadora de errores M s tainclude lt stdio h gt include lt stdlib h gt ftinclude lt string h gt Dependencia gr fica adjunta para colaerr h stdio h imedia docs progra c complladores1 proy2 g odzilla src colaerr h stdlib h string h Este gr fico muestra que archivos directa o indirectamente incluyen a este archivo media docs progra c compiladores1 proy2 godzilla src colaerr h media docs progra c compiladores1 proy2 g odzilla src colaerr c Clases struct tipoError Clase de almacenamiento de error M s struct nodoColaErr Nodo de la cola de errores M s
15. nes en el AST M s struct asignaci n Clase de almacenamiento de una asignacion en el AST M s struct printCall Clase de almacenamiento de una llamada a Print o a vartablasimbolos en el AST M s struct struct struct struct struct struct Definiciones sentencia Clase de almacenamiento de raiz de un arbol de sentencias en el AST siendo a su vez una lista M s token Clase de almacenamiento de raiz de una lista enlazada de Tokens a imprimir con el comando Print en el AST M s declaracion Clase de almacenamiento de raiz de una declaracion en el AST M s nodoHijo Nodo a usar para pasar entre producciones de la sintaxis y paso de expresiones al recorrer un arbol de expresiones M s raiz punto de entrada del AST M s ast Estructura del arbol abstracto de sintaxis AST basico para poder evaluar construcciones iterativas del lenguaje M s define yyout embedout Tipos definidos Aliases de yacc en QT cambiar a nombre de parser a utilizar typedef sentencia sentencia typedef variable variable typedef constante constante typedef operacion operacion typedef enunciadolf enunciadolf typedef enunciadoWhile enunciadoWhile typedef enunciadoFor enunciadoFor typedef expr expr typedef asignacion asignacion typedef printCall printCall typedef token token typedef declaracion declaracion typedef enunciado enunciado typedef nodoHijo nodo typedef ralz raiz typedef ast ast
16. progra c compiladores1 proy2 g odzilla src godzilla h media docs progra c compiladores1 proy2 g odzilla src main cpp Referencia del Archivo parserheader h interfaz entre el GUI y el parser M s Este gr fico muestra que archivos directa o indirectamente incluyen a este archivo media d ocs progra c compiladores1 proy2 g odzilla src godzilla h media d ocs progra c compiladores1 proy2 g odzilla src parserh ead er h media docs progra c compiladores1 proy2 g odzilla src main cpp Ir al c digo fuente de este archivo Funciones int inputparse const char filein const char fileout Interfaz para parser y lexer int generarSalidaError const char fileerr Interfaz para colaerr Referencia del Archivo symiab h Estructuras de la tabla de simbolos Incluyendo rutinas de insercion busqueda y eliminacion M s tinclude constantes h Dependencia gr fica adjunta para symtab h imedia docs progra c complladores1 proy2 g odzilla src symtab h Este gr fico muestra que archivos directa o indirectamente incluyen a este archivo media d ocs progra c compiladores1 proy2 g odzilla src ast h media d ocs progra c compiladores1 proy2 g odzilla src symtab h media d ocs progra c compiladores1 proy2 g odzilla src symtab c Clases struct symbol Nodo de la tabla de simbolos M s struct symtab Tabla de simbolos usando modelo de lista simple M s Tipos definidos
17. resiones en el AST GodZilla nodoColaErr Nodo de la cola de errores Nodo a usar para pasar entre producciones de la sintaxis y paso de expresiones al nonol lie recorrer un arbol de expresiones Operacion Clase de almacenamiento de operaciones en el AST printCall Clase de almacenamiento de una llamada a Print o a vartablasimbolos en el AST raiz Punto de entrada del AST Clase de almacenamiento de raiz de un arbol de sentencias en el AST siendo a su vez sentencia l n una lista symbol Nodo de la tabla de simbolos symtab Tabla de simbolos usando modelo de lista simple tipoError Clase de almacenamiento de error Clase de almacenamiento de raiz de una lista enlazada de Tokens a imprimir con el token gt comando Print en el AST variable Clase de almacenamiento de variables en el AST Referencia de la Estructura ast 2 ictura del arbol abstracto de sintaxis AST basico para poder evaluar construcciones iterativas del o uaje M s include lt ast h gt Diagrama de colaboraci n para ast Referencia de la Estructura colaErr c de errores M s include lt colaerr h gt Diagrama de colaboraci n para colaErr err nodoColaErr err siguiente r 1 1 siguiente y primero ultimo colaErr primero ultimo y Referencia de la Estructura symtab
18. to reci n creado e Luego de haber guardado el documento haga clic en el bot n Analizar Se le pedir nombre para el archivo de salida ingrese cualquier nombre y con extensi n HTML Sino hubieron errores en el an lisis se le mostrar el archivo resultante en la ventana de Browser fig 2 Desea ver el archivo generado Si hubieron errores en el an lisis se le O a mostrar n los errores en la ventana Yes No Cancel de browser fig 3 Godzilla z Godzilla K A Se encontraron errores al leer o interpretar el archivo Desea ver el archivo de error Cancel MANUAL T CNICO Soluci n L gica En esta secci n se hace referencia a las t cnicas utilizadas durante el desarrollo del programa presentando descripciones generales de las estructuras de datos bases y algoritmos utilizados dentro del c digo fuente Si desea ver mas informaci n podr ver la documentaci n generada por Doxygen dentro del directorio doc en el disco de distribuci n o bien podr revisar el c digo fuente Lista de archivos Lista de todos los archivos con descripciones breves ast c c digo Implementacion del arbol de sintaxis abstracta ast h c digo Definiciones y estructura del arbol de sintaxis abstracta browser cpp c digo Implementacion de la clase browserDock browser h c digo Definiciones de la clase browserDock colaerr c c digo Implementacion de la co
Download Pdf Manuals
Related Search
Related Contents
Garmin UNIT NVI 800 User's Manual Amazon KINDLE DX Getting Started Guide Bedienungsanleitung Betriebsanleitung Bosch ダウンロード model mf40 band saw welder MTX202/203 - Chauvin Arnoux X79 Extreme9-en-01 Copyright © All rights reserved.
Failed to retrieve file