 . La BNF de chocolat . Description BNF de la grammaire de chocolat . Introduction . Le but de chocolat est de pouvoir specifier une grammaire attribuee orientee . objet . Pour cela . la grammaire de chocolat est un super-set de java . Description d' une Classe Chocolat . Globalement . une classe chocolat est constituee de deux parties . La declaration des constructeurs . la description des fonctions utilisants les constructeurs . Description BNF . Chocolat = Classes . Classes = Classes Classe . Classe . Classe = class ID ' ' Body ' ' . Body = Declare Functions . La declarations des Constructeurs . Un constructeur chocolat joue le meme role qu' un constructeur dans un langage objet . il peut de construire une instance de la classe . Contrairement aux langages objets . un constructeur ne possede pas le meme nom que la classe et il existe souvent plusieurs constructeurs pour une classe doneee . Exemple . class List . case Nil . case Cons int a . List tail . Cette exemple construit une liste d' entier . on pourra construire la liste 1 . 3 . 2 avec la sequence suivante . Cons 1 . Cons 3 . Cons 2 . Nil . Note . On peut nommer les arguments d' un constructeur Cons int a . List tail ou ne pas les nommer Cons int . List . il faudra alors nommer le constructeur lors du case a l' interieur d' une fonction . Description BNF . Declare = Declare Constructeur . Constructeur = case ID ' ' Params ' ' ' . ' . Params = Fields . Types . Fields = Fields ' . ' Field . Fields . Field = ID ID . Types = Types Type . Type . Type = ID . La declaration des Fonctions . Une fonction est constitue de parametres d' appels . d' une valeur de retour . d' attributs locaux et d' un code pour chaque constructeurs . Description BNF . Functions = Functions Function . Function . Function = Type ID ' ' Fields ' ' . ' ' Attributs Matches ' ' . Attributs = Attributs Attribut . Attribut . Attribut = Type Ids ' . ' . Ids = Ids ' . ' Id . Id . Id = ID . La specification du code associe aux constructeurs . Description BNF . Matches = Matches Match . Match . Match = case Pattern ' . ' Exprs . Pattern = ID ' ' Vars ' ' . ID ' ' ' ' . ID . Vars = Vars ' . ' Var . Var . Var = ID ' Vars ' ' . ID ' ' ' ' . ID . Declaration d' un code associe a un constructeurs . Decription BNF . Value = Object . VALUE . Object = Object ' . ' Identif . Identif . SimpleObject = SimpleObject ' . ' ID . ID . Identif = ID ' ' Variables ' ' . ID ' ' ' ' . ID . Variables = Variables ' . ' Variable . Variable . Variable = ID . Exprs = Exprs Expr . Expr = Object ' =' Mult ' . ' . Mult = Mult ' ' Add . Mult ' ' Add . Mult ' %' Add . Add . Add = Add ' ' Value . Add ' -' Value . Value . 
