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
|
Comando “;” 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 ::=
“-“ Expressao
|
“not” Expressao
|
“length” Expressao
ExpBinaria ::=
Expressao “+” Expressao
|
Expressao “-“ Expressao
|
Expressao “and” Expressao
|
Expressao “or” Expressao
|
Expressao “==” Expressao
|
Expressao “++” Expressao
LeftExpression ::= Id | AcessoAtributo
AcessoAtributo ::= LeftExpression.Id | this.Id
DecClasse ::=
“classe” Id “{“ DecVariavel “;” DecProcedimento “}”
|
DecClasse “,” DecClasse
DecVariavel ::=
Tipo Id “=” Expressao
|
DecVariavel “,” DecVariavel
|
Tipo Id “:=” “new” Id
DecProcedimento
::=
“proc” Id “(“ ListaDeclaracaoParametro “)” “{“ Comando “}”
|
DecProcedimento “,” DecProcedimento
ListaDeclaracaoParametro ::= Tipo Id | Tipo Id “,” 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