|
Programa
|
::= |
"{" [ Declaracoes ";" ] Comando "}"
|
|
Declaracoes
|
::= |
DecInterface
| DecClasse
| Declaracoes "," Declaracoes
|
|
DecInterface
|
::= |
"interface" Id [ "extends" Id ] "{" ListaAssinaturasMetodos "}"
|
|
ListaAssinaturaMetodo
|
::= |
AssinaturaMetodo
| AssinaturaMetodo "," ListaAssinaturaMetodo
|
|
AssinaturaMetodo
|
::= |
modAcesso "proc" Id "(" [ListaDeclaracaoParametro] ")"
|
|
DecClasse
|
::= |
DecClasseAbstrata
| DecClasseConcreta
|
|
DecClasseAbstrata
|
::= |
"abstract" "classe" Id [ "extends" Id ] "{" CorpoClasseAbstrata "}"
|
|
CorpoClasseAbstrata
|
::= |
DecVariavel
| DecProcedimento
| CorpoClasseAbstrata ";" CorpoClasseAbstrata
|
|
DecClasseConcreta
|
::= |
"classe" Id [ "extends" Id ] ["implements" ListaInterface] "{" CorpoClasseConcreta "}"
|
|
ListaInterface
|
::= |
Id
| Id "," ListaInterface
|
|
CorpoClasseConcreta
|
::= |
DecVariavel
| ListaDecProcConcreto
| CorpoClasseConcreta ";" CorpoClasseConcreta
|
|
DecProcedimento
|
::= |
DecProcConcreto
| DecProcAbstrato
| DecProcedimento "," DecProcedimento
|
|
DecProcConcreto
|
::= |
AssinaturaMetodo "{" Comando "}"
|
|
DecProcAbstrato
|
::= |
"abstract" AssinaturaMetodo
|
|
ListaDecProcConcreto
|
::= |
DecProcConcreto
| DecProcConcreto "," ListaDecProcConcreto
|
|
Comando
|
::= |
AtribuicaoOO2
| ComDeclaracao
| While
| IfThenElse
| IO
| Comando ";" Comando
| Skip
| New
| ChamadaMetodoOO2
|
|
Skip
|
::= |
|
|
ComDeclaracao
|
::= |
"{" DecVariavel ";" Comando"}"
|
|
While
|
::= |
"while" Expressao "do" "{" Comando "}"
|
|
IfThenElse
|
::= |
"if" Expressao "then" "{" Comando"}"
| "if" Expressao "then" "{" Comando"}" "else" "{" Comando"}"
|
|
ChamadaMetodoOO2
|
::= |
Expressao "." Id "(" ListaExpressao ")"
| Expressao "." Id "("")"
|
|
ListaExpressao
|
::= |
Expressao
| Expressao "," ListaExpressao
|
|
New
|
::= |
LeftExpression ":=" "new" Id
|
|
AtribuicaoOO2
|
::= |
LeftExpression ":=" Expressao
|
|
IO
|
::= |
"write" "(" Expressao ")"
| "read" "(" Id ")"
|
|
Expressao
|
::= |
Valor
| ExpUnaria
| ExpBinaria
| LeftExpression
| this
| super
| Cast
|
|
Cast
|
::= |
LeftExpression ":=" "(" TipoClasse ")" Expressao
|
|
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
| Expressao "instanceof" Expressao
|
|
LeftExpression
|
::= |
Id AcessoAtributoOO2
|
|
AcessoAtributoOO2
|
::= |
LeftExpression.Id
| "this."Id
| "super."Id
|
|
DecVariavel
|
::= |
Tipo Id "=" Expressao
| DecVariavel "," DecVariavel
| Tipo Id ":=" "new" Id
|
|
ListaDeclaracaoParametro
|
::= |
Tipo Id
| Tipo Id "," ListaDeclaracaoParametro
|
|
Tipo
|
::= |
TipoClasse
| TipoPrimitivo
|
|
TipoClasse
|
::= |
Id
|
|
TipoPrimitivo
|
::= |
"string"
| "int"
| "boolean"
|
|
modAcesso
|
::= |
"public"
| "private"
|