Top Banner
Emanuella Aleixo ( [email protected]) José Antônio ([email protected]) Juliana Mafra ([email protected]) Marcela Balbino ([email protected]) Prof.: Augusto Sampaio PLP – Extensão da LI2 Implementação de ARRAY
12

Emanuella Aleixo ( [email protected]) José Antônio ([email protected]) Juliana Mafra ([email protected]) Marcela Balbino ([email protected])

Apr 07, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

Emanuella Aleixo ( [email protected])José Antônio ([email protected])

Juliana Mafra ([email protected])Marcela Balbino ([email protected])

Prof.: Augusto Sampaio

PLP – Extensão da LI2Implementação de ARRAY

Page 2: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

2/11

Nova BNFPrograma ::= Comando

Comando ::= Atribuicao                        | ComandoDeclaracao                        | While                        | IfThenElse                        | IO                        | Comando ";" Comando                        | Skip                        | ChamadaProcedimento

Skip ::= Atribuicao ::=  IdAbstrato “:=” ExpressaoIdAbstrato ::=  Id | IndexacaoExpressao ::= Valor | ExpUnaria | ExpBinaria | IdAbstrato Valor ::= ValorConcreto ValorConcreto ::= ValorInteiro | ValorBooleano | ValorString | ValorArrayValorArray ::= “{” ListaExpressao “}”

Page 3: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

3/11

Nova BNF (cont.)ExpUnaria ::= "-" Expressao | "not" Expressao | "length" ExpressaoExpBinaria ::= 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 "=" ExpressaoDeclaracaoComposta ::= Declaracao "," Declaracao

Page 4: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

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" ComandoIfThenElse ::= "if" Expressao "then" Comando "else" ComandoIO ::= "write" "(" Expressao ")" | "read" "(" IdAbstrato ")" ChamadaProcedimento ::= "call" Id "(" [ ListaExpressao ] ")"  ListaExpressao ::= Expressao | Expressao, ListaExpressao

Page 5: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

5/11

Classes Alteradas

• Tipo (plp.expressions1.util)

- private Tipo tipoInterno; - Novo tipo -> TIPO_ARRAY - public boolean eArray()

Page 6: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

6/11

Classes Alteradas

• Lista (plp.imperative1.util)

Foi alterada da forma funcional (head, tail) para forma indexada, para melhor representação de array.

Page 7: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

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);

Page 8: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

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);}

Page 9: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

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.

Page 10: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

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.

Page 11: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

11/11

Classes Criadas

• Indexacao (plp.imperative3)- implements IdAbstrato- Método avaliar

ValorArray lista = (ValorArray) amb.get(id);indice = getIndice(amb);Valida o índicereturn (Valor) lista.get(indice);

- Método checaTipoid.checaTipo(amb) &&exp.checaTipo(amb) && exp.getTipo(amb).eInteiro()

Page 12: Emanuella Aleixo ( emanuellaaleixo17@gmail.com) José Antônio (jamrr@cin.ufpe.br) Juliana Mafra (j_mafra@hotmail.com) Marcela Balbino (marcelabalbinosm@gmail.com)

12

Dúvidas

?