A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino

Apresentações semelhantes


Apresentação em tema: "Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino"— Transcrição da apresentação:

1 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 PLP – Extensão da LI2 Implementação de ARRAY

2 2/11 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 3/11 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 4/11 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 5/11 Classes Alteradas Tipo (plp.expressions1.util) - private Tipo tipoInterno; - Novo tipo -> TIPO_ARRAY - public boolean eArray()

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

7 7/11 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 8/11 Classes Alteradas DeclaracaoVariavel (plp.imperative1.declaration) - private boolean isArray; (no const. isArray = false) - Método checaTipo if (isArray) { Tipo tipoInterno = ((ValorArray)parametro2).getTipoInterno(ambiente); ambiente.map(parametro1, parametro2.getTipo(ambiente)); parametro1.getTipo(ambiente).setTipoInterno(tipoInterno); }

9 9/11 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 10/11 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 11/11 Classes Criadas Indexacao (plp.imperative3) - implements IdAbstrato - Método avaliar ValorArray lista = (ValorArray) amb.get(id); indice = getIndice(amb); Valida o índice return (Valor) lista.get(indice); - Método checaTipo id.checaTipo(amb) && exp.checaTipo(amb) && exp.getTipo(amb).eInteiro()

12 12 Dúvidas ?


Carregar ppt "Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino"

Apresentações semelhantes


Anúncios Google