Diseño de Compiladores

En este diario se debe poner la gramática del lenguaje que se desea implementar a lo largo del semestre.


clase -> class identificador [extends identificador] declaraciones

declaraciones -> declaracion declaraciones
        | epsilon

declaracion -> modac tipo identificador metodoDecl

modac -> public
       | private

tipo -> int
      | bool
      | void

metodoDecl -> metodoConstructor
     | epsilon
metodoConstructor -> paramsFormal metodoCuerpo

paramsFormal -> parametro parametros
       | epsilon

parametro -> tipo identificador

parametros -> parametro parametros
     | epsilon

metodoCuerpo -> comandos

comandos -> comando comandos
   | epsilon

comando -> identificador = expresion
  | if expresionBool comando [else comando]
  | return expresion
  | mensaje

mensaje -> identificadores invocacion

identificadores -> identificador identificadores
   | epsilon

invocacion -> .identificador (argumentos)

argumentos -> argumento masArgumentos
     | epsilon

masArgumentos -> , argumento masArgumentos
        | epsilon

argumento -> expresion

expresion -> (expresion)
    | identificador opArit expresion
    | constInt opeArit expresion
    | constInt

expresionBool-> (expresionBool)
      | constBool opeLog expresionBool
      | constBool

opeArit -> + | - | * | / | =

opeLog -> < | > | <= | >= | != | == | && | ||

constBool -> True
    | False

identificador -> String
constInt -> Int   


Última edición: Friday, 30 de September de 2005, 20:27 (111 palabras)

Respuesta

Pablo Azero   Thursday, 6 de October de 2005, 14:37

No hay calificación

------------------------------------------------- 20051006PRA

Globalmente esta bien. Es posible que sea necesario un refinamiento antes de escribir el parser.

Comentarios (a tener en cuenta para la construccion del scanner):
. La lista de parametros no esta separada con parentesis.
. El cuerpo del metodo no esta encerrado entre llaves.


Usted está en el sistema como CRISTINA GIOVANA MORALES VILLEGAS (Salir)