Domain specific language generation based on a XML schema
Autor(a) principal: | |
---|---|
Data de Publicação: | 2019 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | http://hdl.handle.net/10400.21/9682 |
Resumo: | Dissertação para obtenção do grau de mestre em Engenharia Informática e de Computadores |
id |
RCAP_27dcef1b43ec7ff3e30add32127ead1b |
---|---|
oai_identifier_str |
oai:repositorio.ipl.pt:10400.21/9682 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Domain specific language generation based on a XML schemaXMLeXtensive markup languageXSDeXtensive markup language schema definitionAutomatic code generationGeração automática de códigoFluent interfaceInterface fluenteDomain specific language.Linguage specífica de domínioDissertação para obtenção do grau de mestre em Engenharia Informática e de ComputadoresThe use of markup languages is recurrent in the world of technology, with HyperText Markup Language (HTML) being the most prominent one due to its use in theWeb. The requirement of tools that can automatically build well formed documents with good performance is clear. Yet, the most used solution is template engines, which neither ensures well-formed documents nor presents good performance, due to the use of external text files. To tackle the first issue we propose to define HTML templates as first-class functions instead of using text files. To that end, these HTML template functions use a Java Domain Specific Language (DSL) to write HTML. Our main goal is to create the required tools that automatically generate that DSL based on its language definition from an eXtensive Markup Language Schema Definition (XSD) file. The resulting DSL should enforce the restrictions of the given language which are specified in the XSD file. By removing the use of text files we are also suppressing the file load overhead and reducing String manipulation, which in turn increases the overall performance and solves the second issue. My proposal, named xmlet, includes a set of tools that are able to: 1) parse and extract the rules from a XSD file, 2) generate the adequate classes and methods to define the DSL that reflects the language rules, 3) handle the use of the resulting DSL through the implementation of the Visitor pattern. Finally we validated this solution not only for the HTML language, but also with the Android layouts and the regular expressions languages. By comparing the developed solution to some state-of-art solutions, including template engines and some other solutions with specific innovations, we obtained very favorable results with the suggested solution being the best performancewise in all the tests we performed. These results are important, specially considering that apart from being a more efficient solution it also introduces validations of the language usage based on its syntax definition.Actualmente a utilização de linguagens de markup é recorrente no mundo da tecnologia, sendo o HTML a linguagem mais utilizada graças à sua utilização no mundo da Web. Tendo isso em conta é necessário que existam ferramentas capazes de escrever documentos bem formados de forma eficaz. No entanto, a abordagem mais utilizada, template engines, tem dois problemas principais: 1) não garante a geração de documentos bem formados, 2) não garante um bom desempenho, devido à utilização de ficheiros de texto como ficheiros de template. Para resolver o primeiro problema propomos que um template HTML passe a ser definido como uma first-class function. Para isto é necessário criar uma linguagem específica de domínio para que estas funções possam manipular a linguagem HTML. O nosso objectivo principal é criar as ferramentas necessárias para gerar linguagens específicas de domínio com base no ficheiro de definição da linguagem, explícito num ficheiro XSD. A linguagem de domínio gerada deve também garantir que as restrições da respectiva linguagem são verificadas. Removendo os ficheiros textuais que definem templates minimizam-se também os problemas de desempenho introduzidos pelo carregamento de ficheiros de texto e reduzem-se o número de operações sobre Strings. A minha proposta, chamada xmlet, inclui ferramentas que possibilitam: 1) a análise e a extração de informação de um ficheiro XSD, 2) a geração de classes e métodos que definem uma linguagem específica de domínio que reflete as regras presentes no ficheiro XSD, 3) a abstração da utilização da linguagem de domínio gerada, com a utilização do padrão Visitor. Para validar esta solução criaram-se linguagens de domínio não só para HTML como também para a linguagem utilizada para definir layouts visuais para Android e para a linguagem das expressões regulares. Comparando a solução desenvolvida com soluções semelhantes, incluindo template engines e algumas soluções com inovações face à abordagem dos template engines, obtemos resultados favoráveis. Verificamos que a solução sugerida é a mais eficiente em todos os testes feitos. Estes resultados são importantes, especialmente considerando que apesar de ser a solução mais eficiente introduz também a verificação das restrições da linguagem utilizada tendo em conta a sua definição sintática.Instituto Superior de Engenharia de LisboaCarvalho, Fernando Miguel Gamboa deRCIPLDuarte, Luís Carlos da Silva2019-03-07T20:28:43Z2019-02-012019-02-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10400.21/9682TID:202186300engDUARTE, Luís Carlos da Silva - Domain specific language generation based on a XML schema. Lisboa: Instituto Superior de Engenharia de Lisboa, 2019. Dissertação de mestrado.info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-08-03T09:58:39Zoai:repositorio.ipl.pt:10400.21/9682Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T20:18:12.590651Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Domain specific language generation based on a XML schema |
title |
Domain specific language generation based on a XML schema |
spellingShingle |
Domain specific language generation based on a XML schema Duarte, Luís Carlos da Silva XML eXtensive markup language XSD eXtensive markup language schema definition Automatic code generation Geração automática de código Fluent interface Interface fluente Domain specific language. Linguage specífica de domínio |
title_short |
Domain specific language generation based on a XML schema |
title_full |
Domain specific language generation based on a XML schema |
title_fullStr |
Domain specific language generation based on a XML schema |
title_full_unstemmed |
Domain specific language generation based on a XML schema |
title_sort |
Domain specific language generation based on a XML schema |
author |
Duarte, Luís Carlos da Silva |
author_facet |
Duarte, Luís Carlos da Silva |
author_role |
author |
dc.contributor.none.fl_str_mv |
Carvalho, Fernando Miguel Gamboa de RCIPL |
dc.contributor.author.fl_str_mv |
Duarte, Luís Carlos da Silva |
dc.subject.por.fl_str_mv |
XML eXtensive markup language XSD eXtensive markup language schema definition Automatic code generation Geração automática de código Fluent interface Interface fluente Domain specific language. Linguage specífica de domínio |
topic |
XML eXtensive markup language XSD eXtensive markup language schema definition Automatic code generation Geração automática de código Fluent interface Interface fluente Domain specific language. Linguage specífica de domínio |
description |
Dissertação para obtenção do grau de mestre em Engenharia Informática e de Computadores |
publishDate |
2019 |
dc.date.none.fl_str_mv |
2019-03-07T20:28:43Z 2019-02-01 2019-02-01T00:00:00Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10400.21/9682 TID:202186300 |
url |
http://hdl.handle.net/10400.21/9682 |
identifier_str_mv |
TID:202186300 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.relation.none.fl_str_mv |
DUARTE, Luís Carlos da Silva - Domain specific language generation based on a XML schema. Lisboa: Instituto Superior de Engenharia de Lisboa, 2019. Dissertação de mestrado. |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Instituto Superior de Engenharia de Lisboa |
publisher.none.fl_str_mv |
Instituto Superior de Engenharia de Lisboa |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799133445836767232 |