Skip to content

otaviobp/mc910-proj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 

Repository files navigation

Grupo 18
061358 - Gustavo Serra Scalet
063462 - Otávio Busatto Pontes

Usamos para gerar o lexer e parser a ferramenta PLY, que usa a linguagem de programação Python. Implementamos um parser que trata todas as situações ilustradas no exemplo.cpl colocado no site da disciplina, exibindo uma página de notícias semelhante a página colocada no site da disciplina. Fizemos também o parser de algumas formatações de texto seguindo o padrão wiki. 
Para isso criamos 2 parsers. Um que trata o arquivo cpl, independente da formatação wiki. E outro que trata a formatação wiki em uma string. A vantagem dessa abordagem é que caso se deseje usar o cpl com outro tipo de formatação de textos isso é possível. E o mesmo ocorre se quisermos usar o parser de wiki para alguma outra aplicação. 
Para exibir a notícia tomamos o seguinte padrão: as notícias são exibidas na ordem que aparecem em structure e são exibidas nas colunas indicadas no colchete do item. Caso a coluna esteja ocupada ou então seja menor que a coluna da notícia anterior, uma nova linha é criada. Quando existe um campo text no content da notícia, criamos um link no título, que abre uma janela, que contém seu o título e text. Criamos uma extensão ao cpl, permitindo que se manipule o conteúdo exibido na janela exibida ao clicar no título. basta iniciar uma declaração com window.noticia.campo. Com isso o campo indicado da noticia é exibido na janela. O arquivo exemplo_completo2.cpl usa esse recurso. Outra extensão é que nosso arquivo cpl não está limitado aos campos indicados no arquivo de exemplo. Qualquer campo pode ser criado e adicionado ao cpl e exbido normalmente no espaço da notícia. Isso pode ser notado também no exemplo_completo2.cpl.
Outra extensão é a criação do campo full_image. Nesse campo a imagem é exibida em seu tamanho natural e não reduzida ao lado do texto. 
	
Executando o Parser:
Entre na pasta src e rode:
./cplhtml.py path/nome_arquivo.cpl
O programa cria um arquivo html chamado path/nome_arquivo.html com o conteúdo gerado. As imagens e estilos css devem estar na mesma pasta que o nome_arquivo.cpl para funcionar.
Para rodar nosso exemplo rode:
./cplhtml.py ../files/exemplo_completo2.cpl

Arquivos do projeto

|-- README           # Esse informativo
|-- files            # arquivos gerais
|   |-- exemplo.cpl  # Arquivo de entrada dado pelo professor
|   |-- exemplo_completo.cpl #outros exemplos
|   |-- exemplo_completo2.cpl
|   |-- helio.jpg #Arquivos uteis
|   |-- sergio.jpg
|   |-- style.css
|   |-- styleJanelas.css
|   |-- virada.jpg
|   `-- xuxa.jpg
`-- src
    |-- color.py        # Auxliar para colorir saida no terminal
    |-- cplhtml.py      # Converte o dicionario gerado pelo parser em codigo html
    |-- cpllexer.py     # Lexer
    |-- cplparser.py    # parser
    |-- stringhtml.py   # Converte o dicionario gerado pelo stringparser em html
    |-- stringlexer.py  # Lexer de string. Segue os padroes de wiki para formatação de texto
    |-- stringparser.py # Parser de string. 

About

Projeto da disciplina de compiladores mc910 - 2009

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages