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