NMec | Name | Contribution (%) | Detailed contribution [1] | |
---|---|---|---|---|
73150 | Gonçalo Maranhão | goncalo.rodrigues@ua.pt | 22,6% | gramática principal(16,6%) criação de código java swing(backend estático)(100%) geração de código(10%) examples (50%) testes (20%) |
73211 | Mariana Gomes | marianapinheiro@ua.pt | 0% | |
90327 | Diogo Correia | diogo.correia99@ua.pt | 26,7% | gramática principal (33,6%) análise semântica gramática principal (20%) geração de código (80%) gramática secundária (50%) análise semântica gramática secundária (70%) interpretação/geração de código linguagem secundária (100%) exemplos (50%) testes(20%) criação de scripts(100%) |
92975 | Leandro Rito | leandro.rito@ua.pt | 16,9% | gramática principal (16,6%) análise semântica gramática principal (40%) testes (20%) |
93427 | Lara Rodrigues | laravieirarodrigues@ua.pt | 16,9% | gramática principal (16,6%) análise semântica gramática principal(40%) gramática secundária(50%) análise semântica gramática secundária (30%) testes (20%) relatório (100%) |
93460 | João Fernandes | joaogilfernandes@ua.pt | 16,9% | gramática principal(16,6%) geração de código(10%) testing (20%) |
[1] Topics:
gramática principal (%)
análise semântica gramática principal (%)
geração de código (%)
gramática secundária (%)
análise semântica gramática secundária (%)
interpretação/geração de código linguagem secundária (%)
exemplos (%)
testes(%)
relatório (%)
criação de código java swing("backend estático")(100%)
criação de scripts(%)
Todo o código presente na master conta para avalição excepto a pasta JavaGraphicsExample e a pasta figure_making que apenas serviram de material de apoio à realização do projeto.
Na pasta doc os ficheiros fullExampleMainLanguage.txt e LFA_Geometrics_ExemploLinguagemPrincipal.txt representam ambições do que seria o nosso programa caso tivéssemos conseguido fazer tudo o que idealizámos. O princípio do projeto foi realizado com a ambição de conseguir fazer tudo o que está presente nesses ficheiros.
A primeira coisa a fazer é entrar na src
e executar o antlr4-build.
Ainda no src
, se quiser correr os exemplos example1.geo
e test.geo
, execute o comando:
java Geometrics.GeometricsMain ../examples/fileGeo.geo NomeDoFicheiro
, onde fileGeo
é o nome do programa .geo e NomeDoFicheiro
é o nome do ficheiro java gerado automaticamente.
Para executar os dois ficheiros de teste da linguagem secundária seria ``java Beaver.BeaverMain ../doc/Beaver/working/nome_do_ficheiro`
No ponto 1. encontram-se dois exemplos funcionais da linguagem secundária.
-
geometrics-lfa-14/doc/Beaver/working
No ficheiro
working-test1.bvr
é criada a figura de um stickman que é constituido por diversas figuras que estão dentro de um container retangular.
No ficheiroflags.bvr
são criadas figuras de duas bandeiras que, assim como no exemplo acima, são constituidas por diversas figuras.
No ponto 2. encontam-se 2 exemplos funcionais da linguagem principal. Em ambos os exemplos, pode-se fazer play/pause com as teclas P/S, respetivamente.
-
geometrics-lfa-14/examples
No ficheiro
test.geo
são criados 6 circulos pretos, após a primeira colisão com a border alteram a cor e vão alternando a troca de cor a cada colisão, simultaneamente, a cada colisão com a border o retangulo que está no centro da figura vai rodando segundo um determinado angulo.No ficheiro
example1.geo
existem dois retangulos que quando colidem se movem em direções opostos, em seguida, quando estes retangulos chegam ao border ficam prenchidos e 4 novas figuras entram no board. Dois circulos que se movem, na vertical na mesma direção e após colidirem vão em direções opostas em direção à border, aquando desta colisão os circulos ficam prenchidos e os outros dois, que até ao momento estão parados nos cantos superior esquerdo e inferior direito do board, começam a andar na diagonal até o seu centro ser (0,0) e ficam parados.
O objetico era ter-mos feito análise semântica com especificação de erros para ambas as linguagens, mas por falta de tempo não conseguimos terminar a análise semântica da linguagem principal. No ponto 1. encontram-se os testes para a linguagem secundária.
As mensagens de erro aparecem com a especificação da linha e da coluna onde ocorrem no código.
Nas imagens que incluimos no relatório são visiveis a maioria das mesagens de erro criadas.
-
geometrics-lfa-14/src/Beaver/errors
Para compilar:
dentro do diretório :geometrics-lfa-14/src/Beaver/
utilizar o comando:java BeaverMain ../../doc/Beaver/errors/nome_do_ficheiro
Neste exemplo (error-test1.bvr) são detetados vários erros de semântica relacionados com as figuras.
Tal como podemos observar as mensagens de erro indicam especificamente quais foram os erros cometidos.Este exemplo (error-test2.bvr) testa especificamente erros relacionados com as propriedades de cor.
-
Palavras reservadas das linguagens:
Secundária:
containers, Color, Pallete, Rectangle, Number, Figure, Circle, Line, Triangle, Point,
size,angle,color, border, filled,
contains,
startingPoint, endingPoint, center,
pi,rad, º
Principal:
use, Color, Board,
start, end , List, at, Text, set,
pos,posX,posY,
Figure, Line, Triangle, Rectangle, Circle,
display, width, heigth,thickness, color, collision, exposed, depth, hidden
true, false,
center,
add, remove,
draw, write,
Time, ms,
Angle, º, deg, pi, rad,
each, while,
Task, from, where is, close -
Comentários:
Linguagem secundária:!!
Linguagem principal :/-
O projeto não está a funcionar como gostariamos que estivesse e apresenta uma mistura entre as caracteristicas obrigatórias e as desejaveis que sabemos que não é o ideal, mas fizemos o máximo esforço possível para recuperar o tempo perdido após a desistência de um dos membros do grupo.
Por razões que nos são desconhecidas, quando o programa apresenta as animações, fica com quebras de fps. Para a animação ficar mais smooth, inexplicavelmente, se mexer no rato (continuamente) dentro do board a situação melhora.
Na última aula (21/06/2021) estivemos a resolver com o professor a melhor maneira de compilar e de correr os exemplos, visto que, anteriormente tinhamos feito de forma a ter que se correr um script que pedia para alterar a bashrc.
Sendo que, não faria sentido ter de mudar a bashrc, o último commit é apenas referente a pequenas mudaças de código e localização de pastas para facilitar a compilação e execução do programa.