12
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

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

  • Upload
    lam

  • View
    23

  • Download
    0

Embed Size (px)

DESCRIPTION

PLP – Extensão da LI2 Implementação de ARRAY. Emanuella Aleixo ( [email protected]) José Antônio ([email protected]) Juliana Mafra ([email protected]) Marcela Balbino ([email protected]) Prof.: Augusto Sampaio. Nova BNF. Programa ::= Comando - PowerPoint PPT Presentation

Citation preview

Page 1: PLP – Extensão da LI2 Implementação de ARRAY

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

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

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

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

5/11

Classes Alteradas

• Tipo (plp.expressions1.util)

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

Page 6: PLP – Extensão da LI2 Implementação de ARRAY

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

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

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

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 getTipoInternoRetorna o tipo do primeiro elemento da lista.

Page 10: PLP – Extensão da LI2 Implementação de ARRAY

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

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

12

Dúvidas

?