Logo EPFL
LAMP
Ecole Polytechnique Fédérale de Lausanne
Compilation 2005/2006
French only

Les lexèmes (tokens) supprimés sont:

  ":", "def", "do", "set", "val", "var"

Les lexèmes (tokens) ajoutés sont:

  "return"

Modifications dans la parte 1 du compilateur
  • Mettre à jour la liste des lexèmes dans l'objet Tokens et
  • Modifier la liste des mots-clés dans la classe Scanner.

Les productions supprimées sont:

  AndExpression
  OrExpression

Les productions ajoutées sont:

  Block = "{" { Statement } [ "return" Expression ] "}

Les productions modifiées sont:

  FieldDecl  = Formal ";"

  MethodDef  = Formal "(" [ Formal { "," Formal} ] ")" Block

  Formal     = Type ident

  Statement  = "while" "(" Expression ")" "{" { Statement } "}"
             | Formal "=" Expression ";"
             | ident "=" Expression ";"
             | Expression ";"
             | "printInt" "(" Expression ")" ";"
             | "printChar" "(" Expression ")" ";"

  Expression = "if" "(" Expression ")" Expression [ "else" Expression ]
             | CmpExpression

  SumOp      = "+"
             | "-"
             | "||"

  ProdOp     = "*"
             | "/"
             | "%"
             | "&&"

  Factor     = ident
             | number
             | string
             | "true"
             | "false"
             | "this"
             | "null"
             | "readInt"
             | "readChar"
             | "(" Expression ")"
             | Block
             | "new" ident Params
             | Factor "." ident
             | Factor "." ident Params

Modifications dans la partie 1 du compilateur
  • Ajouter la déclaration de la variable membre pushedBack dans la classe Scanner.
  • Ajouter l'instruction pushedBack match { ... } dans la méthode nextToken de la classe Scanner.
  • Ajouter la méthode peekAhead dans la classe Scanner.