- Bruno Roberto
- Lucas Andreoni
- Nathália Bacalhau
- Silas Nunes
A criação de formulários personalizados é uma tarefa comum, mas frequentemente tediosa, no ambiente de trabalho e acadêmico. Este projeto tem como objetivo facilitar essa tarefa por meio de uma linguagem de domínio específico (DSL) que permite a definição e geração de formulários de maneira prática e eficiente. A DSL fornece uma interface simplificada para criar títulos, descrições, itens de entrada de texto, múltipla escolha e cabeçalhos de seção, além de possibilitar a visualização e exportação do formulário em formato JSON.
A linguagem foi projetada para permitir a criação de formulários de maneira declarativa, utilizando comandos claros e intuitivos. Cada comando corresponde a uma ação específica no formulário:
TITLE
: Define o título do formulário.DESCRIPTION
: Adiciona uma descrição ao formulário.ITEM TEXT
: Adiciona um item de entrada de texto ao formulário.ITEM MULTIPLE_CHOICE
: Adiciona um item de múltipla escolha com opções específicas.ITEM SECTION_HEADER
: Adiciona um cabeçalho de seção ao formulário.SHOW
: Exibe o formulário gerado no console.EXPORT
: Exporta o formulário gerado para um arquivo JSON.
TITLE 'Cadastro pessoal';
DESCRIPTION 'Formulário para cadastro de informações pessoais';
ITEM TEXT (title, isRequired) VALUES ('Insira seu nome', 'true');
ITEM MULTIPLE_CHOICE (title, isRequired, choices) VALUES ('Escolha uma opção', 'false', 'Opção 1', 'Opção 2', 'Opção 3');
ITEM SECTION_HEADER (title, text) VALUES ('Informações adicionais', 'Por favor, leia as instruções');
SHOW;
EXPORT;
- Python 3.8 ou superior
- Biblioteca ANTLR4 para Python
- Adicione a biblioteca ANTLR ao ambiente:
wget https://www.antlr.org/download/antlr-4.13.2-complete.jar mv antlr-4.13.2-complete.jar antlr.jar
- Instale o runtime do ANTLR e outras bibliotecas necessárias via pip:
pip install antlr4-python3-runtime
- Crie um arquivo de entrada com os comandos na linguagem DSL, por exemplo,
input.txt
. - Execute o programa principal passando o arquivo como entrada:
python main.py < input.txt
- O formulário gerado será exibido no console e exportado para
output.json
.
O formulário gerado será exportado no seguinte formato:
{
"info": {
"title": "Cadastro pessoal",
"description": "Formulário para cadastro de informações pessoais"
},
"items": [
{
"type": "TEXT",
"title": "Insira seu nome",
"isRequired": "true",
"index": 0
},
{
"type": "MULTIPLE_CHOICE",
"title": "Escolha uma opção",
"isRequired": "false",
"choices": ["Opção 1", "Opção 2", "Opção 3"],
"index": 1
}
]
}
- ANTLR4: Para análise léxica e sintática.
- Python: Para implementação do compilador/interpreter e execução das ações semânticas.
Para dúvidas ou contribuições, entre em contato com qualquer membro da equipe.