1 / 12

PLP – Extensão da LI2 Implementação de ARRAY

PLP – Extensão da LI2 Implementação de ARRAY. Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com) Prof.: Augusto Sampaio. Nova BNF. Programa ::= Comando

lam
Download Presentation

PLP – Extensão da LI2 Implementação de ARRAY

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PLP – Extensão da LI2Implementação de ARRAY Emanuella Aleixo ( emanuellaaleixo17@gmail.com)José Antônio (jamrr@cin.ufpe.br)Juliana Mafra (j_mafra@hotmail.com)Marcela Balbino (marcelabalbinosm@gmail.com)Prof.: Augusto Sampaio

  2. Nova BNF Programa ::= Comando Comando ::= Atribuicao                        | ComandoDeclaracao                        | While                        | IfThenElse                        | IO                        | Comando ";" Comando                        | Skip                        | ChamadaProcedimento Skip ::= Atribuicao ::=  IdAbstrato “:=” Expressao IdAbstrato ::=  Id | Indexacao Expressao ::= Valor | ExpUnaria | ExpBinaria | IdAbstrato Valor ::= ValorConcreto ValorConcreto ::= ValorInteiro | ValorBooleano | ValorString | ValorArray ValorArray ::= “{” ListaExpressao “}”

  3. Nova BNF (cont.) ExpUnaria ::= "-" Expressao | "not" Expressao | "length" Expressao ExpBinaria ::= Expressao "+" Expressao                         | Expressao "-" Expressao                         | Expressao "and" Expressao                         | Expressao "or" Expressao                         | Expressao "==" Expressao                         | Expressao "++" Expressao Indexacao ::= Id “[“ Expressao “]” ComandoDeclaracao :: = "{" Declaracao ";" Comando "}" Declaracao ::= DeclaracaoVariavel                         | DeclaracaoProcedimento                         | DeclaracaoComposta DeclaracaoVariavel ::= "var" Id "=" Expressao  | "array" Id "=" Expressao DeclaracaoComposta ::= Declaracao "," Declaracao

  4. Nova BNF (cont.) DeclaracaoProcedimento ::= "proc" Id "(" [ ListaDeclaracaoParametro ] ")" "{" Comando "}" ListaDeclaracaoParametro ::= Tipo Id | Tipo Id "," ListaDeclaracaoParametro Tipo ::= "string" | "int" | "boolean" | "TipoArray" While ::= "while" Expressao "do" Comando IfThenElse ::= "if" Expressao "then" Comando "else" Comando IO ::= "write" "(" Expressao ")" | "read" "(" IdAbstrato ")" ChamadaProcedimento ::= "call" Id "(" [ ListaExpressao ] ")"  ListaExpressao ::= Expressao | Expressao, ListaExpressao

  5. Classes Alteradas • Tipo (plp.expressions1.util)- private Tipo tipoInterno; - Novo tipo -> TIPO_ARRAY - public boolean eArray()

  6. Classes Alteradas • Lista (plp.imperative1.util) Foi alterada da forma funcional (head, tail) para forma indexada, para melhor representação de array.

  7. Classes Alteradas • Atribuicao (plp.imperative1.command) - Método executar : a[2+3]:= Expressao Checa se o IdAbstrato é uma Indexação * Recupera, em uma lista, os elementos do array * Seta o índice * Valida o índice * lista.set(indice, expressao.avaliar(ambiente)); * ambiente.changeValor(indexacao.getId(), lista);

  8. Classes Alteradas • DeclaracaoVariavel (plp.imperative1.declaration)- private boolean isArray; (no const. isArray = false) - Método checaTipoif (isArray) { Tipo tipoInterno = ((ValorArray)parametro2).getTipoInterno(ambiente); ambiente.map(parametro1, parametro2.getTipo(ambiente)); parametro1.getTipo(ambiente).setTipoInterno(tipoInterno); }

  9. Classes Criadas • IdAbstrato (plp.expressions2.expressions) • ValorArray (plp.imperative3)- extends ValorConcreto - Método checaTipo Checa se os elementos da ListaExpressao são todos do mesmo tipo. Ex.: {1, 2+3, 5, true}- Método getTipoInterno Retorna o tipo do primeiro elemento da lista.

  10. Classes Criadas • ValorArray (plp.imperative3) (cont.)- Método get (int indice) Retorna o elemento correspondente.- Método size Retorna o tamanho da lista, ou seja, o número de elementos do array.- Método set(int indice, Expressao exp) Armazena o valor da expressão na posição indicada pelo índice.

  11. Classes Criadas • Indexacao (plp.imperative3)- implements IdAbstrato- Método avaliarValorArray lista = (ValorArray) amb.get(id); indice = getIndice(amb); Valida o índice return (Valor) lista.get(indice);- Método checaTipoid.checaTipo(amb) && exp.checaTipo(amb) && exp.getTipo(amb).eInteiro()

  12. Dúvidas ?

More Related