Orientada a Objetos 1

  • Estende Linguagem Imperativa 2 com classes e objetos
  • Procedimentos passam a ocorrer exclusivamente como métodos das classes
  • O contexto também é estendido com:
    • um mapeamento de identificadores (nomes de classes) em definições de classes
  • Um programa é um comando

Fontes

Programa ::= “{“ DecClasse “;” Comando “}”

Comando ::= Atribuicao
       | ComDeclaracao
       | While
       | IfThenElse
       | IO
       | Sequencial “;” Comando
       | Skip
       | New
       | ChamadaMetodo

Skip ::=

ComDeclaracao ::= “{“ DecVariavel “;” Comando “}”

While ::= “while” Expressao “do” “{“ Comando “}”

IfThenElse ::= “if” Expressao “then” “{“ Comando “}”
       | “if” Expressao “then” “{“ Comando “}” “else” “{“ Comando “}”

ChamadaMetodo ::= Expressao “.” Id “(“ ListaExpressao “)” | Expressao “.” Id “(“”)”

ListaExpressao ::= Expressao | Expressao “,” ListaExpressao

New ::= LeftExpression “:=” “new” Id

Atribuicao ::= LeftExpression “:=” Expressao

IO ::= Write | Read

Expressao ::= Valor
       | ExpUnaria
       | ExpBinaria
       | LeftExpression
       | This

Valor ::= ValorConcreto

ValorConcreto ::= ValorInteiro
       | ValorBooleano
       | ValorString
       | ValorNull

ExpUnaria ::= ExpMenos
       | ExpNot
       | ExpLength

ExpBinaria ::= ExpSoma
       | ExpSub
       | ExpAnd
       | ExpOr
       | ExpEquals
       | ExpConcat

LeftExpression ::= Id | AcessoAtributo

AcessoAtributo ::= AcessoAtributoId | AcessoAtributoThis

DecClasse ::= DecClasseSimples
       | DecClasseComposta

DecVariavel ::= SimplesDecVariavel
       | CompostaDecVariavel
       | DecVariavelObjeto

DecProcedimento ::= DecProcedimento
       | DecProcedimentoComposta

ListaDeclaracaoParametro ::= DecParametro | ListaDeclaracaoParametro

Tipo ::= TipoClasse | TipoPrimitivo

TipoClasse ::= Id

TipoPrimitivo ::= TipoPrimitivo

Parser

OO1
bnfOrientadaObjetos1Real

Classes Auxiliares

Procedimento
ChamadaProcedimento
Declaracao
ClasseJaDeclaradaException
ClasseNaoDeclaradaException
ObjetoJaDeclaradoException
ObjetoNaoDeclaradoException
ProcedimentoJaDeclaradoException
ProcedimentoNaoDeclaradoException
VariavelJaDeclaradaException
VariavelNaoDeclaradaException
EntradaNaoFornecidaException
EntradaInvalidaException
ValorRef
AmbienteOO1
AmbienteCompilacaoOO1
AmbienteExecucaoOO1
ContextoCompilacaoOO1
ContextoExecucaoOO1
DefClasse
Objeto
ContextoObjeto
ListaValor
ListaTipo

Testes com o JUnit

AllTests
OO1ParserTest

Programas utilizados nos testes

teste1
teste2
teste3
teste4
teste5
teste6
teste7