-
Notifications
You must be signed in to change notification settings - Fork 1
Home
O objetivo geral deste trabalho é o desenvolvimento de uma linguagem de programação compilada – i.e., que crie programas numa linguagem de programação genérica (Java, C++, Python, ...) – que permita o desenho de imagens, usando como abstração o desenho livre com canetas/marcadores. A ideia segue a abstração inerente à biblioteca turtle do Python.
Assim, temos uma ou mais canetas que podem estar levantadas ou pousadas sobre o 'papel', cada uma com uma orientação (i.e. estão 'viradas' num determinado sentido) e que podem ser movimentadas (se pousadas, irão desenhar) para a frente, ou trás, e ao quais se pode mudar as suas propriedades (orientação, cor, espessura, padrão, etc.). A espessura do traço da caneta é determinado por uma propriedade e pela 'pressão' exercida sobre o papel (pressão zero, traço de 1 pixel, pressão de 1 traço com o valor da propriedade).
- Tradutor de linguagem
- No nosso caso, recebe os ficheiros de exemplo e traduz para
pyoujavaoucpp
Pdraw -> Java + ST -> Python
- Análise semântica
- Geração de código: baseado em StringTemplate
Cria o ficheiro .py.
- Alterar para que receba um ST que representa o programa na totalidade
- Alterar para ler de um ficheiro em vez do
System.in - Chama o parser e caso exista erros diz quais são e acaba a execução
- Faz o mesmo para o lexer
- Gera código após essas validações
- Parser
- Lexer
- Compiler
- Devem ser decididos os diversos tipos de dados inerentes à linguagem
- Por exemplo,
pendeve ser um tipo primitivo - Deve existir mecanismos de comparação de tipos
- Extensão de ficheiro
.ipdraw - É necessária uma gramática e um visitor adequados
- O import é feito no interpretador, não no compilador!
- O parsing é feito em runtime, ou seja, o visitor, o lexer e o parser são na linguagem destino (neste caso, Python)
Esta merda é valorizada!! Toca a usar, bitches.